Skip to content

SecondThundeR/deko-voice-bot

Repository files navigation

Deko Voice Bot

Бот для отправки реплик deko от лица пользователя через Inline Query

Бот позволяет просматривать весь список реплик, доступных в базе данных, а также искать нужные с помощью текстового запроса

Note

Ссылка на "боевого" бота: https://t.me/dekoquotes_bot

Используемые технологии

  • Бот построен на Bun с использованием TypeScript
  • В качестве библиотеки для взаимодействия с Telegram Bot API используется grammY
  • Бот и база данных работают на хостинге Railway. Данные управляются с помощью Drizzle ORM
  • Строки сообщений и другого текста бота находятся в Fluent формате и обрабатываются с помощью плагина @grammyjs/i18n
  • Менюшки работают через плагин @grammyjs/menu и интерактивные диалоги через плагин @grammyjs/conversations

Как работает бот

В документации Telegram Bot API описана возможность отправки голосовых сообщений с помощью Inline двумя способами:

  • Передача file_id голосового сообщения
  • Передача ссылки на .ogg файл в удаленном хранилище

Во времена первой версии бота, реплики находились на Google Drive, откуда потом доставались прямые ссылки на каждую реплику и отправлялись в Telegram. В дальнейшем была добавлена возможность отправки реплик в формате .mp3 в чат с ботом для их автоматической конвертации и кеширования на сервере Telegram (в базу данных сохранялся только file_id)

Warning

Начиная с версии 3.6.0, возможность хранения голосовых реплик в удаленном хранилище была удалена в связи с большим потреблением сетевого трафика и потенциальных проблем с безопасностью

Если вы самостоятельно хостите бота, то перед обновлением замените все удаленные реплики на локальные через /voices -> Выбрать нужную реплику -> Нажать кнопку "Заменить ссылку на файл" -> Скинуть в чат .mp3 реплики

Для правильного кеширования реплик, лучше создать отдельный чат с ботом (или можно не создавать и использовать личные сообщения с ботом) и отправлять все файлы реплик туда. Таким образом file_id будет стабильным и работать корректно для пользователей

Как использовать исходники бота у себя

Tip

tl;dr скачайте исходники, настройте базу данных, заполните необходимые переменные в .env и запустите удобным образом

Подробная инструкция по полной настройке бота теперь находится здесь

Добавление новых реплик

Реплики в боте можно добавлять с помощью команды /newvoices и заранее заготовленных .mp3 файлов, которые будут сконвертированы ботом в нужный формат для голосовых сообщений

Как контрибьютить

А зачем? Ну ладно, если так хочется, то флоу очень прост: Форк -> Новая ветка от develop -> Вжух-вжух фича или фикс -> Пулл реквест

И желательно, использовать названия для коммитов из "Соглашений о коммитах", иначе коммиты будут смержены в один общий

Лицензия

Бот распространяется по лицензии MIT. Больше деталей в файле LICENSE

About

Бот для отправки реплик deko от лица пользователя через Inline Query

Topics

Resources

License

Stars

Watchers

Forks

Contributors