【问题标题】:DiscordJS v12 userinfo command not workingDiscordJS v12 userinfo 命令不起作用
【发布时间】:2021-03-03 14:20:35
【问题描述】:

我一直在制作 Discord.JS 机器人,但我的 !userinfo 命令有问题。我面临很多问题,但都是因为我不知道如何正确处理 DiscordJS 中的 Promise。没有网站一直在帮助我。我在给我问题的行下包含了 cmets。

            const memberemb = message.guild.members.fetch(user);
        Promise.resolve(memberemb).then(function () {
            console.log(memberemb.roles);
            const embed = new Discord.MessageEmbed()
                .setColor("RANDOM")
                .setThumbnail(message.author.avatarURL)
                .addField(`${user.tag}`, `${user}`, true)
                .addField("ID:", `${user.id}`, true)
                .addField("Nickname:", `${useralso.nickname ? `${useralso.nickname}` : 'None'}`, true)
                .addField("Status:", `${user.presence.status}`, true)
                // always shows offline in status
                .addField("Game:", `${user.presence.game ? user.presence.game.name : 'None'}`, true)
                //idk if it shows games correctly
                .addField("Joined The Server On:", `${moment.utc(memberemb.joinedAt).format("dddd, MMMM Do YYYY")}`, true)
                //shows date of today not of the joined on date
                .addField("Account Created On:", `${moment.utc(user.createdAt).format("dddd, MMMM Do YYYY")}`, true)
                .addField("Roles:", memberemb.roles ? memberemb.roles.map(roles => `${roles}`).join(', ') : "None", true)
                //shows none as roles
                .setFooter(`Replying to ${message.author.username}#${message.author.discriminator}`)
            message.channel.send({ embed });
        });
        break;

请解释如何解决这个问题并正确重写代码(请),以便我可以将它用于我的机器人
谢谢

【问题讨论】:

  • 您是否启用了privileged intents
  • 是的,我打开了它。现在一切正常,但@everyone 也显示在角色中,不知道为什么

标签: javascript promise discord discord.js bots


【解决方案1】:

关于存在问题,请查看thisthis other post。如果不先解决这个问题,游戏可能会出错。

使用moment.js,需要先moment(currenttime),再更改时间格式。

.addField("Joined The Server On:", `${moment(user.joinedAt).format('DD-MM-YYYY')}`, true)
.addField("Account Created On:", `${moment(user.createdAt).format('DD-MM-YYYY')}`, true)

应该可以。 (在moment.js documentation 中查看更多信息)

关于你的角色,memberemb.rolesundefined

你会想从 promise 中获取价值,我把 info 放在函数里面来做这个

Promise.resolve(memberemb).then(function (info) {

然后在嵌入中,您可以使用info.roles.caches.map

.addField("Roles:", info.roles.cache ? info.roles.cache.map(roles => `${roles}`).join(', ') : "None", true)

how promise works here上查看更多信息

【讨论】:

  • 谢谢它醒了,但它也显示了@everyone 我不想显示的角色请告诉修复
  • @MuhammadUsmanMithani 改用它,当角色为 @everyone info.roles.cache.filter(role=> role.name !=='@everyone').map(roles => ${roles}).join(', ') 时过滤
猜你喜欢
  • 2021-02-17
  • 1970-01-01
  • 2021-05-19
  • 1970-01-01
  • 2021-01-09
  • 1970-01-01
  • 2020-12-25
  • 2019-05-31
  • 2021-01-01
相关资源
最近更新 更多