【问题标题】:Change self bot's nickname in discord.js在 discord.js 中更改 self bot 的昵称
【发布时间】:2021-05-20 11:05:26
【问题描述】:

我正在尝试更改 机器人的昵称(不是用户名!),当它准备好/在线时。

我尝试过使用client.user.setNickname('sup')client.user.id.setNickname('sup') 但不起作用。

我看到很多回答告诉我使用message.guild.members.find(client.user.id).setNickname('sup'),但我不想在发送消息时使用它,而是在它在线时立即使用它使用client.once("ready", () => {})

【问题讨论】:

    标签: javascript discord.js bots


    【解决方案1】:

    client.user 没有setNickname() 方法,因为用户没有nickname,只有公会成员才有。但是,您可以获取公会的me 属性(它是作为公会的GuildMember 的客户端用户)并为其设置昵称。

    您可以通过公会ID获取公会,然后在guild.me上使用setNickname()

    client.once('ready', async () => {
      console.log('Bot is connected...');
    
      const GUILD_ID = '630136153921670528';
      const guild = await client.guilds.fetch(GUILD_ID);
    
      guild.me.setNickname('NICKNAME');
    });
    

    【讨论】:

    • 我尝试将它与for (i in guildsID) { const guild = await client.guilds.fetch(i); guild.me.setNickname('sup'); } 结合使用,但不起作用(guildsID 为[]
    • 获取我使用的公会ID:const guildsID = client.guilds.cache.map(guild => guild.id);
    • 对于for...ini 将是索引(0、1 等)。您应该使用 for...of 循环而不是 for...in 与数组。试试for (let i of guildsID) { ...
    • 试过了还是不行,问题是guildsID不包含所有的公会id
    • 这很奇怪。我刚刚检查了它,它确实按预期对我有用。您的机器人在多少台服务器上?
    【解决方案2】:

    通过 id 获取公会。即.guilds.cache.get("公会id")

    更新昵称很简单,调用 .me.setNickname("newnickname") - 如果权限不足会报错。

    【讨论】:

      猜你喜欢
      • 2018-12-09
      • 1970-01-01
      • 2020-08-22
      • 2017-09-09
      • 2021-02-16
      • 2017-05-05
      • 2021-03-13
      • 2021-03-29
      • 2021-12-27
      相关资源
      最近更新 更多