我的Discord.io机器人出问题了。我正在尝试让它在Linux服务器上运行,然而,Linux版本的Node.js经常将字符串的内容解释为单独的对象,从而导致以下TypeError:
TypeError: Object IT'S ALIVE has no method 'startsWith' at DiscordClient.bot.getMessages.channel (/root/Davixxabots/Daru/Darubot.js:182:17) at DiscordClient.emit (events.js:106:17) at DiscordClient.handleWSMessage (/root/Davixxabots/Daru/node_modules/discord.io/lib/index.js:1049:11) at WebSocket.emit (events.js:98:17) at Receiver.ontext (/root/Davixxabots/Daru/node_modules/ws/lib/WebSocket.js:841:10) at /root/Davixxabots/Daru/node_modules/ws/lib/Receiver.js:536:18 at Receiver.applyExtensions (/root/Davixxabots/Daru/node_modules/ws/lib/Receiver.js:371:5) at /root/Davixxabots/Daru/node_modules/ws/lib/Receiver.js:508:14 at Receiver.flush (/root/Davixxabots/Daru/node_modules/ws/lib/Receiver.js:347:3) at Receiver.opcodes.1.finish (/root/Davixxabots/Daru/node_modules/ws/lib/Receiver.js:541:12)
下面是出现上述错误的代码:
if (message.toString().startsWith("/gamechange ") && userID == config.ownerID) {
//messageSplit = message.split("/gamechange");
var messageSplit = message.substring(message.indexOf("/gamechange ")+ 11);
if (messageSplit == "" || messageSplit == " ") {
bot.setPresence({ game:""});
}
bot.setPresence({
game: messageSplit
});
deleteCmdMessage(channelID, message);
log("Changed game to: \" " + messageSplit + ".");
}它在Windows上运行得很好。
提前感谢您能提供的任何帮助!
发布于 2016-07-15 20:48:31
"...constantly将字符串的内容解释为单独的对象,“我不知道这是什么意思,但是由于字符串没有startsWith()方法,看起来您只是在使用旧版本的node。
正如@squint在their comment中指出的那样,这个问题是一个过时的Node.js版本。
https://stackoverflow.com/questions/38383703
复制相似问题