“消息开启”事件不起作用,它也不会将消息发送到指定的不和谐频道。
我一直在尝试使其能够正常工作,在聊天中它可以正常工作,但是它没有发送加入/离开消息,也没有发送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)
答案 0 :(得分:0)
您的jsonMsg
必须是字符串,而不是对象。放入send
中的任何内容都必须是要发送到Discord的消息字符串,或者是可以在Discord API文档中阅读的嵌入对象。 https://discordapp.com/developers/docs/resources/channel#embed-object
编辑:检查Mineflayer的API后,播放加入/离开事件不会通过消息传递,而是会通过playerJoined
和playerLeft
事件传递。参见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.")
});
});