在另一个函数中使用异步函数

时间:2021-03-03 17:27:23

标签: async-await telethon

我正在尝试了解如何在另一个函数中使用异步函数:

每当我的代码发生某些事情时,我都会尝试通过 Telegram 发送消息。

电报记录器:

from telethon import TelegramClient, sync
import asyncio

async def msgtelegram(entity, msg,api_id=xxx, api_hash='xx'):
    
    client = TelegramClient('Session', api_id, api_hash)
    await client.start()
    
    if not await client.is_user_authorized(): 
        await client.sign_in('xxx')
   
    await client.send_message(entity, msg)


    await client.disconnect()

def func():
    try:
        print('hello!')
    except:
        await msgtelegram(entity, msg)

在函数外调用 await msgtelegram() 似乎可以正常工作。 是我遗漏了什么还是我使用了错误的异步?

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用 asyncio.run()loop.run_until_complete(),例如

from telethon import TelegramClient, sync
import asyncio

async def msgtelegram(entity, msg,api_id=xxx, api_hash='xx'):
    
    client = TelegramClient('Session', api_id, api_hash)
    await client.start()
    
    if not await client.is_user_authorized(): 
        await client.sign_in('xxx')
   
    await client.send_message(entity, msg)


    await client.disconnect()

def func():
    try:
        print('hello!')
    except:
        asyncio.run(msgtelegram(entity, msg))