relayer.py
async def send_gift(username, gift_id=config.teddy_id):
client = TelegramClient(session_name, api_id, api_hash)
client.start(phone=config.phone, password=config.two_factor)
try:
receiver_peer = await client.get_input_entity(username)
print(receiver_peer)
invoice = InputInvoiceStarGift(
peer=receiver_peer,
gift_id=gift_id
)
print(f"Generated Invoice: {invoice}")
payment_form = client(functions.payments.GetPaymentFormRequest(invoice=invoice))
if payment_form:
print("Payment form retrieved successfully!")
payment_result = client(functions.payments.SendStarsFormRequest(
form_id=payment_form.form_id,
invoice=invoice
))
print(f"Payment successful: {payment_result.stringify()}")
except Exception as e:
print(f"An error occurred: {e}")
Esta é uma função que envia o ursinho de pelúcia para o nome de usuário fornecido. Funciona perfeitamente sem definir a função send_gift(), mas preciso tornar essa função invocável a partir de um script diferente (o relayer.py nunca é executado como main ). Há um problema "Não é possível enviar solicitações enquanto estiver desconectado". Acho que posso estar usando client.start() errado aqui. Agradeceria qualquer conselho!
O Asyncio já deve estar mostrando um aviso, client.start() no contexto async deve ser
await
editado, pois o loop de eventos já está em execução.Além disso, o telefone e a senha que você está passando são inúteis no contexto de script. Você deve fazer login na conta e criar uma sessão antes, o que, nesse caso, será ignorado.
Todas as chamadas de client() também devem ser
await
editadas.Consulte a documentação