Discord js v12 如果有人对嵌入做出反应,则发送消息

Posted

技术标签:

【中文标题】Discord js v12 如果有人对嵌入做出反应,则发送消息【英文标题】:Discord js v12 Send message if someone reacts to embed 【发布时间】:2022-01-08 08:11:21 【问题描述】:

我目前正在使用 discord.js v12(是 12 不是 13)制作一个不和谐机器人,我做了一个命令,该机器人发送一个嵌入并对其做出反应,在过滤器中我将最大值设置为 2(最大值: 2,...)。我希望每次有人对此嵌入做出反应时,都会在频道中发送他的名字。我目前的概念是这样的(它在一个函数中,因为我不想把所有东西都放在 switch 中):

async function fun_2p() 
  const reactionMessage2p = await message.channel.send(embed2p);
  const filter2p = (reaction, user) => user.id !== bot;

  await reactionMessage2p.react('????')

  reactionMessage2p.awaitReactions( filter2p, max: 2, time: 20000, errors: ['time'] ).then(collected => 
                    
  )

在最后一个) 之前应该是答案的代码(我猜)。

【问题讨论】:

【参考方案1】:

改用Message#createReactionCollector,并监听collect 事件

const reactionMessage2p = await message.channel.send(embed2p);
const filter2p = (reaction, user) => user.id !== bot

await reactionMessage2p.react('?')

const collector = reactionMessage2p.createReactionCollector(filter2p, max: 2, time: 20000, errors: ['time'] )

collector.on("collect", (reaction, user) => 
  reaction.message.channel.send(`$user.tag has just reacted to the message`)
)

您可以将消息更改为您想要的任何内容

【讨论】:

我不知道我做错了什么,但这对我不起作用:/ 怎么样?你有错误吗?它没有做任何事情吗? 不,我没有收到错误,什么都没有。聊天中没有消息,也没有控制台日志。 啊,我发现了错误,它是:const collector = reactionMessage2p.createReactionCollector... 而不是 const collector = message.createReactionCollector ... 感谢您的帮助 :) 我会这样做 :) 也许将 message 更改为 reactionMessage2p,所以 100% 正确。谢谢

以上是关于Discord js v12 如果有人对嵌入做出反应,则发送消息的主要内容,如果未能解决你的问题,请参考以下文章

消息嵌入中的 Discord.js v12 图像

如何在 Discord.js v12 中创建随机颜色作为嵌入强调色?

从数组 discord.js v12 访问项目

当用户对消息做出反应时,机器人会在 discord.js 中发送另一条消息

Discord JS - 如何对同一个嵌入做出多次反应?

Discord.js DiscordAPI 错误:未知表情符号 - 对嵌入做出反应