auth script

This commit is contained in:
kislovdm
2026-04-09 00:34:58 +03:00
parent 0857a6b869
commit e061c2e0f0
2 changed files with 61 additions and 3 deletions
+27 -3
View File
@@ -50,21 +50,45 @@
1. Скопировать шаблон:
- `copy .env.sample .env` (Windows)
2. Заполнить `.env` своими значениями.
3. Запустить:
3. Пройти аутентификацию Max (см. ниже).
4. Запустить:
- `docker compose up -d --build`
4. Логи:
5. Логи:
- `docker compose logs -f`
## Аутентификация Max
Перед запуском приложения необходимо пройти аутентификацию Max, чтобы создать сессионный файл.
### Локально (без Docker)
1. Убедиться, что `.env` заполнен, особенно `MAX_PHONE`.
2. Запустить скрипт аутентификации:
- `python auth.py`
3. Следовать инструкциям в консоли (ввод кода подтверждения и т.д.).
4. После успешной аутентификации сессионный файл сохранится в директории `MAX_WORK_DIR` (по умолчанию `cache`).
### В Docker
1. Запустить контейнер с интерактивной сессией:
- `docker compose run --rm max2telegram python auth.py`
2. Следовать инструкциям в консоли.
3. После завершения запустить основное приложение:
- `docker compose up -d`
## Запуск локально (без Docker)
1. Установить зависимости:
- `pip install -r src/requirements.txt`
2. Создать `.env` на основе `.env.sample`.
3. Запустить приложение:
3. Пройти аутентификацию Max:
- `python auth.py`
4. Запустить приложение:
- `python src/main.py`
## Структура проекта
- `auth.py` - скрипт аутентификации Max (создание сессии).
- `src/main.py` - точка входа, инициализация клиентов.
- `src/bridge.py` - основная логика маршрутизации и отправки.
- `src/telegram_api.py` - Telegram Bot API клиент.
+34
View File
@@ -0,0 +1,34 @@
import asyncio
import os
import sys
from dotenv import load_dotenv
from pymax import MaxClient
def main() -> None:
load_dotenv()
phone = os.getenv("MAX_PHONE", "").strip()
work_dir = os.getenv("MAX_WORK_DIR", "cache").strip() or "cache"
if not phone:
print("Error: MAX_PHONE environment variable is required", file=sys.stderr)
sys.exit(1)
client = MaxClient(phone=phone, work_dir=work_dir)
print(f"Starting Max authentication for {phone}")
print(f"Session will be stored in: {work_dir}")
async def _run() -> None:
await client.start()
print(f"Authentication successful!")
print(f"Me: {client.me.username or client.me.first_name} (id={client.me.id})")
print("Session file saved. You can now run the main application.")
await client.stop()
asyncio.run(_run())
if __name__ == "__main__":
main()