TypeError:每当我在不和谐的情况下向我的机器人输入 PM 时,都无法读取未定义的属性“id”
Posted
技术标签:
【中文标题】TypeError:每当我在不和谐的情况下向我的机器人输入 PM 时,都无法读取未定义的属性“id”【英文标题】:TypeError: Cannot read property 'id' of undefined whenever i type a PM to my bot on discord 【发布时间】:2019-10-02 21:57:34 【问题描述】:刚开始编写我的机器人时,每当我给机器人发私信时,我突然收到错误Cannot read property 'id' of undefined
。代码和错误堆栈如下。
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 bot = new Discord.Client(
token: auth.token,
autorun: true
);
bot.on('ready', function (evt)
logger.info('Connected');
logger.info('Logged in as: ');
logger.info(bot.username + ' - (' + bot.id + ')');
);
bot.on('message', function (user, userID, channelID, message, evt)
// Our bot needs to know if it will execute a command
// It will listen for messages that will start with `!`
if (message.substring(0, 1) == '!')
var args = message.substring(1).split(' ');
var cmd = args[0];
args = args.splice(1);
switch(cmd)
// !ping
case 'ping':
bot.sendMessage(
to: channelID,
message: 'Pong!'
);
break;
// Just add any case commands if you want to..
);
TypeError: Cannot read property 'id' of undefined
at new Channel (C:\Users\PC\Desktop\Discord-Bot\node_modules\discord.io\lib\index.js:2529:25)
at DiscordClient.handleWSMessage (C:\Users\PC\Desktop\Discord-Bot\node_modules\discord.io\lib\index.js:1889:33)
at WebSocket.emit (events.js:189:13)
at Receiver.ontext (C:\Users\PC\Desktop\Discord-Bot\node_modules\ws\lib\WebSocket.js:841:10)
at C:\Users\PC\Desktop\Discord-Bot\node_modules\ws\lib\Receiver.js:536:18
at Receiver.applyExtensions (C:\Users\PC\Desktop\Discord-Bot\node_modules\ws\lib\Receiver.js:371:5)
at C:\Users\PC\Desktop\Discord-Bot\node_modules\ws\lib\Receiver.js:508:14
at Receiver.flush (C:\Users\PC\Desktop\Discord-Bot\node_modules\ws\lib\Receiver.js:347:3)
at Receiver.finish (C:\Users\PC\Desktop\Discord-Bot\node_modules\ws\lib\Receiver.js:541:12)
at Receiver.expectHandler (C:\Users\PC\Desktop\Discord-Bot\node_modules\ws\lib\Receiver.js:499:31)```
【问题讨论】:
【参考方案1】:我真的与 discord.io 没有任何关系, 但是看着你的错误, 看来,
var bot = new Discord.Client(
token: auth.token,
autorun: true
);
将undefined
分配给您的var bot
。
至少那是你的错误信息告诉你的。
查看来自https://www.npmjs.com/package/discord.io的包的示例代码
var Discord = require('discord.io');
var bot = new Discord.Client(
token: "",
autorun: true
);
bot.on('ready', function()
console.log('Logged in as %s - %s\n', bot.username, bot.id);
);
bot.on('message', function(user, userID, channelID, message, event)
if (message === "ping")
bot.sendMessage(
to: channelID,
message: "pong"
);
);
...我真的找不到任何你会做错的事情...所以我的猜测是,
var Discord = require('discord.io');
到discord.io
的路径错误
【讨论】:
感谢您的帮助,关于第一件事,如果我删除那行文本,它会说我没有机器人,关于 Discord.io 事实上,也许我应该链接该位置只是“Discord.io”? @Xattics - 是的,我建议您搜索 discord.io 模块的位置。 ***.com/questions/9901082/… 这个问题的答案很好地解释了 require 的作用以及如何使用它 - 希望它会对你有所帮助 - 不幸的是,我从未对 discord.io 做过任何事情,所以我没有资格提供任何细节- 只是猜测可能出了什么问题...... 感谢您帮助我,刚开始所以需要很多帮助以上是关于TypeError:每当我在不和谐的情况下向我的机器人输入 PM 时,都无法读取未定义的属性“id”的主要内容,如果未能解决你的问题,请参考以下文章
如何在不覆盖的情况下向 Firebase Firestore 添加值?