Хочу использовать часть кода от модулей в других файлах, чтобы не засорять index.js
Возможно я не умею правильно гуглить, т.к. Node.js начал изучать недавно. Хочу сократить код в index.js/app.js (главного файла приложения). Ситуация следующая. Есть такой код:
const config = require('./config/default.json')
const { Telegraf } = require('telegraf')
//Объявляем токен бота телеги
const telegram_bot_token = config.telegram_bot.token
//Создаём класс бота телеги
const bot = new Telegraf(telegram_bot_token)
bot.start((ctx) => ctx.reply('Добро пожаловать'))
bot.help((ctx) => ctx.reply('Отправь мне стикер'))
bot.on('sticker', (ctx) => ctx.reply('?'))
bot.hears('hi', (ctx) => ctx.reply('Привет'))
bot.launch()
// Остановка бота
process.once('SIGINT', () => bot.stop('SIGINT'))
process.once('SIGTERM', () => bot.stop('SIGTERM'))
Позже кода будет много, как сделать, чтобы выглядело следующим образом?:
const config = require('./config/default.json')
const { Telegraf } = require('telegraf')
const telegram_bot = require('./my_modules/telegram') // ./my_modules/telegram/index.js
//тут может какая-то функция типа
start_telegram_bot()
Тогда как в ./my_modules/telegram/ будет примерно следующая структура:
- modules
- commands
- hello.js
- send_stiker.js
- payments
- paypal.js
- visa.js
- commands
- index.js
То есть, каждую команду и отдельный функционал хочу распихать по файлам, чтобы удобнее работалось. Может для этого есть фреймворки, которые уже автоматически делают это за меня. Мне не хватает примеров в интернете. Структуру я указал примерную. Я не могу понять как экспортировать модули в которых используется функционал других модулей
Ответы (1 шт):
Файл test.js в моём случае главный (как index.js/app.js)
test.js:
import config from 'config'
import { Telegraf } from 'telegraf'
import test2 from './test2.js'
import test3 from './test3.js'
//Объявляем токен бота телеги
const telegram_bot_token = config.get('telegram_bot.token')
//Создаём класс бота телеги
const bot = new Telegraf(telegram_bot_token)
test2(bot)
test3(bot)
bot.launch()
// Enable graceful stop
process.once('SIGINT', () => bot.stop('SIGINT'))
process.once('SIGTERM', () => bot.stop('SIGTERM'))
Файл test2.js:
export default (bot) => {
bot.help((ctx) => ctx.reply('Send me a sticker'))
bot.on('sticker', (ctx) => ctx.reply('?'))
bot.hears('hi', (ctx) => ctx.reply('Hey there'))
}
Файл test2.js:
export default (bot) => {
bot.start((ctx) => ctx.reply('Welcome'))
}