我想要做的是为对该消息做出反应的用户获得 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()))
}
})
}}});
答案 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);
并且不要忘记将这些放在异步函数中。