Discord.js V14如何给发送的Embed自动添加点赞/点踩表情反应?
Discord.js V14 发送Embed后自动添加表情反应的解决方案
问题原因
你直接调用 embed_sugestao.react('🌐') 的方式在V14中无效,因为 embed_sugestao 是Embed构造实例,而非已经发送到频道的消息对象。只有已发送的 Message 对象才能调用 react() 方法添加表情反应。
修正后的代码
需要先获取 interaction.reply() 返回的已发送消息对象,再对其执行表情添加操作。以下是两种实现方式:
方式一:依次添加表情
interaction.reply({ embeds: [embed_sugestao], content: `**${interaction.user}, sugestão enviada com sucesso!**` }) .then(async (sentMessage) => { // 发送日志Embed await canal_logs_sugestoes.send({ embeds: [embed_logs_sugestao] }); // 给发送的消息添加点赞、点踩表情 await sentMessage.react('👍'); await sentMessage.react('👎'); }) .catch(() => { console.log(`Ocorreu um Erro no Comando /sugerir`); });
方式二:批量添加表情(效率更高)
使用 Promise.all() 并行处理多个表情添加请求:
interaction.reply({ embeds: [embed_sugestao], content: `**${interaction.user}, sugestão enviada com sucesso!**` }) .then(async (sentMessage) => { await canal_logs_sugestoes.send({ embeds: [embed_logs_sugestao] }); // 批量添加表情 await Promise.all([ sentMessage.react('👍'), sentMessage.react('👎') ]); }) .catch(() => { console.log(`Ocorreu um Erro no Comando /sugerir`); });
注意事项
- 确保机器人拥有目标频道的 Add Reactions 权限。
- 如果你在V14中使用
EmbedBuilder构造Embed,代码逻辑完全一致,核心是获取发送后的Message对象。
内容的提问来源于stack exchange,提问作者Mega Gamer
相关产品推荐
相关产品推荐

