{"id":21521068,"url":"https://github.com/secondthunder/deko-voice-bot","last_synced_at":"2026-05-03T03:02:58.035Z","repository":{"id":202835069,"uuid":"708234100","full_name":"SecondThundeR/deko-voice-bot","owner":"SecondThundeR","description":"Бот для отправки реплик deko от лица пользователя через Inline Query","archived":false,"fork":false,"pushed_at":"2024-11-29T19:09:49.000Z","size":887,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-24T04:44:39.009Z","etag":null,"topics":["deko","deno","grammyjs","mongodb","railway","telegram-bot-api","typescript"],"latest_commit_sha":null,"homepage":"https://t.me/dekoquotes_bot","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SecondThundeR.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-10-21T23:36:29.000Z","updated_at":"2024-11-29T19:09:09.000Z","dependencies_parsed_at":"2024-03-10T12:24:22.542Z","dependency_job_id":"e58e9473-af9c-4a48-a279-3fcf9083650b","html_url":"https://github.com/SecondThundeR/deko-voice-bot","commit_stats":null,"previous_names":["secondthunder/deko-voice-bot"],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SecondThundeR%2Fdeko-voice-bot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SecondThundeR%2Fdeko-voice-bot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SecondThundeR%2Fdeko-voice-bot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SecondThundeR%2Fdeko-voice-bot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SecondThundeR","download_url":"https://codeload.github.com/SecondThundeR/deko-voice-bot/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244075649,"owners_count":20393980,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["deko","deno","grammyjs","mongodb","railway","telegram-bot-api","typescript"],"created_at":"2024-11-24T01:05:39.234Z","updated_at":"2026-05-03T03:02:57.993Z","avatar_url":"https://github.com/SecondThundeR.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Deko Voice Bot\n\nБот для отправки реплик [deko](https://liquipedia.net/counterstrike/Deko) от лица пользователя через [Inline Query](https://core.telegram.org/bots/features#inline-requests)\n\nБот позволяет просматривать весь список реплик, доступных в базе данных, а также искать нужные с помощью текстового запроса\n\n\u003e [!NOTE]\n\u003e Ссылка на \"боевого\" бота: \u003chttps://t.me/dekoquotes_bot\u003e\n\n## Используемые технологии\n\n- Бот построен на [Bun](https://bun.sh/) с использованием [TypeScript](https://www.typescriptlang.org/)\n- В качестве библиотеки для взаимодействия с Telegram Bot API используется [grammY](https://github.com/grammyjs/grammY/)\n- Бот и база данных работают на хостинге [Railway](https://railway.app/). Данные управляются с помощью [Drizzle ORM](https://orm.drizzle.team/)\n- Строки сообщений и другого текста бота находятся в [Fluent](https://projectfluent.org/) формате и обрабатываются с помощью плагина [@grammyjs/i18n](https://grammy.dev/plugins/i18n/)\n- Менюшки работают через плагин [@grammyjs/menu](https://grammy.dev/plugins/menu) и интерактивные диалоги через плагин [@grammyjs/conversations](https://grammy.dev/plugins/conversations)\n\n## Как работает бот\n\nВ документации Telegram Bot API описана возможность отправки голосовых сообщений с помощью Inline двумя способами:\n\n- Передача `file_id` голосового сообщения\n- Передача ссылки на .ogg файл в удаленном хранилище\n\nВо времена первой версии бота, реплики находились на Google Drive, откуда потом доставались прямые ссылки на каждую реплику и отправлялись в Telegram. В дальнейшем была добавлена возможность отправки реплик в формате .mp3 в чат с ботом для их автоматической конвертации и кеширования на сервере Telegram (в базу данных сохранялся только `file_id`)\n\n\u003e [!WARNING]\n\u003e\n\u003e Начиная с версии 3.6.0, возможность хранения голосовых реплик в удаленном хранилище была удалена в связи с большим потреблением сетевого трафика и потенциальных проблем с безопасностью\n\u003e\n\u003e Если вы самостоятельно хостите бота, то перед обновлением замените все удаленные реплики на локальные через `/voices` -\u003e Выбрать нужную реплику -\u003e Нажать кнопку \"Заменить ссылку на файл\" -\u003e Скинуть в чат .mp3 реплики\n\nДля правильного кеширования реплик, лучше создать отдельный чат с ботом (или можно не создавать и использовать личные сообщения с ботом) и отправлять все файлы реплик туда. Таким образом `file_id` будет стабильным и работать корректно для пользователей\n\n## Как использовать исходники бота у себя\n\n\u003e [!TIP]\n\u003e tl;dr скачайте исходники, настройте базу данных, заполните необходимые переменные в `.env` и запустите удобным образом\n\nПодробная инструкция по полной настройке бота теперь находится [здесь](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)\n\n### Добавление новых реплик\n\nРеплики в боте можно добавлять с помощью команды `/newvoices` и заранее заготовленных .mp3 файлов, которые будут сконвертированы ботом в нужный формат для голосовых сообщений\n\n## Как контрибьютить\n\nА зачем? Ну ладно, если так хочется, то флоу очень прост: Форк -\u003e Новая ветка от develop -\u003e Вжух-вжух фича или фикс -\u003e Пулл реквест\n\nИ желательно, использовать названия для коммитов из [\"Соглашений о коммитах\"](https://www.conventionalcommits.org/ru/v1.0.0/), иначе коммиты будут смержены в один общий\n\n## Лицензия\n\nБот распространяется по лицензии MIT. Больше деталей в файле [LICENSE](/LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsecondthunder%2Fdeko-voice-bot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsecondthunder%2Fdeko-voice-bot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsecondthunder%2Fdeko-voice-bot/lists"}