DR8002
DR8002

Reputation: 123

How can I receive file in python-telegram-bot?

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

Upvotes: 10

Views: 16580

Answers (2)

jak bin
jak bin

Reputation: 502

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()

Upvotes: 6

Tibebes. M
Tibebes. M

Reputation: 7538

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()

Upvotes: 11

Related Questions