Discord Bot 回复自己,无法识别 message.author.bot
Posted
技术标签:
【中文标题】Discord Bot 回复自己,无法识别 message.author.bot【英文标题】:Discord Bot replying to itself, doesn't recognize 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 库 【参考方案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.author
是undefined
,因此bot
不是有效属性。您正在尝试使用来自另一个不和谐库的解决方案。
请尝试检查用户或用户 ID 是否与机器人匹配,然后返回。
【讨论】:
"如果 (message.userID === mybot.userID) 返回;"不返回错误,但机器人也不回复任何人 P.S.我将尝试在 discord.js 中重建机器人,因为当我将来添加更多代码时,这将不那么令人头疼,但我想我仍然很好奇我必须做些什么才能使其工作它代表了(将来查看此主题的其他人也可能如此) 这个答案是直接的问题。message.author
是未定义的元素。如果您继续使用discord.io
进行构建,则希望控制台注销message
变量并查看其中存储的内容...以上是关于Discord Bot 回复自己,无法识别 message.author.bot的主要内容,如果未能解决你的问题,请参考以下文章