Discord Bot回复自己,无法识别message.author.bot

时间:2018-09-30 02:10:33

标签: javascript node.js discord discord.io

因此,我有一个机器人正在尝试通过“我们爱Dan!”来回应“ Dan”。对于我所在的服务器:

var Discord = require('discord.io');
var logger = require('winston');
var auth = require('./auth.json');
// Configure logger settings
logger.remove(logger.transports.Console);
logger.add(new logger.transports.Console, {
    colorize: true
});
logger.level = 'debug';
// Initialize Discord Bot
var mybot = new Discord.Client({
    token: auth.token,
    autorun: true
});
mybot.on('ready', function (evt) {
    logger.info('Connected');
    logger.info('Logged in as: ');
    logger.info(mybot.username + ' - (' + mybot.id + ')');
});
mybot.on('message', function (user, userID, channelID, message, evt) {
    if (message.author.bot) return;
    if (message.includes("Dan")) {
            mybot.sendMessage({
                to: channelID,
                message: 'We love Dan!',
            });
     }
});

我已经研究了如何使机器人不响应自身,并且许多人建议使用该行代码

if (message.author.bot) return;

但是当我把它放进去时,我在命令提示符中得到了这个错误:

  

TypeError:无法读取未定义的属性“ bot”

discord.js bot replies to itself之类的线程看来,该解决方案适用于人们,但不适用于我。

我在做什么不同的事情?

谢谢!

2 个答案:

答案 0 :(得分:2)

错误告诉您message.authorundefined,因此bot不是有效的属性。您正在尝试使用另一个Discord库中的解决方案。

相反,请尝试检查用户或用户ID是否与漫游器匹配,然后返回。

答案 1 :(得分:1)

Hmmmmm ....乍看起来似乎是一个范围界定问题。不确定要使用的是什么,您可能需要阅读MCV。需要清理我构建的小机器人并将其发布在github上,明天再将其发布。正在尝试短期存储阵列。但快速浏览并进行了测试,就可以了:

const Discord = require("discord.js");
const client = new Discord.Client();
...
client.on("message", async message => {
  if (message.content.includes("Dan")){
    // right that is needed to kill the loop ->
    if(message.author.bot) return; 
    return message.reply("We love you Dan!");
    // could also use -> message.channel.send("We love you Dan!")
  } 
}
我认为

client在您的情况下是bot,它会在异步或返回时回复,因此您只需要调用作为方法一部分存在的内置原型方法即可。 API文档中还有很多其他内容。

相关问题