3.2 KiB
3.2 KiB
CodeReview Bot (MVP)
Реализовано в текущем MVP:
- Регистрация в Telegram:
/register <git_email> <gitea_login> - Период недоступности:
/away <YYYY-MM-DD> <YYYY-MM-DD> - Webhook Gitea по PR:
- при создании PR без ревьюера бот назначает доступного участника с минимальной нагрузкой
- ставит метку
auto-assigned(best effort) - отправляет уведомление назначенному ревьюеру в личные сообщения Telegram
- Ежедневное напоминание в общее время
REMINDER_TIME(по умолчанию09:00) - Техническая проверка сервиса:
GET /health
Запуск
python -m venv .venv
. .venv/Scripts/activate
pip install -r requirements.txt
uvicorn main:app --host 0.0.0.0 --port 8080 --reload --env-file .env
Переменные окружения
TELEGRAM_BOT_TOKEN- обязательноGITEA_BASE_URL- обязательно для назначения ревьюера, напримерhttps://git.example.comGITEA_TOKEN- обязательно для назначения/метокGITEA_WEBHOOK_SECRET- необязательно, но рекомендуетсяREMINDER_TIME- необязательно, по умолчанию09:00AUTO_ASSIGNED_LABEL- необязательно, по умолчаниюauto-assignedALLOW_SELF_ASSIGN- необязательно, по умолчаниюfalse(для локального теста можноtrue)BOT_DB_PATH- необязательно, по умолчаниюbotreviewer.sqlite3
Webhook-эндпоинты
- Обновления Telegram:
POST /telegram/webhook - Webhook Gitea:
POST /gitea/webhook
Для Telegram укажите URL вашего сервиса с путем /telegram/webhook.
Для Gitea включите события pull_request и задайте общий секрет.
Локальная разработка через Tuna
Если бот запущен локально, Gitea/Telegram не смогут достучаться до localhost без туннеля.
- Запустите бота:
uvicorn main:app --host 0.0.0.0 --port 8080 --reload --env-file .env
- Поднимите туннель в Tuna(https://my.tuna.am/) на локальный порт
8080и получите публичный URL, например:
https://example.ru.tuna.am
- Проверьте доступность сервиса:
https://example.ru.tuna.am/health
- Настройте webhook в Gitea:
- Target URL:
https://example.ru.tuna.am/gitea/webhook - Method:
POST - Content Type:
application/json - Secret: тот же, что в
GITEA_WEBHOOK_SECRET - Events:
Pull Request(Custom Events)
- Настройте webhook в Telegram:
https://api.telegram.org/bot<TELEGRAM_BOT_TOKEN>/setWebhook?url=https://example.ru.tuna.am/telegram/webhook
- Проверьте, что webhook установлен:
https://api.telegram.org/bot<TELEGRAM_BOT_TOKEN>/getWebhookInfo