我正在编写一个机器人,该机器人记录用户对特定消息(事件)的反应。每个事件都生成一条消息,其中包含它们在日志通道上对其作出反应的事件的ID。现在,如果反应已删除,我正在尝试让该机器人删除事件的所有生成消息。我的代码:
client.on("messageReactionRemove", (reaction, user) => {
if(user.bot) return;
let message = reaction.message;
ORid = message.id;
ORid = ORid.toString();
if(message.channel.id == '709887163084439555') {
if(message.content.charAt(0) == '|'){
var logChannel = client.channels.get('710092733254991893')
logChannel.fetchMessages().then(messages => {
var msgToRemove = messages.filter(m => message.content.includes(ORid))
logChannel.bulkDelete(msgToRemove)
}).catch(err => {
console.log('Error while doing Bulk Delete');
console.log(err);
});
} else return;
} else return;
});
第一个ID是事件通道,另一个是生成日志的位置。但是,它不检查日志通道上的所有消息,而是检查事件是否包含其ID,如果是,则清除所有日志。我该怎么做才能解决此问题?
答案 0 :(得分:1)
您似乎在过滤消息的行中有一个错误:
var msgToRemove = messages.filter(m => message.content.includes(ORid))
您正在检查message.content.includes(ORid)
,它将始终为false
。
这是因为您使用的是先前定义的message
变量,而不是过滤器中的m
。编写该行的正确方法是:
var msgToRemove = messages.filter(m => m.content.includes(ORid))