✨ Реализована интерактивная авторизация UserBot через бот
- Создан модуль userbot_auth.py для управления авторизацией через Telethon - Добавлены обработчики для всех этапов авторизации (номер, SMS, 2FA) - Интегрирована авторизация в меню UserBot - Добавлена кнопка 🔐 Авторизация в главное меню UserBot - Полная обработка ошибок и подробные сообщения пользователю - Сессии сохраняются безопасно в PostgreSQL - Документация с примерами использования Этапы авторизации: 1. Пользователь нажимает 🔐 Авторизация в меню UserBot 2. Вводит номер телефона в формате +XX-XXX-XXX-XXXX 3. Получает SMS с кодом подтверждения (5 цифр) 4. При необходимости вводит пароль 2FA 5. Сессия автоматически сохраняется и UserBot готов к работе
This commit is contained in:
@@ -8,7 +8,21 @@ from app.database import AsyncSessionLocal
|
||||
from app.database.repository import GroupRepository
|
||||
from app.database.member_repository import GroupMemberRepository
|
||||
from app.utils.keyboards import CallbackType
|
||||
from app.handlers.userbot_auth import (
|
||||
auth_menu,
|
||||
auth_info,
|
||||
start_phone_input,
|
||||
handle_phone,
|
||||
handle_code,
|
||||
handle_password,
|
||||
cancel_auth,
|
||||
AUTH_START,
|
||||
AUTH_PHONE,
|
||||
AUTH_CODE,
|
||||
AUTH_PASSWORD,
|
||||
)
|
||||
import logging
|
||||
import os
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
@@ -34,6 +48,7 @@ async def userbot_menu(update: Update, context: ContextTypes.DEFAULT_TYPE) -> in
|
||||
<i>UserBot собирает информацию о группах и их участниках от имени пользователя</i>"""
|
||||
|
||||
keyboard = [
|
||||
[InlineKeyboardButton("🔐 Авторизация", callback_data="auth_menu")],
|
||||
[InlineKeyboardButton("⚙️ Настройки", callback_data="userbot_settings")],
|
||||
[InlineKeyboardButton("📥 Собрать группы", callback_data="userbot_collect_groups")],
|
||||
[InlineKeyboardButton("👥 Собрать участников", callback_data="userbot_collect_members")],
|
||||
@@ -435,6 +450,25 @@ async def userbot_parse_members(update: Update, context: ContextTypes.DEFAULT_TY
|
||||
return USERBOT_COLLECTING_MEMBERS
|
||||
|
||||
|
||||
# Экспорт функций авторизации для использования в других модулях
|
||||
__all__ = [
|
||||
'userbot_menu',
|
||||
'userbot_settings',
|
||||
'userbot_init',
|
||||
'userbot_collect_groups',
|
||||
'userbot_collect_members',
|
||||
'userbot_parse_members',
|
||||
'cancel_userbot',
|
||||
'auth_menu',
|
||||
'auth_info',
|
||||
'start_phone_input',
|
||||
'handle_phone',
|
||||
'handle_code',
|
||||
'handle_password',
|
||||
'cancel_auth',
|
||||
]
|
||||
|
||||
|
||||
async def cancel_userbot(update: Update, context: ContextTypes.DEFAULT_TYPE) -> int:
|
||||
"""Отмена диалога"""
|
||||
query = update.callback_query
|
||||
|
||||
Reference in New Issue
Block a user