在同一个 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 机器人实例的主要内容,如果未能解决你的问题,请参考以下文章
Tailwind css - “list-disc”没有正确设置 <li> 项目符号(双项目符号)
如何使用两个不同的节点版本运行两个不同的nodejs应用程序[关闭]