Бот Discord, отвечающий сам себе, не распознает message.author.bot - PullRequest
0 голосов
/ 30 сентября 2018

поэтому у меня есть бот, который я пытаюсь заставить ответить "Дэн" словами "Мы любим Дана!"для сервера, в котором я нахожусь:

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: Невозможно прочитать свойство 'bot' из неопределенного

Кажется из потоков, как бот discord.js отвечает себе , что решение работает для людей, но не для меня.

Что я делаю по-другому?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 30 сентября 2018

Ошибка говорит вам, что message.author - это undefined, поэтому bot не является допустимым свойством.Вы пытаетесь использовать решение из другой библиотеки разногласий.

Вместо этого попробуйте проверить, совпадает ли идентификатор пользователя или пользователя с ботом, а затем вернуться.

0 голосов
/ 30 сентября 2018

Хммммм ... На первый взгляд похоже на проблему с ограничениями.Не уверен, что именно вы строите, вы можете прочитать MCV .Нужно почистить маленького бота, которого я построил, и выложить его на github, а завтра я выложу его.Экспериментировал с кратковременным массивом памяти.Но при быстром взгляде и тесте все заработало:

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 в вашем, я считаю, и он ответит на асинхронный или возврат, так что вам просто нужно будетвызовите встроенный метод-прототип, который существует как часть метода.В Документах API есть и множество других.

...