javascript - Discord 消息收集器重复收集的消息
问题描述
我正在尝试让我的 Discord 机器人检测何时在短时间内发送了两条或更多类似的消息,然后发送一条消息。
我很难理解收集器,所以它只是一遍又一遍地重复信息。我应该切换到等待消息吗?
const filter = m => m.content.toLowerCase() == message.content.toLowerCase();
const collector = message.channel.createMessageCollector(filter, {max: 2, time: 6000});
collector.on('collect', m => {
message.channel.send(message.content);
});
解决方案
如果要在这六秒内有两条内容相同的消息时立即发送消息,则需要在选项中设置该max
值。1
createMessageCollector
此外,您不希望每次收集消息时都发送消息。如果将 设置max
为1
,则可以订阅collector
'end
事件并在有两条相同消息时从那里发送消息。由于该end
时间范围内没有相同消息时也会触发该事件,因此您还需要检查collected.size
并仅在大于零时发送消息。
client.on('message', (message) => {
if (message.author.bot) return;
const filter = (m) => m.content.toLowerCase() === message.content.toLowerCase();
const collector = message.channel.createMessageCollector(filter, {
max: 1,
time: 6000,
});
collector.on('collect', (m) => {
console.log(`Collected ${m.content}`);
});
collector.on('end', (collected) => {
console.log(`Collected ${collected.size} items`);
if (collected.size > 0) {
message.channel.send(
`Naughty, naughty! You sent _"${message.content}"_ more than once in a short time...`,
);
}
});
});