Skip to content

Instantly share code, notes, and snippets.

@tamyiuchau
Created October 31, 2018 14:50

Revisions

  1. tamyiuchau created this gist Oct 31, 2018.
    80 changes: 80 additions & 0 deletions bot.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,80 @@
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    #
    # Simple Bot to reply to Telegram messages
    # This program is dedicated to the public domain under the CC0 license.
    """
    This Bot uses the Updater class to handle the bot.
    First, a few handler functions are defined. Then, those functions are passed to
    the Dispatcher and registered at their respective places.
    Then, the bot is started and runs until we press Ctrl-C on the command line.
    Usage:
    Basic Echobot example, repeats messages.
    Press Ctrl-C on the command line or send a signal to the process to stop the
    bot.
    """

    from telegram.ext import Updater, CommandHandler, MessageHandler, Filters
    import logging
    from telegram.file import File

    TOKEN = "{secrete}"
    # Enable logging
    logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
    level=logging.INFO)

    logger = logging.getLogger(__name__)


    #commands
    def start(bot, update):
    update.message.reply_text('This bot save file to kindle')


    def help(bot, update):
    update.message.reply_text('Send a file')


    def echo(bot, update):
    update.message.reply_text(update.message.text)

    def save(bot, update):
    #save to coresponding directory
    bot.getFile(update.message.document.file_id,60*5).download('../../documents/'+update.message.document.file_name)
    update.message.reply_text(update.message.document.file_name+" is saved")


    def error(bot, update, error):
    logger.warn('Update "%s" caused error "%s"' % (update, error))


    def main():
    # Create the EventHandler and pass it your bot's token.
    updater = Updater(TOKEN)

    # Get the dispatcher to register handlers
    dp = updater.dispatcher

    # on different commands - answer in Telegram
    dp.add_handler(CommandHandler("start", start))
    dp.add_handler(CommandHandler("help", help))

    # on noncommand i.e message - echo the message on Telegram
    dp.add_handler(MessageHandler(Filters.text, echo))
    dp.add_handler(MessageHandler(Filters.document, save))
    # log all errors
    dp.add_error_handler(error)

    # Start the Bot
    updater.start_polling()

    # Run the bot until you press Ctrl-C or the process receives SIGINT,
    # SIGTERM or SIGABRT. This should be used most of the time, since
    # start_polling() is non-blocking and will stop the bot gracefully.
    updater.idle()


    if __name__ == '__main__':
    main()