结合Mineflayer和discord.js

时间:2018-11-04 23:25:18

标签: javascript discord.js

我正在努力做到这一点,因此Minecraft聊天中发送的所有内容也会通过我的机器人发送到Discord频道。它会在游戏中获取消息,但不会发布到Discord频道。 (我是JavaScript新手)

const Discord = require('discord.js');
const mineflayer = require('mineflayer');
const client = new Discord.Client();

var bot = mineflayer.createBot({
    host: "localhost",
    port: 62146,
    username: "email",
    password: "password",
});

client.on('ready', () => {
    console.log(`Connected!`)
    console.log(`Username: ${client.user.tag}`);
});

bot.on('chat', function(username, message) {
    if (username === bot.username) return;
    bot.chat(message)
});

client.on("message", function(message) {
    client.channels.get()("500693869684326430").send(message)
});

client.login('');

我希望它发送用户发送的消息,以便发送到已定义的Discord频道。

2 个答案:

答案 0 :(得分:1)

我在这里看到一些可以改进的地方,但我知道如何解决(也许)的第一件事是:

在您的代码中,您有client.channels.get()("500693869684326430").send(message),当我非常确定它应该为client.channels.get("500693869684326430").send(message)时,因为函数get()是您要提供的通道ID的参数。需要明确的是,这会将message发送到ID为500693869684326430的Discord频道。

我还看到您说要从Minecraft聊天中获取消息以发送到Discord频道时,您似乎正在将Minecraft聊天消息发送回与bot.chat(message)的聊天中? 我相信您的意思是在此处使用前面提到的client.channels.get("500693869684326430").send(message)

为了澄清我的意思,我将完整的代码放在下面。

const Discord = require('discord.js');
const mineflayer = require('mineflayer');
const client = new Discord.Client();

var bot = mineflayer.createBot({
    host: "localhost",
    port: 62146,
    username: "email",
    password: "password",
});

client.on('ready', () => {
    console.log(`Connected!`)
    console.log(`Username: ${client.user.tag}`);
});

bot.on('chat', function(username, message) {
    if (username === bot.username) return;
    client.channels.get("500693869684326430").send(message)
});

client.on("message", function(message) {
    // you don't really need this but maybe that's what you want, i don't know
    //client.channels.get()("500693869684326430").send(message)
});

client.login('');

说句公道话,我以前从未使用过mineflayer,但我认为我可能可以帮助解决问题。如果您需要我澄清任何事情,请发表评论。

答案 1 :(得分:0)

也许你可以这样做

mineflayer上有一个叫做“message”的事件

bot.on("message", message => {
  let channel = client.channels.cache.get("CHID")
  if (!channel) return;
  channel.send(`From Server Chat >> ${message}`)
})