Files
batch-bot/auth.py
bilal a18ad30961 Initial commit: Batch Bot - Telegram Comment Bot
0.0.1
Features:
- Multi-account support via session files
- AI comments generation via Ollama (local LLM)
- Telegram bot for moderation (approve/reject/regenerate)
- Docker support (controller + worker)
- Auto-join public groups
- Comment regeneration on group re-add
- Statistics tracking

Tech stack:
- Python 3.11
- Telethon 1.34 (Telegram user client)
- Aiogram 3.4 (Telegram bot framework)
- SQLite (Database)
- Docker & Docker Compose
- Ollama (Local LLM)
2026-02-24 04:40:07 +03:00

131 lines
4.4 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env python3
"""
Скрипт для создания сессии Telegram
Запустите этот скрипт для авторизации и создания файла сессии
"""
import asyncio
import os
import sys
from pathlib import Path
from dotenv import load_dotenv
from loguru import logger
from telethon import TelegramClient
from telethon.sessions import StringSession
# Настройка логирования
logger.remove()
logger.add(
sys.stdout,
format="<green>{time:YYYY-MM-DD HH:mm:ss}</green> | <level>{level: <8}</level> | <level>{message}</level>",
level="INFO"
)
logger.add(
"logs/auth.log",
rotation="1 day",
retention="7 days",
level="DEBUG"
)
# Загрузка переменных окружения
load_dotenv()
# Конфигурация
API_ID = int(os.getenv("TELEGRAM_API_ID", "0"))
API_HASH = os.getenv("TELEGRAM_API_HASH", "")
PHONE = os.getenv("TELEGRAM_PHONE", "")
SESSIONS_DIR = Path("sessions")
async def main():
"""Создание сессии"""
try:
# Проверка конфигурации
if not all([API_ID, API_HASH]):
logger.error("❌ TELEGRAM_API_ID и TELEGRAM_API_HASH должны быть заданы в .env")
return
# Создаём директорию для сессий
SESSIONS_DIR.mkdir(exist_ok=True)
logger.info("🔐 Telegram Session Creator")
logger.info("=" * 40)
logger.info(f"API ID: {API_ID}")
logger.info(f"API Hash: {'*' * len(API_HASH) if API_HASH else 'Не задан'}")
logger.info(f"Phone: {PHONE or 'Будет запрошен'}")
logger.info("=" * 40)
# Запрос телефона если не задан
phone = PHONE
if not phone:
phone = input("📱 Введите номер телефона (с +7): ").strip()
# Создаём клиента
client = TelegramClient(
StringSession(),
API_ID,
API_HASH,
device_model="comment_bot",
system_version="Linux",
app_version="1.0",
lang_code="ru"
)
logger.info("Подключение к Telegram...")
await client.connect()
if not await client.is_user_authorized():
logger.info("Отправка кода подтверждения...")
try:
await client.send_code_request(phone)
except Exception as e:
logger.error(f"Ошибка отправки кода: {e}")
return
# Ввод кода
code = input("📲 Введите код из Telegram: ").strip()
try:
await client.sign_in(phone, code)
except Exception as e:
if "PASSWORD" in str(e):
# Запрос 2FA пароля
password = input("🔒 Введите 2FA пароль: ").strip()
await client.sign_in(password=password)
else:
logger.error(f"Ошибка входа: {e}")
return
# Получаем информацию о пользователе
me = await client.get_me()
logger.info(f"✅ Успешная авторизация: {me.first_name} @{me.username or 'no_username'}")
# Сохраняем сессию
session_string = client.session.save()
session_filename = f"user_{me.id}.session"
session_path = SESSIONS_DIR / session_filename
with open(session_path, 'w', encoding='utf-8') as f:
f.write(session_string)
logger.info(f"💾 Сессия сохранена: {session_path}")
logger.info("")
logger.info("Следующие шаги:")
logger.info("1. Скопируйте файл сессии в папку sessions/")
logger.info("2. Запустите бота: python bot/controller.py")
logger.info("3. Запустите воркера: python bot/worker.py")
await client.disconnect()
except KeyboardInterrupt:
logger.info("\n❌ Отменено пользователем")
except Exception as e:
logger.error(f"❌ Ошибка: {e}")
raise
if __name__ == "__main__":
asyncio.run(main())