I’m having trouble with my Telegram bot. It’s not sending messages like it used to. When I run my code, I get this error: RuntimeWarning: coroutine 'Bot.send_message' was never awaited
. I’m not sure what’s going wrong. Here’s a simple version of my code:
from telegram import Bot
my_token = '123abc'
chat = '456def'
msg = 'Hello World'
tg_bot = Bot(token=my_token)
tg_bot.send_message(chat_id=chat, text=msg)
Can someone help me figure out why this isn’t working? I thought I set it up correctly, but maybe I’m missing something important. Any tips or explanations would be really helpful!
I ran into a similar issue with my Telegram bot recently. The problem is likely related to asynchronous programming. In your code, you’re using the send_message
method synchronously, but it’s actually an asynchronous function.
To fix this, you need to use asyncio
and await
the send_message
call. Here’s how I modified my code to make it work:
import asyncio
from telegram import Bot
async def send_telegram_message():
my_token = '123abc'
chat = '456def'
msg = 'Hello World'
tg_bot = Bot(token=my_token)
await tg_bot.send_message(chat_id=chat, text=msg)
asyncio.run(send_telegram_message())
This approach resolved the RuntimeWarning for me and allowed the bot to send messages successfully. Give it a try and see if it helps with your bot as well.
The issue you’re facing is related to the asynchronous nature of the Telegram Bot API. The send_message
method is a coroutine, which means it needs to be awaited in an asynchronous context.
To resolve this, you’ll need to modify your code to use async/await syntax and run it within an event loop. Here’s a quick example of how you can adjust your script:
import asyncio
from telegram.ext import ApplicationBuilder
async def main():
my_token = '123abc'
chat = '456def'
msg = 'Hello World'
application = ApplicationBuilder().token(my_token).build()
await application.bot.send_message(chat_id=chat, text=msg)
if __name__ == '__main__':
asyncio.run(main())
This should resolve the RuntimeWarning and allow your bot to send messages properly. Make sure you have the latest version of python-telegram-bot installed for best compatibility.
hey oscar, i’ve had that prob too. it’s cuz telegram bot stuff is async now. gotta use async/await. try this:
import asyncio
from telegram import Bot
async def send_msg():
bot = Bot('123abc')
await bot.send_message('456def', 'Hello World')
asyncio.run(send_msg())
that should fix it for ya. lmk if u need more help!