我有一个建议渠道,我做到了,所以只允许用户在其中发布链接,并且机器人可以对发布的内容做出反应。 我已经完成了对链接的自动反应,但是我无法使漫游器删除不是链接的内容。 因此,我希望删除所有不是链接的内容。
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)
}
}
});
这很好,但效果不是很好。
它删除不是链接的消息数百万次,并发送数百万条通知:/
我想问题出在else if
部分
答案 0 :(得分:1)
我认为问题在于您正在创建一种无限循环。在代码中,您首先要检查消息发送是否在特定的通道中,然后检查消息是否包含链接。如果没有,您会向该频道发送一条消息,说“我没有找到链接”。
发送此消息时,由于已发送新消息,机器人再次被触发。它检查它是否在特定的频道中,以及是否包含一个链接(不包含该链接),因此循环重复进行。
可以用一个简单的语句修复它,这在创建机器人时也是一种很好的做法。要解决此问题,您需要包含一些代码来检查消息是否已由漫游器发送。看下面的例子:
bot.on('message', message => {
// Ignore messages from all bots
if (message.author.bot) return;
/* All your other code here */
答案 1 :(得分:0)
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)
}
}
});