【问题标题】:Discord Bot replying to itself, doesn't recognize message.author.botDiscord Bot 回复自己,无法识别 message.author.bot
【发布时间】:2019-03-05 13:19:41
【问题描述】:

所以我有一个机器人,我试图用“我们爱 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 之类的帖子看来,该解决方案适用于人们,但不适用于我。

我在做什么不同?

谢谢!

【问题讨论】:

  • 您链接到的可能解决方案的线程是针对与您使用的不同的 discord JS 库

标签: javascript node.js discord discord.io


【解决方案1】:

嗯嗯....乍一看似乎是范围问题。不确定您正在构建什么,您可能想阅读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 Docs 中还有很多其他内容。

【讨论】:

  • 感谢您的回复!如果该信息有帮助,我会将完整代码添加到帖子中。
  • 快速浏览后我会说切换到discord.js。社区回声听起来好像 io 不再得到很好的支持。 js 是 rad 并且在大门外工作得很好......偷了这个Gist并建造了一个东西。试试看,ES6 也是,这是新的 javascript,你应该用什么写...
  • 感谢您的建议,在此之前我真的不知道 discord.io 和 discord.js 之间有区别(这是我的第一个机器人,我遵循了一些在线教程)但是 discord.js容易多了。谢谢!
  • 是的,不用担心,如果您想查看,请清理 repo。这是对该要点的扩展,当时正在构建一个 python 脚本以仅根据用户输入构建响应,但放弃了它......有趣的东西。
【解决方案2】:

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

请尝试检查用户或用户 ID 是否与机器人匹配,然后返回。

【讨论】:

  • "如果 (message.userID === mybot.userID) 返回;"不返回错误,但机器人也不回复任何人
  • P.S.我将尝试在 discord.js 中重建机器人,因为当我将来添加更多代码时,这将不那么令人头疼,但我想我仍然很好奇我必须做些什么才能使其工作它代表了(将来查看此主题的其他人也可能如此)
  • 这个答案是直接的问题。 message.author 是未定义的元素。如果您继续使用discord.io 进行构建,则希望控制台注销message 变量并查看其中存储的内容...
猜你喜欢
  • 2018-08-15
  • 2022-07-12
  • 2021-11-10
  • 2020-08-15
  • 2023-01-22
  • 2021-07-30
  • 2022-11-16
  • 2021-06-15
  • 1970-01-01
相关资源
最近更新 更多