我正在尝试制作我的第一个执行命令的不和谐机器人,但问题是,如果用户通过链接向机器人发送 dms !命令,则机器人会多次回复,因为该命令会执行多次。
client.on('message', msg1 => {
if (msg1.content.startsWith("!command")) {
var splitMessage = msg1.content.split(" ");
if (splitMessage[1] != undefined) {
var url = splitMessage[1];
if (url.includes("google.com")) {
var execSync = require('child_process').execSync;
var x = Math.floor((Math.random() * 9999999999) + 1);
var cmd = 'wkhtmltopdf ' + url + ' ' + x + '.pdf';
var options = {
encoding: 'utf8'
}
var filename = x + '.pdf';
console.log(execSync(cmd, options));
msg1.reply({ files: [filename] });
}
}
}
});
最佳答案
您的机器人多次回复消息,因为它回复的是消息本身。
您需要检测来自机器人的消息,并忽略它。
message.author.bot
返回一个 bool 值,如果为true
,则表示该消息来自机器人而不是人类。
你可以看看我的代码如下:
client.on('message', msg1 => {
// detect bot message
if (msg1.author.bot) {
// do nothing
console.log('Ignoring bot message!');
return;
}
if (msg1.content.startsWith("!command")) {
var splitMessage = msg1.content.split(" ");
if (splitMessage[1] != undefined) {
var url = splitMessage[1];
if (url.includes("google.com")) {
var execSync = require('child_process').execSync;
var x = Math.floor((Math.random() * 9999999999) + 1);
var cmd = 'wkhtmltopdf ' + url + ' ' + x + '.pdf';
var options = {
encoding: 'utf8'
}
var filename = x + '.pdf';
console.log(execSync(cmd, options));
msg1.reply({ files: [filename] });
}
}
}
});
关于javascript - Discord 机器人多次回复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58089016/