docs: add badges, LICENSE and improve README formatting
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2026 UMB Bot Contributors
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
@@ -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)
|
||||
[](https://www.python.org/)
|
||||
[](https://docs.aiogram.dev/)
|
||||
[](https://www.sqlite.org/)
|
||||
[](https://www.docker.com/)
|
||||
[](tests/)
|
||||
[](#настройка)
|
||||
|
||||
</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>
|
||||
|
||||
Reference in New Issue
Block a user