用户反应后删除消息

Posted

技术标签:

【中文标题】用户反应后删除消息【英文标题】:Delete message after a user reacts 【发布时间】:2021-06-04 17:31:17 【问题描述】:

我正在尝试在我的机器人中创建一个功能,当我说 $addlist 时,它会向我的不和谐服务器中的待办事项频道发送一条消息。我已经完成了消息的发送和反应,但是当我对它做出反应时,我不知道如何删除待办事项。 代码如下:

exports.run = (client, message, args) => 
  var Discord = require("discord.js");
    let msg = message.content.slice(9);
  if (message.author.id !== "502823349110571008") return;
    const embed = new Discord.MessageEmbed()
    .setTitle("New To-Do incoming.")
    .setDescription("```" + msg + "```")
    .setFooter("Sent")
    .setTimestamp()
    .setColor("YELLOW");
   client.channels.cache.get(`817477111509024819`).send(embed).then(m => 
       m.react("❌")
   )

【问题讨论】:

【参考方案1】:

编辑: 监听所有添加的反应和过滤器:


 client.on("messageReactionAdd", (reaction, user) => 

  if (user === client.user) return;

  if (reaction.message.channel.id === "817477111509024819") 

   if (reaction.emoji.name === "❌") 

    reaction.message.delete();

   

  

 );

旧的(在这种情况下不起作用):

对消息做出反应后,您可以执行以下操作:

// ...
client.channels.cache.get(`817477111509024819`).send(embed).then(m => 

 m.react("❌").then(() =>  // React to message

  m.awaitReactions((r, u) => r.emoji.name === "❌").then(() =>  // Await reaction with emoji name "❌"

   m.delete(); // Delete the message

  ));

 );

);

【讨论】:

控制台中没有错误,但是当我对其中一条消息做出反应时,它不起作用。 那是因为 awaitReactions 方法在消息发送后 被调用。因此,如果您已经发送了消息(在您实现代码 sn-p 之前),它将无法正常工作。 我知道,我使用命令添加了一个待办事项,然后反应了但它没有删除消息m仍然在控制台中没有错误。 if (reaction.channel.id === "817477111509024819") ^ TypeError: Cannot read property 'id' of undefined 现在可以了,但问题是当它发送消息时,它会立即删除它 lmfao

以上是关于用户反应后删除消息的主要内容,如果未能解决你的问题,请参考以下文章

从特定消息中删除特定用户反应 - Discord.js

当用户删除反应时是不是有事件?

如何使用 Discord API 代表用户添加对消息的反应?

Discord.js:只有一种反应

用户执行命令后,如何删除 discord.py 中的消息?

Discord Bot- 使用 YAGPDB bot 的反应投票