我愿意让 discord 机器人从我的 minecraft 机器人发送所有消息(加入、离开、杀戮、聊天)

I'm willing to make the discord bot send all the messages (join, leave, kill, chat) from my minecraft bot

消息事件无效,它不会将消息发送到指定的不和谐频道。

我一直在尝试让它工作我尝试聊天并且它工作但它没有发送 join/leave 也没有发送终止消息。

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)

您的 jsonMsg 必须是字符串,而不是对象。放入 send 的任何内容都必须是要发送到 Discord 的消息字符串,或者您可以在 Discord API 文档中阅读的嵌入对象。 https://discordapp.com/developers/docs/resources/channel#embed-object

编辑:检查 Mineflayer 的 API 后,播放 joined/left 事件不通过消息传递,而是通过 playerJoinedplayerLeft 事件传递。参见 https://github.com/PrismarineJS/mineflayer/blob/master/docs/api.md#playerjoined-player

我设法修复了它,但不得不在代码中进行大量更改,我添加了以下内容:

    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.")
        });
    });