使用命令更改机器人的昵称

Changing nickname of bot with a command

我想使用 !Changenick nick 之类的命令更改我的机器人名称 - 'nick' 我指的是新机器人的名称。你们能帮帮我吗?我只想让机器人在有人写 !Changenick 时更改用户名,例如:

!changenick Freshname

bot 将自己的名字更改为 Freshname

如果您想更改用户的昵称,您需要 GuildMember obj. You can apply this to the bot by searching the guild's member prop for the bots id. The following line will allow you to change the bot's username given a Message obj。

message.guild.me.setNickname('NICKNAME'); 根据@slothiful

的建议更新

如果您需要有关如何创建整个命令的更多帮助,请参考 https://discordjs.guide/ and https://discord.js.org/#/docs/

更新 1:我很难通过您提供的示例理解您想要的实现。

假设您想要这样的命令:!changenick <@user> <nickname>

在这种情况下,我会参考 this。它解释了如何解析提及。关于更改昵称的实际问题,您可以更改任何用户的昵称 (您将通过提及获得此用户)使用 message.guild.members.find(user => user.id === mentionUser.id).setNickname('NICKNAME')

更新 2: 我现在明白你的意思了。我很抱歉。您无需重新启动机器人即可更新昵称。我已经测试过了。

以下代码每 10 秒更改一次机器人昵称。

const Discord = require('discord.js');
const Client = new Discord.Client();

Client.on('ready', () => {
    let value = 0;

    setInterval(() => {
        Client.guilds.find(guild => guild.id === 'GUILD_ID').me.setNickname(value++);
    }, 10000);
});

Client.login('TOKEN');

重要的一点是 Client.guilds.find(guild => guild.id === 'GUILD_ID').me.setNickname('NICKNAME');

编辑:如果这回答了您的问题,请将答案标记为已接受。