【问题标题】:Discord.JS Userinfo commandDiscord.JS 用户信息命令
【发布时间】:2019-08-02 14:35:48
【问题描述】:

我正在努力让这个机器人能够做到这一点......

  • 显示用户角色
  • 你做 d!au @User 和他们的用户信息显示

唯一的问题是我不知道该怎么做,我发现了其他一些堆栈溢出问题,但他们的机器人需要“时刻”,我不知道什么是时刻。这是一个命令文件,而不是 index.js 文件,仅供参考。

    var commando = require('discord.js-commando');
var discord = require('discord.js');

class aboutuser extends commando.Command 
{
    constructor(client) {
        super(client, {
            name: 'aboutuser',
            group: 'help',
            memberName: 'aboutuser',
            description: 'Lists information about a specific user.',
            aliases: ['au', 'aboutu', 'auser', 'user'],
        })
    }
async run(message, args){

    let userinfo = {};
    userinfo.bot = message.client.user.bot;
    userinfo.createdat = message.client.user.createdAt;
    userinfo.discrim = message.client.user.discriminator;
    userinfo.id = message.client.user.id;
    userinfo.mfa = message.client.user.mfaEnabled;
    userinfo.pre = message.client.user.premium;
    userinfo.presen = message.client.user.presence;
    userinfo.tag = message.client.user.tag;
    userinfo.uname = message.client.user.username;
    userinfo.verified = message.client.user.verified;

    userinfo.avatar = message.client.user.avatarURL;

    var myInfo = new discord.RichEmbed()
        .setAuthor(userinfo.uname, userinfo.avatar)
        .addField("Bot?",userinfo.bot, true)
        .addField("Created At",userinfo.createdat, true)
        .addField("Discriminator",userinfo.discrim, true)
        .addField("Client ID",userinfo.id, true)
        .addField("2FA/MFA Enabled?",userinfo.mfa, true)
        .addField("Paid Account?",userinfo.pre, true)
        .addField("Presence",userinfo.presen, true)
        .addField("Client Tag",userinfo.tag, true)
        .addField("Username",userinfo.uname, true)
        .addField("Verified?",userinfo.verified, true)
        .setColor(0xf0e5da)
        .setFooter('s!aboutserver')
        .setTitle("About this user...")
        .setThumbnail(userinfo.avatar)


        message.channel.sendEmbed(myInfo);

}

}
module.exports = aboutuser;

我想让我的机器人能够显示用户的角色并使其能够标记它们。

现实:命令导致错误,但机器人在线。引用错误,空白未定义。

Expects : 一个机器人,可以列出一个用户的角色,在使用命令的时候可以看到其他用户的信息。

我只粘贴了有效的代码,而不是最终失败的代码。

【问题讨论】:

  • 你应该包含给你错误的代码,然后它可以被复制,或者有人可以查看它并告诉你为什么它会给出错误。

标签: javascript node.js visual-studio-code discord.js


【解决方案1】:

Moment 是一个包,可让您(非常)轻松地进行格式化。你安装它和 discord.js 一样,所以在你的命令提示符下你做npm install moment(如果你使用其他语法安装 discord.js,在这里也使用相同的,只需用 moment 替换 discord.js)。这将安装软件包,然后您就可以使用它了,只是不要忘记将const moment = require('moment'); 放在代码的开头,您应该会很好。

所有的时间格式都可以在这里找到: https://momentjs.com/docs/#/parsing/string-format/

【讨论】:

    【解决方案2】:

    下面的代码应该做你想做的所有事情:

    var commando = require('discord.js-commando');
    var discord = require('discord.js');
    
    class aboutuser extends commando.Command 
    {
        constructor(client) {
            super(client, {
                name: 'aboutuser',
                group: 'help',
                memberName: 'aboutuser',
                description: 'Lists information about a specific user.',
                aliases: ['au', 'aboutu', 'auser', 'user'],
            })
        }
    async run(message, args){
        const userMention = message.mentions.users.first() || msg.author;
        const memberMention = message.mentions.members.first() || msg.member;
    
        let userinfo = {};
        userinfo.bot = userMention.bot;
        userinfo.createdat = userMention.createdAt;
        userinfo.discrim = userMention.discriminator;
        userinfo.id = userMention.id;
        userinfo.mfa = userMention.mfaEnabled;
        userinfo.pre = userMention.premium;
        userinfo.presen = userMention.presence;
        userinfo.tag = userMention.tag;
        userinfo.uname = userMention.username;
        userinfo.verified = userMention.verified;
    
        userinfo.avatar = userMention.avatarURL;
    
        const rolesOfTheMember = memberMention.roles.filter(r => r.name !== '@everyone').map(role => role.name).join(', ')
    
        var myInfo = new discord.RichEmbed()
            .setAuthor(userinfo.uname, userinfo.avatar)
            .addField("Bot?",userinfo.bot, true)
            .addField("Created At",userinfo.createdat, true)
            .addField("Discriminator",userinfo.discrim, true)
            .addField("Client ID",userinfo.id, true)
            .addField("2FA/MFA Enabled?",userinfo.mfa, true)
            .addField("Paid Account?",userinfo.pre, true)
            .addField("Presence",userinfo.presen, true)
            .addField("Client Tag",userinfo.tag, true)
            .addField("Username",userinfo.uname, true)
            .addField("Verified?",userinfo.verified, true)
            .setColor(0xf0e5da)
            .setFooter('s!aboutserver')
            .setTitle("About this user...")
            .setThumbnail(userinfo.avatar)
    
    
            message.channel.sendEmbed(myInfo);
    
    }
    
    }
    module.exports = aboutuser;
    

    我添加了两个新变量来检查是否提到了公会成员。如果是,该命令显示所提及成员的统计信息,如果不是,则机器人显示消息作者的统计信息。

    然后我还添加了一个新变量“rolesOfTheMember”,它是成员拥有的所有角色的列表。你可以简单地在你的 Discord RichEmbed 中添加这个变量,然后列出 guildMember 在 Discord 服务器上的角色!

    玩得开心!

    【讨论】:

      猜你喜欢
      • 2021-05-04
      • 1970-01-01
      • 2020-11-02
      • 2018-05-06
      • 2018-08-26
      • 1970-01-01
      • 1970-01-01
      • 2019-08-03
      • 2021-01-11
      相关资源
      最近更新 更多