@maksimka1011

RuntimeWarning: coroutine 'TelegramBaseClient.connect' was never awaited tclient.connect()?

Вообщем, хотел сделать скрипт, который парсил бы из нужного мне канала в Telegram в мой канал Discord через веб-хуки.
tclient = TelegramClient('session_name', api_id, api_hash)
tclient.connect()
if not tclient.is_user_authorized():
    tclient.send_code_request(phone)
    myself = tclient.sign_in(phone, input('Enter code: '))

lastmessage = 0
last_date = None
chunk_size = 20
chan_type = 'channel'
result = tclient(GetDialogsRequest(
                 offset_date=last_date,
                 offset_id=0,
                 offset_peer=InputPeerEmpty(),
                 limit=chunk_size
             ))
pp.pprint(result)


Вот такие ошибки:
C:\Users\Administrator\Desktop\ParserBot\telelooper.py:42: RuntimeWarning: coroutine 'TelegramBaseClient.connect' was never awaited
  tclient.connect()
RuntimeWarning: Enable tracemalloc to get the object allocation traceback
C:\Users\Administrator\Desktop\ParserBot\telelooper.py:43: RuntimeWarning: coroutine 'UserMethods.is_user_authorized' was never awaited
  if not tclient.is_user_authorized():
RuntimeWarning: Enable tracemalloc to get the object allocation traceback
Traceback (most recent call last):
  File "C:\Users\Administrator\Desktop\ParserBot\telelooper.py", line 51, in <module>
    result = tclient(GetDialogsRequest(
TypeError: __init__() missing 1 required positional argument: 'hash'
Connecting to Telegram...

Process finished with exit code 1
  • Вопрос задан
  • 1757 просмотров
Решения вопроса 1
@alegzz
tclient.connect()
if not tclient.is_user_authorized():
    tclient.send_code_request(phone)
    myself = tclient.sign_in(phone, input('Enter code: '))

вместо этой конструкции можно использовать await tclient.start() (или соответственно по предупреждением дописать await перед вызовом функций)

по методу GetDialogsRequest вот документация: https://tl.telethon.dev/methods/messages/get_dialo...
вообще, откуда этот метод взялся? у клиента нет вебхуков, это работает только для ботов (тут нужно понимать, что в Вашей ситуации используется именно соединение в качестве клиента - то есть для телеграма ваша программа как-будто телеграм клиент, а не бот). собственно, вот первая же страница манула для телетона для получения обновлений: https://docs.telethon.dev/en/latest/basic/updates....
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
phaggi
@phaggi Куратор тега Python
лужу, паяю, ЭВМы починяю
Вот эта строка, похоже, должна быть другой:
result = tclient(GetDialogsRequest(
                 offset_date=last_date,
                 offset_id=0,
                 offset_peer=InputPeerEmpty(),
                 limit=chunk_size
             ))


Тут экземпляр класса TelegramClient вызывается как будто создается экземпляр из экземпляра. Я не знаю, можно ли так, и что тут хотели сделать.

Возможно, просто забыли дописать вызов какого-то метода у tclient, к которому в скобках аргументы.

Что-нибудь типа:
result = tclient.some_method(GetDialogsRequest(
                 offset_date=last_date,
                 offset_id=0,
                 offset_peer=InputPeerEmpty(),
                 limit=chunk_size
             ))
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы