Skip to content

jacurlive/quran_bot

Repository files navigation

🕌 Quran Bot

Telegram-бот и мини-приложение для прослушивания Священного Корана. Поддерживает русский и узбекский языки.

Возможности

Бот

  • 🎙 5 чтецов на выбор через inline-режим
  • 📖 Поиск сур по номеру (3) и аятов (6:12)
  • ⚡ Кэширование аудио — повторные запросы мгновенны
  • 🔀 Навигация вперёд/назад между сурами и аятами
  • 🔗 Кнопка поделиться — отправить аудио в любой чат
  • 🌍 Два языка интерфейса: русский и узбекский
  • 📊 Команда /stats для администратора
  • 📤 Команда /broadcast для рассылки всем пользователям

Мини-приложение (Mini App)

  • 🌙 Тёмная тема по умолчанию (с переключением на светлую)
  • 📜 Два режима просмотра: по сурам и по аятам
  • 🎵 Встроенный плеер в стиле Spotify/Яндекс.Музыки с анимацией диска
  • ❤️ Избранное — суры и аяты сохраняются локально
  • ⏱ Таймер автовыключения с круговым циферблатом
  • 🔄 Автопереход к следующей суре после завершения
  • 💾 Сохранение выбранного чтеца между сессиями
  • 🕌 Арабский текст + перевод на выбранном языке для каждого аята

Чтецы

# Имя
1 Мишари Рашид Аль-Афаси
2 Абу Бакр Аш-Шатри
3 Насер Аль-Катами
4 Ясир Аль-Досари
5 Хани Ар-Рифаи

Технологии

  • aiogram 3 — Telegram Bot API
  • Pyrogram — загрузка больших файлов (>50 МБ) через user-клиент
  • asyncpg — асинхронный драйвер PostgreSQL
  • aiohttp — HTTP-запросы к Quran API
  • quranapi.pages.dev — аудио файлы
  • alquran.cloud — переводы аятов (ru.kuliev, uz.sodik)
  • Telegram Mini App (Vanilla JS) — фронтенд без фреймворков

Установка

1. Клонировать репозиторий

git clone https://github.com/jacurlive/quran_bot.git
cd quran_bot

2. Создать виртуальное окружение и установить зависимости

python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt

3. Настроить переменные окружения

cp .env.example .env

Заполнить .env:

BOT_TOKEN=          # токен от @BotFather
DATABASE_URL=       # postgresql://user:pass@localhost/dbname

API_ID=             # api_id с my.telegram.org
API_HASH=           # api_hash с my.telegram.org
PHONE=              # номер телефона аккаунта (+998...)
STORAGE_CHANNEL_ID= # ID канала для хранения аудио
ADMIN_ID=           # ваш Telegram user ID

4. Создать канал-хранилище

Создайте приватный Telegram-канал, добавьте туда аккаунт Pyrogram как администратора. ID канала вставьте в STORAGE_CHANNEL_ID.

5. Запустить бота

python bot.py

При первом запуске Pyrogram запросит код подтверждения из SMS.

Использование

Команда / действие Описание
/start Запуск бота, выбор языка
/language Сменить язык
3 Получить суру №3 целиком
6:12 Получить аят 12 из суры 6
/stats Статистика (только админ)
/broadcast текст Рассылка всем (только админ)

Структура проекта

quran_bot/
├── bot.py                  # точка входа
├── config.py               # конфигурация из .env
├── locales.py              # тексты на ru/uz
├── database/
│   ├── db.py               # подключение и инициализация БД (PostgreSQL)
│   └── models.py           # функции работы с данными
├── handlers/
│   ├── start.py            # /start, /language
│   ├── reciter.py          # inline выбор чтеца, поделиться
│   ├── quran.py            # поиск сур и аятов, навигация
│   └── admin.py            # /stats, /broadcast
├── keyboards/
│   └── keyboards.py        # клавиатуры
├── services/
│   ├── quran_api.py        # запросы к Quran API
│   └── uploader.py         # загрузка аудио через Pyrogram
├── miniapp/
│   └── index.html          # Telegram Mini App (один файл)
├── .env.example
├── requirements.txt
└── README.md

About

Telegram bot for listening to the Holy Quran

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors