https://github.com/secondthunder/deko-voice-bot
Бот для отправки реплик deko от лица пользователя через Inline Query
https://github.com/secondthunder/deko-voice-bot
deko deno grammyjs mongodb railway telegram-bot-api typescript
Last synced: about 2 months ago
JSON representation
Бот для отправки реплик deko от лица пользователя через Inline Query
- Host: GitHub
- URL: https://github.com/secondthunder/deko-voice-bot
- Owner: SecondThundeR
- License: mit
- Created: 2023-10-21T23:36:29.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-11-29T19:09:49.000Z (over 1 year ago)
- Last Synced: 2025-01-24T04:44:39.009Z (over 1 year ago)
- Topics: deko, deno, grammyjs, mongodb, railway, telegram-bot-api, typescript
- Language: TypeScript
- Homepage: https://t.me/dekoquotes_bot
- Size: 866 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Deko Voice Bot
Бот для отправки реплик [deko](https://liquipedia.net/counterstrike/Deko) от лица пользователя через [Inline Query](https://core.telegram.org/bots/features#inline-requests)
Бот позволяет просматривать весь список реплик, доступных в базе данных, а также искать нужные с помощью текстового запроса
> [!NOTE]
> Ссылка на "боевого" бота:
## Используемые технологии
- Бот построен на [Bun](https://bun.sh/) с использованием [TypeScript](https://www.typescriptlang.org/)
- В качестве библиотеки для взаимодействия с Telegram Bot API используется [grammY](https://github.com/grammyjs/grammY/)
- Бот и база данных работают на хостинге [Railway](https://railway.app/). Данные управляются с помощью [Drizzle ORM](https://orm.drizzle.team/)
- Строки сообщений и другого текста бота находятся в [Fluent](https://projectfluent.org/) формате и обрабатываются с помощью плагина [@grammyjs/i18n](https://grammy.dev/plugins/i18n/)
- Менюшки работают через плагин [@grammyjs/menu](https://grammy.dev/plugins/menu) и интерактивные диалоги через плагин [@grammyjs/conversations](https://grammy.dev/plugins/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` и запустите удобным образом
Подробная инструкция по полной настройке бота теперь находится [здесь](https://github.com/SecondThundeR/deko-voice-bot/wiki/%D0%A1%D0%BA%D0%B0%D1%87%D0%B8%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5,-%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0-%D0%B8-%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D0%BA-%D0%B1%D0%BE%D1%82%D0%B0)
### Добавление новых реплик
Реплики в боте можно добавлять с помощью команды `/newvoices` и заранее заготовленных .mp3 файлов, которые будут сконвертированы ботом в нужный формат для голосовых сообщений
## Как контрибьютить
А зачем? Ну ладно, если так хочется, то флоу очень прост: Форк -> Новая ветка от develop -> Вжух-вжух фича или фикс -> Пулл реквест
И желательно, использовать названия для коммитов из ["Соглашений о коммитах"](https://www.conventionalcommits.org/ru/v1.0.0/), иначе коммиты будут смержены в один общий
## Лицензия
Бот распространяется по лицензии MIT. Больше деталей в файле [LICENSE](/LICENSE)