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

问题描述

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

我了解 module.exports 的一项基本功能,使用该功能我可以将服务功能移动到不同的文件中,但这仍然不是我的想法。

在构建html页面(基本)时,您可以通过 标记添加javascript文件,这是您将很少的脚本加载到页面上的一大原因。使用PHP时,可以使用 require include 将其他脚本插入到主脚本中。最后,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){...})

和主 app.js 将同时使用这两个文件以及内部的事件监听器

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

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

我已经检查过APIs of node-telegram-bot-api,但没有找到类似的内容,但是

  • 可能是我的搜索不正确(关键字不正确,描述不正确)
  • NodeJS运行时可能允许JavaScript将外部.js文件作为代码的一部分而不是变量的值包含在内

P.S .:是的,我是NodeJS的新手,所以明白这个问题听起来很愚蠢。是的,我只知道javascript的基础知识。但是我不知道该怎么做,也不确定我的问题表达是否正确,因此感谢所有愿意在需要时进行纠正的人。

解决方法

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

例如,在 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');

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...