0

我正在努力做到这一点,以便在 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 频道。

4

2 回答 2

0

也许你可以这样做

mineflayer 上有一个名为“message”的事件

bot.on("message", message => {
  let channel = client.channels.cache.get("CHID")
  if (!channel) return;
  channel.send(`From Server Chat >> ${message}`)
})
于 2021-02-22T08:28:28.757 回答
0

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

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

我还看到,当您说您正在尝试从 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,但我认为我可以帮助解决问题。如果您需要我澄清任何事情,请发表评论。

于 2018-11-05T01:36:24.417 回答