Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 更改获得公会ID的所有服务器的昵称_Node.js_Discord.js - Fatal编程技术网

Node.js 更改获得公会ID的所有服务器的昵称

Node.js 更改获得公会ID的所有服务器的昵称,node.js,discord.js,Node.js,Discord.js,有任何方法可以使用机器人所在的所有服务器中的协会ID更改机器人的昵称(机器人具有更改昵称的权限) 这是我用来获取公会ID的代码,但是idk知道如何在所有使用ID的公会中更改昵称 const { Client } = require('discord.js'); const client = new Client(); client.on("ready", () => { console.log(`Logged in as ${client.user.tag}!

有任何方法可以使用机器人所在的所有服务器中的协会ID更改机器人的昵称(机器人具有更改昵称的权限)

这是我用来获取公会ID的代码,但是idk知道如何在所有使用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)


是,这可以在对象上使用
.setNickname

首先,您可能希望使用以下方法检查您是否有执行此操作的权限:

if(!message.guild.me.hasPermission('MANAGE_昵称'))返回;//Bot没有更改用户名的权限
然后,要实际设置机器人的昵称,您可以使用:

message.guild.members.get(client.user.id).set昵称(“昵称”);
但是,当收到消息时,这只会更改机器人的昵称,如果您想为所有公会执行此操作,您可以执行以下操作:

const servers=client.guilds.cache.map(guild=>guild.id);
servers.forEach((id)=>{
让guild=client.guilds.cache.get(id);
guild.members.get(client.user.id).set昵称(“昵称”);
});

首先,当机器人接收到新消息时,此代码将控制台记录每个帮会id

client.on("message", message => {

    const servers = client.guilds.cache.map(guild => guild.id);
    console.log(servers);


})
根据个人经验,我建议在
ready
活动中绘制所有行会的地图

要更改bot的昵称(实际上不需要映射所有公会),可以将此代码写入
ready
事件:

client.guilds.cache.forEach((guild) => {
    guild.me.setNickname(/* Nickname as a string */);
});
您应该将此代码写入ready事件中,因为如果您只是将其写入文件中,您将尝试更改您的昵称,而您甚至还没有从API获取所有协会

如果只想在执行特定命令后执行此操作,可以使用上面的代码并将其粘贴到命令中

参考:

  • 个人经历

好的,这是一个消息事件,在就绪事件中,是否有可能使其在函数中工作?因为我需要每10/15秒更换一次昵称。但您可以将其放入
setInterval
中,以10000或15000作为间隔。顺便说一句,在公会中快速更改昵称可能会导致费率限制