Я хочу, чтобы бот-дискорд отправлял все сообщения (присоединяйся, уходи, убивай, общайся) от моего бота из Minecraft - PullRequest
0 голосов
/ 26 июня 2019

Событие сообщения не работает, и оно не отправляет сообщения на указанный канал разногласий.

Я пытался заставить его работать, я пытался в чате, и это работало, но это неНе отправляйте сообщения о присоединении / выходе и не отправляйте сообщения об уничтожении.

const mineflayer = require("mineflayer");
const Discord = require("discord.js")
const client = new Discord.Client()
const connect = {
    "host": "localhost",
    "port": "25567",
    "username": "MegaREEE"
}
const bot = mineflayer.createBot({
host: connect.host,
    port: connect.port,
    username: connect.username,
  });
  client.on('ready', () => {
    console.log("succesfully connected to discord")
    client.channels.get("593310885729271859").send("✔: Bot Connected!")
  })
  bot.on('messsage', function(jsonMsg) {
    client.channels.get("593310885729271859").send(jsonMsg)
  })
    client.login(token)

Ответы [ 2 ]

0 голосов
/ 26 июня 2019

Мне удалось это исправить, но мне пришлось многое изменить в коде, я добавил следующее:

    minecraftBot.on('message', (message) => {
        let log = message.text;
        if (message.extra){
            log += message.extra.map(it => it.text).join("");
        }
        log = log.trim();
        if (log.length === 0){ return; }
        channel.send("", {
            embed: new djs.RichEmbed()
            .setAuthor(mflConf.host)
            .setDescription(`**${log}**`)
            .setColor("RANDOM")
            .setTimestamp()
            .setFooter(moment().format('h:mm:ss a')+ " © Syndicate Bot.")
        });
    });
0 голосов
/ 26 июня 2019

Ваш jsonMsg должен быть строкой, а не объектом.Все, что помещается в send, должно быть либо строкой сообщения для отправки в Discord, либо объектом Embed, о котором вы можете прочитать в документации API Discord.https://discordapp.com/developers/docs/resources/channel#embed-object

РЕДАКТИРОВАТЬ: После проверки API Mineflayer события play join / left не проходят через сообщения, а проходят через события playerJoined и playerLeft.Смотри https://github.com/PrismarineJS/mineflayer/blob/master/docs/api.md#playerjoined-player

...