如何将一长串命令拆分为不同的文件

How to split long list of commands to different files

我正在使用 node-telegram-bot-api 制作电报机器人,一切正常,直到命令列表变得很长。在初始化 bot 的单个 .js 文件中提供许多命令是不舒服的。

我了解 module.exports 的一件基本事情,使用它我可以将服务功能移动到不同的文件,但它仍然不是我想要的.

构建 html 页面(基本)时,您通过 标记添加 javascript 文件,这就是您在页面上加载少量脚本的方式作为一件大事。当您使用 PHP 时,您可以使用 requireinclude 将其他脚本插入到主脚本中。最后 Express.js 允许制作外部路由器模块,并在主脚本中使用它,就像 expressApp.use(myRouterModule).

这就是我正在努力寻找的方法。制作一些结构,当按任何类别分组的少数命令将被放入不同的 .js 文件并使用类似 mybot.useCommands(CommandGroup1,CommandGroup2)

的内容时

CommandGroup1.js 将包含:

bot.onText(/\/start/,function(msg){...})
bot.onText(/\/echo/,function(msg){...})

另一个TestGroup.js将包含

bot.onText(/\/test1/,function(msg){...})
bot.onText(/\/AnotherTest/,function(msg){...})

和 main app.js 将使用这两个文件和内部的事件侦听器

var bot = new TelegramBot(token, { polling: true });

includeHere('./CommandGroup1.js')
includeHere('./TestGroup.js')

我检查过 APIs of node-telegram-bot-api 但没有找到类似的东西,但是

P.S.: 是的,我是 NodeJS 的新手,我知道这个问题听起来很愚蠢。是的,我只知道 javascript 的基础知识。但我不知道如何,也不确定我的问题是否表述正确,所以感谢所有在需要时帮助更正的人。

您可以创建一个单独的模块(例如 bot.js)将 bot 对象导出为单例,并且在包含 commands/listeners/handlers 的每个其他文件中,您只需要导入相同的实例机器人的。

例如,在bot.js中:

const TelegramBot = require('node-telegram-bot-api');
const bot = new TelegramBot(token, { polling: true });
module.exports = bot;

CommandGroup1.js中:

const bot = require('./bot');
bot.onText(/\/start/,function(msg){...});
bot.onText(/\/echo/,function(msg){...});

TestGroup.js 中:

const bot = require('./bot');
bot.onText(/\/test1/,function(msg){...});
bot.onText(/\/AnotherTest/,function(msg){...});

app.js 中:

require('./CommandGroup1');
require('./TestGroup');