我愿意让不和谐的机器人从我的Minecraft机器人发送所有消息(加入,离开,杀死,聊天)

时间:2019-06-26 10:30:54

标签: javascript minecraft discord.js

“消息开启”事件不起作用,它也不会将消息发送到指定的不和谐频道。

我一直在尝试使其能够正常工作,在聊天中它可以正常工作,但是它没有发送加入/离开消息,也没有发送kill消息。

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 :(得分:0)

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

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

答案 1 :(得分:0)

我设法解决了这个问题,但是不得不在代码中做很多改动,添加了以下内容:

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