Telethon verions 1.11.3 с python 3.7.3 не работает - PullRequest
0 голосов
/ 28 марта 2020

При попытке использовать следующий код в Telethon 1.11.3, python 3.7.3

from telethon import TelegramClient

api_id = xxx #i give my id
api_hash = xxx##i give my 
client = TelegramClient(name, api_id, api_hash)

async def main():

    # Now you can use all client methods listed below, like for example...
    await client.send_message('me', 'Hello to myself!')

with client:
    client.loop.run_until_complete(main())

Я получаю сообщение об ошибке как RuntimeError: Вы должны использовать «asyn c с», если событие l oop работает (т.е. вы находитесь внутри "asyn c def")

1 Ответ

2 голосов
/ 28 марта 2020

Проблема не в самом коде, а в используемой вами оболочке. I Python и аналогичные команды запускают событие asyncio l oop, которое нарушает sync magi c.

Telethon. Чтобы обойти это, вы можете использовать обычную оболочку python или запись async и await в нужных местах:

from telethon import TelegramClient

api_id = ...
api_hash = ...
client = TelegramClient(name, api_id, api_hash)

async def main():
    # Now you can use all client methods listed below, like for example...
    await client.send_message('me', 'Hello to myself!')

# Note the async and await keywords
async with client:
    await main()

Конечно, в этом сценарии main() на самом деле также не требуется:

async with client:
    await client.send_message('me', 'Hello to myself!')
...