RAFAEL/src/rafael/__init__.py

122 lines
3.0 KiB
Python
Raw Normal View History

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