Задать вопрос
@neuro4live

Как использовать Telethon в потоках?

Здравствуйте! Мне необходимо используя flask написать приложение, которое будет пользователю отправлять сообщение в телеграмм. Для работы с телеграмом решил использовать библиотеку Telethon. При вызове функции отправки сообщения, программа выдает ошибку There is no current event loop in thread 'Thread-1'
В официальной документации есть пример, работы телесон с потоками

import asyncio
import threading

async def actual_work():
    client = TelegramClient(..., loop=loop)
    ...  # can use `await` here

def go():
    asyncio.run(actual_work())

threading.Thread(target=go).start()


В моём случае программа выдает такую-же ошибку... Знаю что лучше не использовать асинхронный код в потоках, но всё-же пожалуйста подскажите как решить данную проблему. Вот мой код, который я пытался использовать для запуска асинхронного кода в потоках. Заранее спасибо

from telethon import TelegramClient
import asyncio
import threading

loop=asyncio.new_event_loop()
api_id = 11111111
api_hash = '911111111111'
client = TelegramClient('puat_notification.session', api_id, api_hash, loop=loop)





async def send_message():

    await client.send_message('+7901111', '123')





def go():
    with client:
        asyncio.run(send_message())


threading.Thread(target=go).start()
  • Вопрос задан
  • 1956 просмотров
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 1
@neuro4live Автор вопроса
Всем спасибо. Разобрался сам.
Может кому пригодится:
from telethon import TelegramClient
import asyncio
import threading







async def send_message():
    loop = asyncio.new_event_loop()
    api_id = 555
    api_hash = '555555555'
    client = TelegramClient('55555555.session', api_id, api_hash, loop=loop)
    async with client:
        await client.send_message('+55555555', '123')





def go():
    asyncio.run(send_message())


threading.Thread(target=go).start()
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы