【发布时间】:2021-11-01 06:42:06
【问题描述】:
我有下一个代码:
let usersThatReacted = [];
fetchMsg.reactions.cache.map(async (reaction) => {
if (reaction.emoji.name !== '????') return;
let reactedUsers = await reaction.users.fetch();
reactedUsers.map((user) => {
usersThatReacted.push(db.get(user.id));
});
message.channel.send(await (Promise.all(usersThatReacted))); //here i have message from bot with users..
});
而且它工作得很好,机器人等待(“等待”)直到数据库中的所有请求都完成,然后它向对消息做出反应的用户数组发送一条消息..
但是如何用嵌入的编辑消息的命令做同样的事情呢?
我的意思是:
let usersThatReacted = [];
message.reactions.cache.map(async (reaction) => {
if (reaction.emoji.name !== '????') return;
let reactedUsers = await reaction.users.fetch();
reactedUsers.map((user) => {
usersThatReacted.push(db.get(user.id));
});
});
message.channel.messages.fetch(message.id).then(message => {
const exampleEmbed = new Discord.MessageEmbed()
.setColor('#0099ff')
.setAuthor('.: Отметки активности :.', 'https://emojigraph.org/media/microsoft/crossed-swords_2694-fe0f.png')
.addFields(
{ name: '????', value: `${usersThatReacted}`, inline: true }, //but here code dont waiting until "usersThatReacted" (array) will be complete(
)
message.edit(exampleEmbed)
.then(msg => console.log(`Updated the content of a message to ${msg.content}`))
.catch(console.error);
})
当我删除message.channel.send(await (Promise.all(usersThatReacted)));时
我收到错误“RangeError [EMBED_FIELD_VALUE]: MessageEmbed field values may not be empty.”,这意味着这部分代码(带有发送编辑消息)不要等到数组完成..
当使用 value: `${(await (Promise.all(usersThatReacted)))}`, 而不是 value: `${usersThatReacted}`,
我有错误:等待未定义
【问题讨论】:
-
发生了什么?有什么错误/问题吗?
-
是的,已经在编辑帖子了。我已经尝试过“message.edit(await (Promise.all(exampleEmbed)))”但同样的错误(
-
"而且效果很好" - 不,它没有。如果您正在映射的
message.reactions.cache中有多个reactions(我不知道不和谐 - 缓存是一个数组吗?),它将向message.channel发送多个不可预测数量的usersThatReacted. -
对,完美)我有类似的东西:????设置迈克,约翰,登,罗斯。然后我想看看“谁对消息做出了反应??????”我输入一些命令,例如:“!who”,然后机器人发送给我:Mike John Den Rose。没错,它是数组)
标签: javascript node.js discord.js