Бот для отправки реплик deko от лица пользователя через Inline Query
Бот позволяет просматривать весь список реплик, доступных в базе данных, а также искать нужные с помощью текстового запроса
Note
Ссылка на "боевого" бота: https://t.me/dekoquotes_bot
- Бот построен на Bun с использованием TypeScript
- В качестве библиотеки для взаимодействия с Telegram Bot API используется grammY
- Бот и база данных работают на хостинге Railway. Данные управляются с помощью Drizzle ORM
- Строки сообщений и другого текста бота находятся в Fluent формате и обрабатываются с помощью плагина @grammyjs/i18n
- Менюшки работают через плагин @grammyjs/auto-retry и интерактивные диалоги через плагин @grammyjs/conversations
В документации Telegram Bot API описана возможность отправки голосовых сообщений с помощью Inline двумя способами:
- Передача
file_id
голосового сообщения - Передача ссылки на .ogg файл в удаленном хранилище
Во времена первой версии бота, реплики находились на Google Drive, откуда потом доставались прямые ссылки на каждую реплику и отправлялись в Telegram, где они кешировались и отправлялись как сохраненные файлы на серверах Telegram
Сейчас существует возможность совмещения работы из старой версии и сохранение реплик как file_id
, в виду внедрения возможности добавления реплик через диалоги с ботом
Благодаря тому, что реплика может быть отправлена перед отправкой данных в БД, таким образом можно удостовериться, что реплика была сконвертирована корректно, и затем уже получить file_id
без необходимости отправлять их в сторонние чаты/каналы (так как чат с ботом это подходящее место для такого)
Не смотря на это, функциональность работы с внешними ссылками для реплик никуда не делась и она будет по-прежнему поддерживаться. Если нужно добавить реплику, которая находится в удаленном хранилище, можно использовать команду /newremotevoices
Стоит заметить, что добавление реплик через URL и через файл слегка отличаются
Реплика в удаленном хранилище должна уже быть заранее конвертирована в .ogg OPUS формат, так как не смотря на то, что бот может вполне скачивать реплики и конвертировать их как при отправке файла в личные сообщения, есть все же риск некорректной работы ввиду возможного получения битого, невалидного или скомпрометированного файла....даже если этой командой будет пользоваться один человек и это админ
Tip
tl;dr скачайте исходники, настройте базу данных, заполните необходимые переменные в .env
и запустите удобным образом
Подробная инструкция по полной настройке бота теперь находится здесь
Реплики в боте можно добавлять с помощью команд /newvoices
или /newremotevoices
Если использовать реплики через URL, то необходимо, чтобы они были заранее сконвертированы (см. последний абзац в разделе описания работы бота)
А зачем? Ну ладно, если так хочется, то флоу очень прост: Форк -> Новая ветка от develop -> Пулл реквест
И желательно, использовать названия для коммитов из "Соглашений о коммитах", иначе коммиты будут смержены в один общий
Бот распространяется по лицензии MIT. Больше деталей в файле LICENSE