TypeError: невозможно прочитать свойство startWith из undefined node.js V12.18.2 - PullRequest
3 голосов
/ 14 июля 2020

Это мой первый вопрос, поэтому прошу прощения, если я пропустил некоторую информацию / форматирование. Я не могу понять, почему мой Node.js, похоже, не работает на моем ноутбуке, но отлично работает на другом компьютере. Это мой код:

const Discord = require('discord.js');
const client = new Discord.Client();
const config = require("./config.json");
const random = require("./random.js");
const constants = require("./constants.js");
const Sequelize = require('sequelize');


//Listener event for when the bot sends a ready event (ex: logging in)
client.on('ready', () => {
     console.log(`Logged in as ${client.user.tag}!`);
 });

 //Listener Event which runs whenever a message with prefix '!' is received
client.on('message', message => {

     var msg = message.content.toLowerCase(); //Turns message to uppercase, to make commands not case sensitive
     var sender = message.author; //Author of the message is set to the sender
     
     console.log(msg);
     if (!msg.content.startsWith(config.prefix) || msg.author.bot) {return;}

     if (msg.content.startsWith(config.prefix + 'pray')) {
          msg.reply('Your prayers have been heard... Lord Gaybel is pleased!'); 
     }
    
     if(msg.content.startsWith(config.prefix + "fortune")) {
           msg.reply('The fortune trumpet is not function currently... we are working hard to make sure that your fortunes are told.');
           msg.reply(random.getRandomInt(constants.MIN, constants.MAX));
     }
 });


//Discord Login Token
client.login(config.TOKEN);

Это ошибка, которую я получаю:

c:\Users\Curtis\Documents\GitHub\MABEL-BOT\main.js:38
     if (!msg.content.startsWith(config.prefix) || msg.author.bot) {return;}
                      ^

TypeError: Cannot read property 'startsWith' of undefined
    at Client.<anonymous> (c:\Users\Curtis\Documents\GitHub\MABEL-BOT\main.js:38:23)
    at Client.emit (events.js:315:20)
    at MessageCreateAction.handle (c:\Users\Curtis\node_modules\discord.js\src\client\actions\MessageCreate.js:31:14)
    at Object.module.exports [as MESSAGE_CREATE] (c:\Users\Curtis\node_modules\discord.js\src\client\websocket\handlers\MESSAGE_CREATE.js:4:32)
    at WebSocketManager.handlePacket (c:\Users\Curtis\node_modules\discord.js\src\client\websocket\WebSocketManager.js:386:31)
    at WebSocketShard.onPacket (c:\Users\Curtis\node_modules\discord.js\src\client\websocket\WebSocketShard.js:436:22)
    at WebSocketShard.onMessage (c:\Users\Curtis\node_modules\discord.js\src\client\websocket\WebSocketShard.js:293:10)
    at WebSocket.onMessage (c:\Users\Curtis\node_modules\ws\lib\event-target.js:125:16)
    at WebSocket.emit (events.js:315:20)
    at Receiver.receiverOnMessage (c:\Users\Curtis\node_modules\ws\lib\websocket.js:797:20)

Я использую Node.Js V 12.18.2 на обоих компьютерах и NPM v 6.14. 6

Я подумал, может быть, это проблема с брандмауэром на моем ноутбуке, но мне хотелось узнать другое мнение.

Ответы [ 2 ]

1 голос
/ 14 июля 2020

Вместо if (!msg.content.startsWith(config.prefix) должно быть if (!msg.startsWith(config.prefix) ||..., поскольку вы уже выполняли шаг var msg = message.content.toLowerCase(); ранее.

1 голос
/ 14 июля 2020

Ошибка вызвана тем, что вы, по сути, делаете message.content.toLowerCase().content.startsWith()

Это должно работать:

if (!msg.startsWith(config.prefix) || msg.author.bot) {return;}
...