【问题标题】:Getting nicknames of users of my Discord bot获取我的 Discord 机器人用户的昵称
【发布时间】:2021-09-15 12:25:11
【问题描述】:

我可以看到我的机器人所在服务器的名称、ID 和用户编号,但我如何获取用户列表(昵称)?

【问题讨论】:

    标签: discord discord.js


    【解决方案1】:

    如果您尝试获取服务器成员昵称列表,则用户没有nicknames,只有公会成员。

    您可以使用下面的代码 sn-p:

    const map = message.guild.members.cache.filter(c=> !c.member.user.bot).map(c=>c.displayName).join('\n');
    console.log(map)
    

    message.guild.members.cache.filter(c=> !c.member.user.bot)
    

    从列表中过滤机器人,

    .map(c=>c.displayName).join('\n');
    

    映射数据,仅映射用户昵称,并通过分节符加入它们。

    如果有任何问题,请评论!

    【讨论】:

      【解决方案2】:

      您可以使用guild.members.fetch() 来获取所有成员,然后使用nickname 属性来接收他们的昵称。最后,我用一个简单的filter 删除了所有机器人。

      const members = (await message.guild.members.fetch())
        .filter((m) => !m.user.bot)
        .map((m) => m.displayName);
      console.log(members);
      

      作为命令的工作示例:

      client.on("message", async (message) => {
        if (message.author.bot) return;
        if (message.content === "!list") {
          const members = (await message.guild.members.fetch())
            .filter((m) => !m.user.bot)
            .map((m) => m.displayName);
          console.log(members);
        }
      });
      
      client.login("your-token");
      

      感谢@MrMythical,他建议仅使用displayName。当没有为用户设置昵称时,该属性会自动返回正常的username

      【讨论】:

      • 如果您在我的answer as accepted 解决了您的问题后标记我将不胜感激;)
      • 我很确定m.displayName 显示昵称,如果没有昵称,则显示用户名
      • 你是对的!感谢您的提示,我将更新我的答案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-01
      • 1970-01-01
      • 2019-07-26
      • 2019-04-22
      • 2021-03-20
      • 2017-08-04
      • 2017-08-17
      相关资源
      最近更新 更多