skip to Main Content

I have a problem about file messages in python telegram bot. How can I receive file and read that file ? Or save it.

2

Answers


  1. You can:

    • Register a handler that listens to Document
    • get File object from the update (inside the listener using get_file)
    • then simply call .download() to download the document

    Here a sample code to get you started:

    from telegram.ext import Updater, MessageHandler, Filters
    
    BOT_TOKEN = ' ... '
    
    def downloader(update, context):
        context.bot.get_file(update.message.document).download()
    
        # writing to a custom file
        with open("custom/file.doc", 'wb') as f:
            context.bot.get_file(update.message.document).download(out=f)
    
    
    updater = Updater(BOT_TOKEN, use_context=True)
    
    updater.dispatcher.add_handler(MessageHandler(Filters.document, downloader))
    
    updater.start_polling()
    updater.idle()
    
    Login or Signup to reply.
  2. Here is some changes for python-telegram-bot v20.

    from telegram.ext import Application, MessageHandler, filters
    
    
    async def downloader(update, context):
        file = await context.bot.get_file(update.message.document)
        await file.download_to_drive('file_name')
    
    
    
    def main() -> None:
        application = Application.builder().token('BOT_TOKEN').build()
    
        application.add_handler(MessageHandler(filters.Document.ALL, downloader))
    
        application.run_polling()
    
    if __name__ == '__main__':
        main()
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search