auth script
This commit is contained in:
@@ -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 клиент.
|
||||
|
||||
@@ -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()
|
||||
Reference in New Issue
Block a user