DiscordJS v12 userinfo 命令不起作用
Posted
技术标签:
【中文标题】DiscordJS v12 userinfo 命令不起作用【英文标题】:DiscordJS v12 userinfo command not working 【发布时间】: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 也显示在角色中,不知道为什么 【参考方案1】:关于存在问题,请查看this 或this 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.roles
是 undefined
。
你会想从 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 改用它,当角色为 @everyoneinfo.roles.cache.filter(role=> role.name !=='@everyone').map(roles =>
$roles).join(', ')
时过滤以上是关于DiscordJS v12 userinfo 命令不起作用的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Discord.JS v12 中查看用户正在玩的游戏
Discord.js V12 用户信息 createdAt /joinedAt 未定义