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