Pyrogram start () висит после sign_in () - как структурировать несколько сеансов пользователя через Telegram Bot (без теPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Pyrogram start () висит после sign_in () - как структурировать несколько сеансов пользователя через Telegram Bot (без те

Сообщение Anonymous »

Я разрабатываю систему с использованием пирограммы, где несколько пользователей могут аутентифицировать свои собственные учетные записи Telegram непосредственно через Telegram Bot, отправляя свой номер телефона и код проверки через чат - без использования терминала. После входа в систему каждый сеанс начинает контролировать конкретный канал и сохранять все новые сообщения в базе данных MongoDB. Оттуда я могу перечислить каналы и копировать сообщения без проблем. сеанс; < /p>
Затем бот начинает контролировать отобранный пользователь канал. /> await message.Reply («Успешно проверить!») # Эта строка никогда не достигается < /p>
Что я хочу знать:
Кто -нибудь когда -нибудь создавал что -то похожее? Повесьте Afer_in () в этом сценарии? (Пользовательские боты со 100% аутентификацией через BOT, без терминала) < /p>

Код: Выделить всё

import pyrogram
from pyrogram import Client, filters
from pyrogram.enums import ChatMembersFilter
from pyrogram.errors import SessionPasswordNeeded, PhoneCodeInvalid, FloodWait
from pyrogram.types import InlineKeyboardMarkup, InlineKeyboardButton, ChatMemberUpdated

app = Client(
f'{Client_bot}',
api_id=getenv('TELEGRAM_API_ID'),
api_hash=getenv('TELEGRAM_API_HASH'),
bot_token=getenv(bot_token),
)

# retornar_usuario e escrever_usuario #receives and writes to the database

@app.on_message(filters.command("auth"))
async def auth_command(client, message):
id = message.chat.id
phone_number = retornar_usuario(id, "Usuario", "Telefone")

if not phone_number:
await message.reply("No phone number found.")
return

session_name = f"{SESSION_DIR}/{id}"
user_client = Client(
session_name,
api_id=getenv('TELEGRAM_API_ID'),
api_hash=getenv('TELEGRAM_API_HASH'),
phone_number=phone_number,
no_updates=False
)

escrever_usuario(id, 'Usuario', 'Config', 'code')
await message.reply("Please send the verification code you received on Telegram.")

try:
if os.path.exists(f"{session_name}.session"):
os.remove(f"{session_name}.session")

await user_client.connect()
code = await user_client.send_code(phone_number)

user_data[id] = {
"phone_number": phone_number,
"phone_code_hash": code.phone_code_hash,
"client": user_client,
"channels": [],
"active": False,
"connected": True
}

except Exception as e:
await message.reply(f"Error: {str(e)}")
await user_client.stop()

@app.on_message()
async def Query(client, message):
id = message.chat.id
messages = message.text

Config = retornar_usuario(id, 'Usuario', 'Config')
if Config == 'code':
user_client = user_data[id]["client"]
phone_number = user_data[id]["phone_number"]
phone_code_hash = user_data[id]["phone_code_hash"]

try:
await user_client.sign_in(phone_number, phone_code_hash, messages)
user_data[id]["active"] = True

# This is where it hangs
await user_client.start()

await message.reply("Authenticated successfully!")
escrever_usuario(id, 'Usuario', 'Config', 'authenticated')

except Exception as e:
await message.reply(f"Authentication error: {str(e)}")
await user_client.stop()
Если кто -то здесь построил что -то подобное или имеет предложения для стабильной структуры (используя асинсио, многопроцестрой, потоки или другие шаблоны), я бы очень признателен за вашу помощь!
Заранее!

Подробнее здесь: https://stackoverflow.com/questions/796 ... rbot-sessi
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»