自动删除特定频道中的消息
Auto deleting messages in a specific channel
我有一个建议频道,我做了它,所以用户只能在其中 post link,机器人能够对他们 [=19= 的内容做出反应].
我已经在 link 上完成了自动反应,但我无法让机器人删除不是 link 的内容。
所以我希望删除所有其他不是 link 的内容。
bot.on('message', message => {
// whenever a message is sent
if (bot.id === '514484773171757061') {
return;
}
if (message.channel.id === "508606903740268545" ){
if (message.content.includes('playrust.io/')) {
message.react('✅').then( () =>{
message.react('❌')});
} else if (message.delete()) {
message.channel.sendMessage('Message has been Deleted ' + message.author)
}
}
});
工作很好,但不是很好。
它删除不是 link 百万次的消息并发送百万次通知:/
我想问题出在 else if
部分
client.id
不是东西所以它需要是
if (message.author.bot) return;
然后
else if (message.delete()) {
message.channel.send('Message has been Deleted ' + message.author)
}
使用
else {
message.delete(5000)
message.channel.send('Message has been Deleted ' + message.author)
}
结果为:
bot.on('message', message => {
// whenever a message is sent
if (message.author.bot) return;
if (message.channel.id === "508606903740268545" ){
if (message.content.includes('playrust.io/')) {
message.react('✅').then( () =>{
message.react('❌')});
} else {
message.delete(5000)
message.channel.send('Message has been Deleted ' + message.author)
}
}
});
我认为问题在于您正在创建一种无限循环。在您的代码中,您首先检查发送的消息是否在特定频道中,然后检查它是否包含 link 。如果没有,您将向同一频道发送一条消息,说“我没有找到 link”。
当您发送此消息时,您的机器人会再次被触发,因为已发送一条新消息。它检查它是否在特定频道中,以及它是否包含 link,如果不包含,则循环重复。
它可以用一个简单的语句来修复,这在创建机器人时也是一个很好的练习。要修复它,您需要包含一些代码来检查消息是否已由机器人发送。看下面的例子:
bot.on('message', message => {
// Ignore messages from all bots
if (message.author.bot) return;
/* All your other code here */
我有一个建议频道,我做了它,所以用户只能在其中 post link,机器人能够对他们 [=19= 的内容做出反应]. 我已经在 link 上完成了自动反应,但我无法让机器人删除不是 link 的内容。 所以我希望删除所有其他不是 link 的内容。
bot.on('message', message => {
// whenever a message is sent
if (bot.id === '514484773171757061') {
return;
}
if (message.channel.id === "508606903740268545" ){
if (message.content.includes('playrust.io/')) {
message.react('✅').then( () =>{
message.react('❌')});
} else if (message.delete()) {
message.channel.sendMessage('Message has been Deleted ' + message.author)
}
}
});
工作很好,但不是很好。
它删除不是 link 百万次的消息并发送百万次通知:/
我想问题出在 else if
部分
client.id
不是东西所以它需要是
if (message.author.bot) return;
然后
else if (message.delete()) {
message.channel.send('Message has been Deleted ' + message.author)
}
使用
else {
message.delete(5000)
message.channel.send('Message has been Deleted ' + message.author)
}
结果为:
bot.on('message', message => {
// whenever a message is sent
if (message.author.bot) return;
if (message.channel.id === "508606903740268545" ){
if (message.content.includes('playrust.io/')) {
message.react('✅').then( () =>{
message.react('❌')});
} else {
message.delete(5000)
message.channel.send('Message has been Deleted ' + message.author)
}
}
});
我认为问题在于您正在创建一种无限循环。在您的代码中,您首先检查发送的消息是否在特定频道中,然后检查它是否包含 link 。如果没有,您将向同一频道发送一条消息,说“我没有找到 link”。
当您发送此消息时,您的机器人会再次被触发,因为已发送一条新消息。它检查它是否在特定频道中,以及它是否包含 link,如果不包含,则循环重复。
它可以用一个简单的语句来修复,这在创建机器人时也是一个很好的练习。要修复它,您需要包含一些代码来检查消息是否已由机器人发送。看下面的例子:
bot.on('message', message => {
// Ignore messages from all bots
if (message.author.bot) return;
/* All your other code here */