结合 Mineflayer 和 discord.js

Combining Mineflayer and discord.js

我正在努力做到这一点,所以在 Minecraft 聊天中发送的任何内容也会通过我的机器人发送到 Discord 频道。它会在游戏中获取消息,但不会 post 到 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 频道。

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

在你的代码中你有 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,但我想我也许可以帮助整理事物的顺序。如果您需要我澄清任何事情,请发表评论。

也许你可以这样做

矿工上有一个名为“消息”的事件

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