import dotenv import os import dokuwiki import requests from flask import Flask from telegram import Update, PhotoSize, File, BotCommand from telegram.ext import Updater, MessageHandler, CommandHandler, Filters, CallbackContext, ConversationHandler app = Flask("rafael") RAFAEL_UA = "RAFAEL/0.1" from rafael.bookmarks import RafaelBookmarkPlugin def handle(update: Update, context: CallbackContext): print("args:", context.args) print(f"Received a message: {update.message.text}") update.message.reply_text(f"You said: {update.message.text}") print(update.message.to_json()) if update.message.document is not None: print("Document", update.message.document.get_file()) elif update.message.effective_attachment: for att in update.message.effective_attachment: if isinstance(att, PhotoSize): print(att.get_file()) else: print("unknown attachment:", att) update.message.reply_text("done m8") ADDING = 0 class JournalPlugin(): def init_convo(self, update: Update, context: CallbackContext): update.message.reply_text("Add photos for your journal") return ADDING def handle_file(self, update: Update, context: CallbackContext): update.message.reply_text("Got your update m8") return ADDING def done_handler(self, update: Update, context: CallbackContext): update.message.reply_text("Great storing your images...") return ConversationHandler.END def invalid_handler(self, update: Update, context: CallbackContext): update.message.reply_text("Sorry, I don't understand. Please upload photos or type 'Done' to exit") def register(self, updater: Updater): updater.dispatcher.add_handler(ConversationHandler( entry_points=[ CommandHandler("journal", self.init_convo) ], states={ ADDING: [MessageHandler(Filters.attachment, self.handle_file)] }, fallbacks=[ MessageHandler(Filters.regex("^Done$"), self.done_handler), MessageHandler(Filters.all, self.invalid_handler) ] )) class RafaelBot: def __init__(self): self.updater = Updater(os.getenv("TELEGRAM_API_KEY")) self.dispatcher = self.updater.dispatcher bh = RafaelBookmarkPlugin() bh.register(self.updater) jp = JournalPlugin() jp.register(self.updater) #self.updater.dispatcher.add_handler(CommandHandler("journal", handle)) #self.updater.dispatcher.add_handler(MessageHandler(Filters.attachment, handle)) def run(self): self.updater.start_polling() @app.route("/", methods=['GET']) def index(): return "hello" def main(): dotenv.load_dotenv() print("run bot") bot = RafaelBot() bot.run() print("bot run") # app.run() if __name__ == "__main__": main()