【问题标题】:Number of roles and emojis. Discord.js角色和表情符号的数量。不和谐.js
【发布时间】:2020-04-30 07:09:49
【问题描述】:

我想为我的 discord 机器人创建一个 serverinfo 命令,并且我想创建一个显示角色数量的字段和另一个用于表情符号的字段。 谁能告诉我怎么做?

这是我的代码:

async runCommand(args: string[], msgObject: Discord.Message, client: Discord.Client): Promise<void> {

        let embed = new Discord.RichEmbed()
            .setColor("RANDOM")
            .setTitle("Server Info")
            .setImage(msgObject.guild.iconURL)
            .setDescription(`${msgObject.guild}'s information`)
            .addField("Owner", `The owner of this server is ${msgObject.guild.owner}`)
            .addField("Member Count", `This server has ${msgObject.guild.memberCount} members`)
            .addField("Emoji Count", `This server has ${msgObject.guild.emojis} emojis`)
            .addField("Roles Count", `This server has ${msgObject.guild.roles} roles`)

        msgObject.channel.send(embed)
            .catch(console.error);
}

代码给了我这个:

服务器信息

测试服务器信息

所有者

此服务器的所有者是@ItamarD

会员数 此服务器有 3 个成员

表情符号计数

此服务器有 [object Map] 表情符号

角色数量

此服务器具有 [object Map] 角色

【问题讨论】:

    标签: typescript bots discord.js


    【解决方案1】:

    如果您查看 Guild objects 的 Discord.js API 文档,您会注意到 Guild.emojis 和 Guild.roles 返回一个 Collection。

    CollectionMap 的扩展,它有一个方便使用的大小属性。

    生成的 2 行代码将是:

    .addField("Emoji Count", `This server has ${msgObject.guild.emojis.size} emojis`)
    .addField("Roles Count", `This server has ${msgObject.guild.roles.size} roles`)
    

    【讨论】:

      【解决方案2】:

      我的代码:

      if(message.content.startsWith(":serveurinfo")) {
              let si = new Discord.MessageEmbed()
              .setColor("RANDOM")
              .setTitle("Server Info")
              .setDescription(`${message.guild.name}'s information`)
              .addField("Owner", `The owner of this server is ${message.guild.owner}`)
              .addField("Member Count", `This server has ${message.guild.memberCount} members`)
              .addField("Emoji Count", `This server has ${message.guild.emojis.size} emojis`)
              .addField("Roles Count", `This server has ${message.guild.roles.size} roles`)
      
          message.channel.send(si);
      
          }
      

      对于表情符号和角色,答案是:此服务器具有未定义的表情符号和此服务器具有未定义的角色

      【讨论】:

        【解决方案3】:

        随便用

        if(message.content.startsWith(":serveurinfo")) {
                let si = new Discord.MessageEmbed()
                .setColor("RANDOM")
                .setTitle("Server Info")
                .setDescription(`${message.guild.name}'s information`)
                .addField("Owner", `The owner of this server is ${message.guild.owner}`)
                .addField("Member Count", `This server has ${message.guild.memberCount} members`)
                .addField("Emoji Count", `This server has ${message.guild.emojis.cache.size} emojis`)
                .addField("Roles Count", `This server has ${message.guild.roles.cache.size} roles`)
        
            message.channel.send(si);
        
            }
        

        【讨论】:

        • 请不要只发布代码作为答案,还要解释您的代码的作用以及它如何解决问题的问题。带有解释的答案通常更有帮助,质量更高,更有可能吸引投票。
        猜你喜欢
        • 2020-07-10
        • 2021-10-27
        • 2021-02-16
        • 2022-01-26
        • 2021-08-11
        • 1970-01-01
        • 2021-05-24
        • 2020-12-25
        • 2020-11-22
        相关资源
        最近更新 更多