在同一个 NodeJS 项目中运行不同的 discord.js 机器人实例

Posted

技术标签:

【中文标题】在同一个 NodeJS 项目中运行不同的 discord.js 机器人实例【英文标题】:Running different discord.js bot instances in the same NodeJS project 【发布时间】:2020-07-19 07:48:18 【问题描述】:

我正在尝试创建一个同时服务于不同机器人(具有不同令牌)的项目。我的猜测是您将不得不回忆“client.login(token)”两次。我正在忙于测试,尚未完成,但完成后会回来。

有人对在同一个文件、同一个项目中运行多个 NodeJS 机器人实例有什么建议吗?这甚至可能吗?非常感谢您的帮助。

我也试着想象这会是什么样子:

const Client = require('discord.js');
const bot1 = new Client();
const bot2 = new Client();
//bot1 does something
//bot2 does something
bot1.login('token1');
bot2.login('token2');

谢谢你,祝你有美好的一天。

【问题讨论】:

【参考方案1】:

我可以确认这是可行的。这是我的代码:

const Discord = require('discord.js');
const client1 = new Discord.Client();
const client2 = new Discord.Client();
const CONFIG = require('./config.json');

client1.once('ready', () => 
    console.log('Bot 1 ready.');
);

client2.once('ready', () => 
    console.log('Bot 2 ready.');
);

client1.on('message', message => 
    if (message.content === 'Hello!') 
        message.channel.send('Hello');
        console.log('Bot 1 said hello.');
    
);

client2.on('message', message => 
    if (message.content === 'Hello!') 
        message.channel.send('world!');
        console.log('Bot 2 said hello.');
    
);


client1.login(CONFIG.token1);
client2.login(CONFIG.token2);

这是控制台日志:

Bot 2 ready.
Bot 1 ready.
Bot 1 said hello.
Bot 2 said hello.

有趣的是,Bot 1 还是 Bot 2 首先响应各不相同,因此您可能需要考虑这一点。

事实上,这甚至适用于 3 个机器人,而且它应该适用于任意数量的机器人!

const Discord = require('discord.js');
const client1 = new Discord.Client();
const client2 = new Discord.Client();
const client3 = new Discord.Client();
const CONFIG = require('./config.json');

client1.once('ready', () => 
    console.log('Bot 1 ready.');
);

client2.once('ready', () => 
    console.log('Bot 2 ready.');
);

client3.once('ready', () => 
    console.log('Bot 3 ready.');
);

client1.on('message', message => 
    if (message.content === 'Hello!') 
        message.channel.send('Hello1');
        console.log('Bot 1 said hello.');
    
);

client2.on('message', message => 
    if (message.content === 'Hello!') 
        message.channel.send('Hello2');
        console.log('Bot 2 said hello.');
    
);

client3.on('message', message => 
    if (message.content === 'Hello!') 
        message.channel.send('Hello3');
        console.log('Bot 3 said hello.');
    
);

client1.login(CONFIG.token1);
client2.login(CONFIG.token2);
client3.login(CONFIG.token3);

这里是控制台日志:

Bot 1 ready.
Bot 3 ready.
Bot 2 ready.
Bot 2 said hello.
Bot 3 said hello.
Bot 1 said hello.

但是,对于更深入的项目,我建议(对于命令等)为 2 个机器人使用不同的文件,因为我认为代码会变得混乱且难以快速阅读,即使您使用相同的 index.js文件。

希望这会有所帮助!

【讨论】:

感谢您的精彩回答!这极大地扩展了您可以使用 API 执行的操作的界限。你是救生员。

以上是关于在同一个 NodeJS 项目中运行不同的 discord.js 机器人实例的主要内容,如果未能解决你的问题,请参考以下文章

带有flutter项目的Nodejs在物理设备上运行

Tailwind css - “list-disc”没有正确设置 <li> 项目符号(双项目符号)

如何使用两个不同的节点版本运行两个不同的nodejs应用程序[关闭]

nodejs 与运行 libevent 有何不同?

安装nodejs6.9x以后,原来在nodejs4.2.x中运行正常的ionic项目出现问题的解决

Docker运行nodejs及调试