首页 > 解决方案 > 如何在 JavaScript 中创建 Discord Cross 服务器中继机器人

问题描述

我一直在研究一个新的 Discord Bot,它能够将来自原始服务器的公告中继到该 bot 所在的所有其他服务器。我对编程非常陌生,所以我的想法有希望吗?我现在就发送我当前的代码。

const discord = require('discord.js');
const bot = new discord.Client();

const token = '<token>';

const PREFIX = '&';

const server;
const DChannel;

bot.on('ready', () =>{
    console.log('Milsim Network Online');

    server = bot.guilds.get(719415100221554688);
    DChannel = server.channels.get(719424622633680906);
    console.log('--------------------\n\n\nREADY: '+ new Date() +'\n\n\n--------------------');
})

bot.on('message', message=> {

    let args = message.content.substring(PREFIX.length).split(" "); // Single Argument Commands //

    switch(args[0]) {
        case 'ping': 
            message.channel.send('pong!');
        break;
        case 'UMA':
            message.channel.send('website link here');
        break;
        case 'info':
            message.channel.send('Please select: **PMC**, **MILSIM**, or **UMA** to learn more about them');
        break;
    }

    if (message.channel.type.toLowerCase() == 'dm' || message.channel.type.toLowerCase() == 'group') {
            var embed = new Discord.RichEmbed()
            .setAuthor(message.author.username, message.author.avatarURL)
            .setDescription(message.content)
            .setTimestamp(new Date())
            .setColor('#C735D4');
            DChannel.send(embed);
        }
})

bot.login (token);

我知道它可能看起来非常杂乱无章,对此我深表歉意。

标签: javascriptdiscorddiscord.js

解决方案


这是朝着所需方向迈出的一步。我的示例获取其余消息内容(不包括命令)并将其发送到客户端所在的每个公会的第一个频道。请注意,“第一个”频道表示频道列表中最低的一个。

let announcement = args.slice(1).join(' ');
bot.guilds.cache.forEach(guild => {
  let channel = guild.channels.cache.first();
  channel.send(announcement);
});

看来你没有使用 discord.js v12,所以上面的代码只有在你删除所有实例时才有效cache,例如bot.guilds.cache.forEach()-->bot.guilds.forEach()


推荐阅读