Discord Bot 自我回复,无法识别 message.author.bot
Discord Bot replying to itself, doesn't recognize message.author.bot
所以我有一个机器人,我正在尝试使用 "We love 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: Cannot read property 'bot' of undefined
从像 discord.js bot replies to itself 这样的帖子看来,该解决方案对人们有效,但不适合我。
我有什么不同之处?
谢谢!
Hmmmmm....乍一看像是范围界定问题。不确定您正在构建什么,您可能需要阅读 MCV。需要清理我构建的小机器人并 post 它在 github 上,明天我会 post 它。正在试验短期记忆阵列。但快速浏览一下并进行测试后,它就可以正常工作了:
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
我相信在你的例子中它会回复异步或 return 所以你只需要调用内置的原型方法作为方法的一部分存在。 API 文档中还有很多其他内容。
错误告诉您 message.author
是 undefined
,因此 bot
不是有效的 属性。您正在尝试使用来自另一个 discord 库的解决方案。
相反,请尝试检查用户或用户 ID 是否与机器人匹配,然后 return。
所以我有一个机器人,我正在尝试使用 "We love 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: Cannot read property 'bot' of undefined
从像 discord.js bot replies to itself 这样的帖子看来,该解决方案对人们有效,但不适合我。
我有什么不同之处?
谢谢!
Hmmmmm....乍一看像是范围界定问题。不确定您正在构建什么,您可能需要阅读 MCV。需要清理我构建的小机器人并 post 它在 github 上,明天我会 post 它。正在试验短期记忆阵列。但快速浏览一下并进行测试后,它就可以正常工作了:
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
我相信在你的例子中它会回复异步或 return 所以你只需要调用内置的原型方法作为方法的一部分存在。 API 文档中还有很多其他内容。
错误告诉您 message.author
是 undefined
,因此 bot
不是有效的 属性。您正在尝试使用来自另一个 discord 库的解决方案。
相反,请尝试检查用户或用户 ID 是否与机器人匹配,然后 return。