Это уже его заморочки, но лучше так не делать
Не проще ли создавать прямо там где он нужен?
Это понятно, но нужно ведь ещё натолкнуть на правильную мысль)
Бот создан в index.js. В index.js вызывается функция прописанная в другом файле, которая устанавливает для всех пользователей из базы setTimeout-ы для функции также прописанной в другом файле, которая позже отправит сообщение. Функция срабатывает безотносительно пользователя, поэтому контекст передать ей не могу. Значит для отправки сообщения могу использовать только метод Телеграма. Чтобы вызвать метод Телеграма из модуля, передаю туда бота. Может это можно сделать как-то проще и/или правильнее?
Так зачем тебе экземпляр бота, создавай новый через Telegram и всё
Функция которая устнавливает таймауты может передавать бота аргументом в эти функции (также принимая его при вызове из index.js)
@shaymurzin @Meamone спасибо за советы. Понял, что есть варианты. А какой из них лучшая практика? 😀 Как правильнее делать?
Ну, имхо создавать объект бота под каждый вызов (или что у тебя там) — слишком
Логично. Еще раз спасибо.
Передавай тот что есть. Если не удобно при вызове аргументом его отправлять, функцию из которой хочешь получить доступ можно сделать классом и принять его в конструкторе. Получится примерно class Handler { constructor(bot) { this.bot = bot; } handle(...) { this.bot.send_message(...); } }
Понял. Спасибо.
Думаю Данил имел ввиду что-то такое: // telegram.js const { Telegram } = require('telegraf'); const telegram = new Telegram(process.env.TOKEN); module.exports = telegram; Так мы будем импортировать только объект с методами для работы с api, а не целого бота. Плюс нельзя будет сделать bot.telegram = null, к примеру
А, не знал что это разделено. Но я тогда скорее за то чтобы аргументом передавать этот объект
Спасибо. Попробую.
Обсуждают сегодня