Хочу использовать часть кода от модулей в других файлах, чтобы не засорять 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
  • index.js

То есть, каждую команду и отдельный функционал хочу распихать по файлам, чтобы удобнее работалось. Может для этого есть фреймворки, которые уже автоматически делают это за меня. Мне не хватает примеров в интернете. Структуру я указал примерную. Я не могу понять как экспортировать модули в которых используется функционал других модулей


Ответы (1 шт):

Автор решения: Vladislav Sokolov

Файл 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'))
}

→ Ссылка