如何获得旧消息反应

时间:2021-01-05 16:42:51

标签: javascript discord.js

我想要做的是为对该消息做出反应的用户获得 username。它运行良好,但当机器人重新启动时,只有新的反应起作用。 如何让它发送所有用户的反应

client.on('ready', () => {
   client.guilds.get('guild_id').channels.get('chnl_id').fetchMessage('msg_id');
});
client.on('messageReactionAdd', (reaction, user) => {
    const { message} = reaction;
    if(message.channel.id == 'chnl_id'){
      if(reaction.emoji.name === "✅") {
    message.guild.fetchMember(user.id).then(member => {
      if(user.bot)  return;
    else {
         message.channel.send(reaction.users.map(u => u.username.toString()))
        }
    })
    }}});

1 个答案:

答案 0 :(得分:0)

如果您有消息,那么您可以通过表情符号过滤该消息的反应:

const reaction = await message.reactions.cache.filter(r=> r.emoji.name === '✅').first().fetch();

然后您就可以获取该特定表情符号的所有反应:

await reaction.users.fetch();

然后,如果您愿意(例如您自己的机器人),您可以从中过滤:

const filteredReactions = reaction.users.cache.filter(r=> !r.bot);

并且不要忘记将这些放在异步函数中。