所以我有一个机器人,然后我想让该机器人可以收集一条消息,然后在他检测到特殊单词时进行回复,但是问题是如果有人键入tekong
,我的机器人会继续创建新的收集器,因此,当漫游器检测到该单词时,它将响应两次,具体取决于创建了多少个收集器。如何制作机器人,以便1个人只能创建1个
这是我的代码
client.on("message", (message) => {
if (message.content.toLowerCase().startsWith('tekong')) {
message.channel.send('Bot is collector messages...')
let filter = m => m.content.includes('test') && m.author.id === '744882468741709824'
let collector = message.channel.createMessageCollector(filter, {max: 1})
collector.on('collect', indonesia => {
console.log(indonesia.content);
})
collector.on('end', m => {
console.log(`Collected ${m.size} items`)
if (m.size === 1) {
message.channel.send('Congratulations your enchantments is works!')
}
})
}
答案 0 :(得分:0)
您可以简单地设置一个Set(也可以选择使用Array,但是我更喜欢Set,因为它更容易删除条目):
let blocked = new Set();
然后在消息事件中可以使用:
if (message.content.toLowerCase().startsWith('tekong')) {
if(blocked.has(message.author.id)) return;
blocked.add(message.author.id);
如果已完成并希望用户允许再次使用该命令,则可以简单地使用:
blocked.delete(message.author.id);