如何将一长串命令拆分为不同的文件
How to split long list of commands to different files
我正在使用 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){...})
和 main 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 对象导出为单例,并且在包含 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');
我正在使用 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){...})
和 main 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 对象导出为单例,并且在包含 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');