свойство, но, возможно, если оно отсутствует, вы можете просто проигнорировать событие.
жен начать этот вопрос, сказав, что у меня очень мало знаний о javascript (я практиковался в Java) и просто хотел создать (несколько) простой бот Discord, который бы произносил сообщения в случайное время. Я получил два фрагмента кода из различных руководств, и в настоящее время у меня есть это:
var Discord = require('discord.io');
var logger = require('winston');
var auth = require('./auth.json');
//random bot code
var randomMessage;
var randOn = false;
var responseArray = [ //add more messages here
"Ayy, lmao!",
"Say what?",
"roflmaotntpmp"
];
var prefix = "!";
var timer = [5,10]; //set min and max in seconds for random messages
// 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', (msg) => {
if (msg.content.startsWith(prefix + "on")) {
if (randOn) {
msg.channel.sendMessage("Already running.");
}
else {
msg.channel.sendMessage("Random message started.")
randomMessage = setTimeout(function() {
randMsg(msg.channel);
}, 1000*timer[0]);
}
}
else if (msg.content.startsWith(prefix + "off")) {
if (randOn) {
clearTimeout(randomMessage);
msg.channel.sendMessage("Random message disabled.");
}
else {
msg.channel.sendMessage("Not running.");
}
}
});
function randomIntFromInterval(min, max) {
return Math.floor(Math.random()*(max-min+1)+min);
}
function randMsg(msgChan) {
console.log("callback");
var interval = 1000*randomIntFromInterval(timer[0],timer[1]);
var rand = randomIntFromInterval(0,responseArray.length-1);
if(responseArray[rand]) {
msgChan.sendMessage(responseArray[rand]);
}
randomMessage = setTimeout(function() {
randMsg(msgChan);
}, interval);
}
Проблема происходит в этом блоке:
bot.on('message', (msg) => {
if (msg.content.startsWith(prefix + "on")) {
if (randOn) {
msg.channel.sendMessage("Already running.");
}
Каждый раз, когда я пытаюсь командовать ботом в чате разногласий (! On), в командной строке Node.js / командной строки выдается сообщение об ошибке «Ошибка ввода: не удается прочитать свойство'arsWith" из неопределенного ». Я пробовал разные вещи, чтобы это исправить (удаление «контента» из обоих выражений msg.content ... - никаких жалоб, но абсолютно ничего не происходит), но ... я, честно говоря, понятия не имею, что я делаю. Я проверил каждый пост в интернете, посвященный подобным вещам, и ничего не смог ответить на этот вопрос. Я надеюсь, что это простая синтаксическая вещь / что-то, что не объявлено должным образом ... если у вас есть время и жалость ко мне, пожалуйста, помогите. Я знаю, что попал в беспорядок, но я отказываюсь от него отказываться! Дайте мне знать, какую другую информацию я могу предоставить, чтобы помочь.