docs: add badges, LICENSE and improve README formatting

This commit is contained in:
Галингер Р.С.
2026-07-08 09:31:28 +07:00
parent 0f674f8832
commit 0432155c8f
2 changed files with 70 additions and 18 deletions
+49 -18
View File
@@ -1,21 +1,37 @@
# UMB — Telegram Bot
<div align="center">
Бот для модерации стикеров/GIF, восстановления раскладки, погоды и AI-ассистента "Астра".
# 🤖 UMB — Telegram Bot
## Функции
**Универсальный бот-модератор с AI-ассистентом "Астра"**
- **Модерация стикеров и GIF** — если пользователь отправляет 25+ стикеров/GIF за 60 секунд, бот удаляет все последующие стикеры и GIF от этого пользователя в течение 5 минут. Текстовые сообщения не затрагиваются.
- **Восстановление раскладки (`/res`)** — ответьте командой `/res` на сообщение с текстом в неправильной раскладке, и бот переведёт его (например, `gbdj``пиво`).
- **Погода (`/weather`)** — покажет подробную погоду в указанном городе через OpenWeatherMap API.
- **AI-ассистент "Астра" (`/ai`)** — задайте вопрос, ответьте командой `/ai` на сообщение или перешлите сообщение, и Astra проанализирует его с учётом контекста и ранее сохранённых выжимок диалогов.
- **Диалог с Астрой** — после `/ai` без вопроса начинается диалог. Отвечайте на сообщения бота, чтобы продолжать.
[![License: MIT](https://img.shields.io/badge/license-MIT-lightgrey.svg)](LICENSE)
[![Python 3.11](https://img.shields.io/badge/python-3.11-blue.svg)](https://www.python.org/)
[![aiogram 3.x](https://img.shields.io/badge/aiogram-3.x-2CA5E0.svg)](https://docs.aiogram.dev/)
[![SQLite](https://img.shields.io/badge/sqlite-async-003B57.svg)](https://www.sqlite.org/)
[![Docker](https://img.shields.io/badge/docker-ready-2496ED.svg)](https://www.docker.com/)
[![Tests](https://img.shields.io/badge/tests-pytest-brightgreen.svg)](tests/)
[![SOCKS5 Proxy](https://img.shields.io/badge/proxy-SOCKS5-orange.svg)](#настройка)
</div>
---
UMB — это Telegram-бот для модерации стикеров/GIF, восстановления раскладки, получения погоды и общения с AI-ассистентом **Астра**.
## ✨ Функции
- **🛡️ Модерация стикеров и GIF** — если пользователь отправляет 25+ стикеров/GIF за 60 секунд, бот удаляет все последующие стикеры и GIF от этого пользователя в течение 5 минут. Текстовые сообщения не затрагиваются.
- **⌨️ Восстановление раскладки (`/res`)** — ответьте командой `/res` на сообщение с текстом в неправильной раскладке, и бот переведёт его (например, `gbdj``пиво`).
- **🌤️ Погода (`/weather`)** — покажет подробную погоду в указанном городе через OpenWeatherMap API.
- **🤖 AI-ассистент "Астра" (`/ai`)** — задайте вопрос, ответьте командой `/ai` на сообщение или перешлите сообщение, и Astra проанализирует его с учётом контекста и ранее сохранённых выжимок диалогов.
- **💬 Диалог с Астрой** — после `/ai` без вопроса начинается диалог. Отвечайте на сообщения бота, чтобы продолжать.
- Фаза 1: до 50 сообщений.
- Фаза 2: дополнительно до 20 сообщений.
- После исчерпания лимита — перерыв 1 час.
- **Управление AI (`/aino`, `/aiyes`)** — владелец чата может заблокировать/разблокировать пользователя от AI.
- **Поддержка SOCKS5 прокси** — настраивается через `.env`.
- **🔒 Управление AI (`/aino`, `/aiyes`)** — владелец чата может заблокировать/разблокировать пользователя от AI.
- **🧦 Поддержка SOCKS5 прокси** — настраивается через `.env`.
## Структура проекта
## 🏗️ Структура проекта
```
umb/
@@ -53,7 +69,7 @@ umb/
└── logging_config.py # настройка логирования
```
## Установка
## 🚀 Установка
```bash
cd umb
@@ -62,7 +78,7 @@ source .venv/bin/activate
pip install -r requirements.txt
```
## Настройка
## ⚙️ Настройка
Откройте `.env` и укажите необходимые ключи:
@@ -83,14 +99,14 @@ AI_HEALTH_CHECK_INTERVAL=600
Для включения прокси установите `PROXY_ENABLED=true` и укажите корректный `PROXY_URL`.
## Запуск
## ▶️ Запуск
```bash
source .venv/bin/activate
python main.py
```
## Запуск в Docker
## 🐳 Запуск в Docker
```bash
docker compose up -d --build
@@ -98,7 +114,14 @@ docker compose up -d --build
Модели Whisper сохраняются в `./models`, база данных и логи — в `./bot/data`.
## Команды
## 🧪 Тесты
```bash
source .venv/bin/activate
pytest tests/ -v
```
## 📋 Команды
| Команда | Описание |
|---------|----------|
@@ -115,7 +138,7 @@ docker compose up -d --build
| `/ydf <ссылка>` | Скачать файл с Яндекс.Диска |
| `/ydf (new) <ссылка>` | Скачать файл, игнорируя кеш Telegram |
## Настройки модерации
## ⚖️ Настройки модерации
Изменяются в `config.py`:
@@ -123,7 +146,7 @@ docker compose up -d --build
- `MODERATION_WINDOW = 60` — окно подсчёта в секундах
- `MODERATION_BAN_DURATION = 300` — длительность бана в секундах
## AI-ассистент "Астра"
## 🧠 AI-ассистент "Астра"
- **Бесплатные модели** (OpenRouter): пробует по очереди доступные модели с суффиксом `:free`. При rate-limit автоматически переключается на следующую.
- **Платный fallback** (RouterAI): если все бесплатные модели недоступны, используется `deepseek/deepseek-v4-flash` через `routerai.ru`. В ответе добавляется уведомление `⚡ Обработано через платный API`.
@@ -131,3 +154,11 @@ docker compose up -d --build
- **Долгосрочная память**: при переходе между фазами диалога и при `/aiclear` создаётся краткая выжимка, которая затем подбирается по смыслу к новым вопросам.
- **Стиль**: отвечает кратко и по делу, если не просят развёрнуто.
- **Потеря контекста**: говорит что-то милое ("я потеряла мысль", "смотри, какая птичка!")
---
<div align="center">
Сделано с помощью [aiogram](https://docs.aiogram.dev/) · [SQLAlchemy](https://www.sqlalchemy.org/) · [faster-whisper](https://github.com/SYSTRAN/faster-whisper)
</div>