【问题标题】:How to get old message reactions如何获得旧消息反应
【发布时间】:2021-01-06 01:05:24
【问题描述】:

我正在尝试为对该消息做出反应的用户获取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()))
        }
    })
    }}});

【问题讨论】:

    标签: javascript discord.js


    【解决方案1】:

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

    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);
    

    别忘了把这些放在异步函数中。

    【讨论】:

    • 抱歉,我从未使用过 discord.js v11,但正如我从一些代码 sn-ps 中看到的那样,您只需删除“.cache”部分即可获得有效的 v11 代码。
    猜你喜欢
    • 2020-08-02
    • 1970-01-01
    • 2022-06-13
    • 1970-01-01
    • 2016-02-06
    • 2021-01-04
    • 1970-01-01
    • 2022-01-16
    • 2021-07-08
    相关资源
    最近更新 更多