Search code examples
botstelegrampython-telegram-bot

Pretending that telegram bot is typing?


How can I make a bot to pretend that it is typing a message?

The following text appears in the chat when the bot pretend to type:

enter image description here

I use the python aiogram framework but a suggestion for the native Telegram API would be also helpful.


Solution

  • I seriously suggest using the python-telegram-bot library which has an extensive Wiki. The solution for what you want is described in code snippets.

    You can manually send the action:

    bot.send_chat_action(chat_id=chat_id, action=telegram.ChatAction.TYPING)
    

    Or create a decorator which can then be used on any function you wish to show that action on whilst processing:

    from functools import wraps
    from telegram import (ChatAction)
    
    def send_typing_action(func):
        """Sends typing action while processing func command."""
    
        @wraps(func)
        def command_func(update, context, *args, **kwargs):
            context.bot.send_chat_action(chat_id=update.effective_message.chat_id, action=ChatAction.TYPING)
            return func(update, context,  *args, **kwargs)
    
        return command_func
    
    @send_typing_action
    def my_handler(update, context):
        pass # Will send 'typing' action while processing the request.