An open API service indexing awesome lists of open source software.

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

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)