javascript - DiscordJS v12 userinfo 命令不起作用
问题描述
我一直在制作 Discord.JS 机器人,但我的 !userinfo 命令有问题。我面临很多问题,但都是因为我不知道如何正确处理 DiscordJS 中的 Promise。没有网站一直在帮助我。我在给我问题的行下添加了评论。
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;
请解释如何解决这个问题并正确重写代码(请),以便我可以将它用于我的机器人
谢谢
解决方案
对于您的存在问题,请查看此或此其他帖子。如果不先解决这个问题,游戏可能会出错。
使用 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 文档中查看更多信息)
关于你的角色,memberemb.roles
是undefined
。
你会想从承诺中得到价值,我把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)
在此处查看有关承诺如何运作的更多信息
推荐阅读
- django - django.core.exceptions.ValidationError: [''] on Datefiled - Resolvido
- reactjs - 类型 'string[]' 不能分配给类型 'never[]'
- c# - 从 swagger UI 的标头中传递 Jwt 令牌作为不记名令牌不起作用
- python - 在 Python Pandas 中组合 datafames
- reactjs - 如何将已经构建的带有 express.js 后端的 react 应用程序部署到 heroku
- c++ - 如何合并从函数返回的向量?
- c# - 在其他线程中触发事件后在事件处理程序中更新 UI 的最佳方法
- python - 使用 concurrent.futures.ProcessPoolExecutor 在 Python 中进行多处理
- typescript - Typescript:根据枚举成员的数量获取一个固定长度的元组
- mongodb - 如何将火花结构流写入mongodb集合?