skip to Main Content

I have a class PersonalMessage with a function sendPersonalMessage that sends a message to a user in telegram.

class PersonalMessage:
def __init__(self):
    self.api_id = api_id,
    self.api_hash = api_hash,
    self.token = token,
    self.user_id_1 = user_id_1,
    self.phone = phone

async def sendPersonalMessage(self, message, user_id):
    client = TelegramClient('session', api_id, api_hash)
    await client.connect()
    if not client.is_user_authorized():
        await client.send_code_request(phone)
        await client.sign_in(phone, input('Enter the code: '))
    try:
        receiver = InputPeerUser(user_id, 0)
        await client.send_message(receiver, message, parse_mode='html')
    except Exception as e:
        print(e)
    client.disconnect()

when I try to call the function in the main .py file like this:

elif there_exists(['send', 'send']):
    speak("What should I send?")
    response = takeCommand()
    PersonalMessage().sendPersonalMessage(response, user_id_1)

it gives me this error: RuntimeWarning: coroutine 'PersonalMessage().sendPersonalMessage(response, user_id_1)' was never awaited

2

Answers


  1. Chosen as BEST ANSWER

    I got it I just had to import asyncio and wrap the function like this:

    elif there_exists(['send', 'send']):
        speak("What should I send?")
        response = takeCommand()
        asyncio.run(PersonalMessage().sendPersonalMessage(response, user_id_1))
        speak("Message sent successfully")
    

  2. You should probably do await PersonalMessage().sendPersonalMessage(response, user_id_1) instead of using asyncio.run to execute this individual coroutine, unless you want to lose the benefits of using asyncio (ability to run other coroutines concurrently).

    asyncio.run should be the entry point of your whole program, and all your functions dealing with I/O should be declared as async def. The answers here and here elaborate a bit further.

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search