node.js - 从所有获取公会 ID 的服务器更改昵称
问题描述
有任何方法可以使用机器人所在的所有服务器中的公会 ID 更改机器人的 NICKNAME(机器人具有更改昵称的权限)。
这是我用来获取行会 ID 的代码,但我知道如何使用 id 在所有行会中更改昵称。
const { Client } = require('discord.js');
const client = new Client();
client.on("ready", () => {
console.log(`Logged in as ${client.user.tag}!`);
client.user.setPresence({
status:"online",
activity: {
name: "Loading....",
type: "WATCHING"
}
})
})
client.on("message", message => {
const servers = client.guilds.cache.map(guild => guild.id);
console.log(servers);
})
client.login(TOKEN)
解决方案
首先,当机器人收到新消息时,此代码将控制台记录每个 Guild#id。
client.on("message", message => {
const servers = client.guilds.cache.map(guild => guild.id);
console.log(servers);
})
由于个人经验,我建议在ready
活动中映射所有公会。
要从机器人更改昵称(您实际上不需要映射所有公会),您可以通过将以下代码写入您的ready
事件来做到这一点:
client.guilds.cache.forEach((guild) => {
guild.me.setNickname(/* Nickname as a string */);
});
您应该将此代码写入您的就绪事件,因为如果您只是将其写入文件中,您将尝试更改您的昵称,而您甚至还没有从 API 获取所有公会。
如果您只想在执行特定命令后执行此操作,则可以使用上面的代码并将其粘贴到命令中。
参考:
推荐阅读
- go - 如何通过 go build 插件减少 .so 文件编译
- javascript - VueJS - Vuefire - TypeError:document.onSnapshot 不是函数
- python - 如何使用 Python 搜索列表中的特定字符串?
- reactjs - 我如何从 React 中的 firestore 获取特定的用户数据
- sql - 查询中列标题中的空格
- c - 为什么''不起作用?“预期的表达式,空字符常量”
- python - 在 PySimpleGUI 中,如何在文本字段中添加超链接?
- docker - 在 dockerized Jenkins 容器中使用 docker-compose 时出现“无法打开错误”
- java - java - 线程(从数组中返回一个元素)
- json - 在颤动中用数组解析复杂的JSON