diff --git a/botkommandos.txt b/botkommandos.txt new file mode 100644 index 0000000..4e26fac --- /dev/null +++ b/botkommandos.txt @@ -0,0 +1,5 @@ +/Befehl - Beschreibung +undefinierte_Fotos_bearbeiten - Startet die Verarbeitung von noch nicht gespeicherten Fotos, aufgrund von fehlender Verzeichnisangabe + +Bugfehler und Verbesserungsvorschläge bitte hier posten: +https://github.com/Hofei90/foto_ablage_telegrambot \ No newline at end of file diff --git a/db_modell.py b/db_modell.py index 111ac31..ef56fe2 100644 --- a/db_modell.py +++ b/db_modell.py @@ -23,8 +23,14 @@ class Foto(BaseModel): notiz = peewee.CharField(null=True) # 255? +class FotoUndefiniert(BaseModel): + message_id = peewee.IntegerField(primary_key=True) + chat_id = peewee.IntegerField() + file_id = peewee.TextField() + + def db_create_table(): - DB_PROXY.create_tables([Ordner, Foto]) + DB_PROXY.create_tables([Ordner, Foto, FotoUndefiniert]) def update_root_verzeichnis(root_verzeichnis): diff --git a/fotoablage_bot.py b/fotoablage_bot.py index 8f74fd8..14ccd64 100644 --- a/fotoablage_bot.py +++ b/fotoablage_bot.py @@ -29,9 +29,12 @@ class FotoBot(api.Bot): self.menue = None self.umenue = None + + self.undefinierte_file_id = None + self.undefinierte_message_id = None self.bot_kommando = { - + "undefiniertefotos": self.undefinierte_fotos_verarbeiten } def message_handler(self, message): @@ -39,11 +42,45 @@ class FotoBot(api.Bot): self.menue(message) return - def bot_kommando_exec(self, kommando): + def bot_kommando_exec(self, kommando, message): self.menue = self.bot_kommando.get(kommando, self.kommando_unbekannt) - self.menue() - - def kommando_unbekannt(self, message): + self.menue(message) + + def undefinierte_fotos_verarbeiten(self, message): + """ + Ist self.umenue auf None, so wird der parameter zu undefiniertes_foto + Ist self.umenue auf 1, so wird parameter zur message + """ + self.menue = self.undefinierte_fotos_verarbeiten + if self.umenue is None: + for undefiniertes_foto in db.FotoUndefiniert.select(): + self.send_message(chat_id=undefiniertes_foto.chat_id, + text="Ordner und Notiz angeben", + reply_to_message_id=undefiniertes_foto.message_id) + self.undefinierte_file_id = undefiniertes_foto.file_id + self.undefinierte_message_id = undefiniertes_foto.message_id + self.umenue = 1 + break + else: + self.menue = None + self.umenue = None + elif self.umenue == 1: + ordner, notiz = caption_analysieren(message["message"]["text"]) + ordner_db_id = db.ordner_struktur_erstellen(ordner) + verzeichnis = verzeichnis_erstellen(ordner) + + file_id = db.FotoUndefiniert.select(db.FotoUndefiniert.file_id).where( + db.FotoUndefiniert.message_id == self.undefinierte_message_id).scalar() + file, file_path = self.get_file(file_id) + dateiendung = get_dateiendung(file_path) + file_name = db.file_speichern(ordner_db_id, notiz, dateiendung) + datei_speichern(verzeichnis, file_name, file) + db.FotoUndefiniert.delete().where(db.FotoUndefiniert.message_id == self.undefinierte_message_id).execute() + self.umenue = None + self.menue = None + + @staticmethod + def kommando_unbekannt(_): print("Unbekannt") @@ -95,15 +132,15 @@ def nachricht_auswerten(bot, message): if "bot_command" in message["message"]["entities"][0]["type"]: text = message["message"]["text"] kommando = text.replace("/", "") - bot.bot_kommando_exec(kommando) + bot.bot_kommando_exec(kommando, message) if "photo" in message["message"]: + max_index = get_biggest_size(message["message"]["photo"]) if "caption" in message["message"]: ordner, notiz = caption_analysieren(message["message"]["caption"]) ordner_db_id = db.ordner_struktur_erstellen(ordner) verzeichnis = verzeichnis_erstellen(ordner) - max_index = get_biggest_size(message["message"]["photo"]) file, file_path = bot.get_file(message["message"]["photo"][max_index]["file_id"]) dateiendung = get_dateiendung(file_path) file_name = db.file_speichern(ordner_db_id, notiz, dateiendung) @@ -113,9 +150,12 @@ def nachricht_auswerten(bot, message): bot.send_message(chat_id=absender, text="Bild kann nicht verabeitet werden, Ordner wurde nicht angegeben", reply_to_message_id=message["message"]["message_id"]) + db.FotoUndefiniert.create(message_id=message["message"]["message_id"], + chat_id=absender, + file_id=message["message"]["photo"][max_index]["file_id"]) else: - bot.menue() + bot.menue(message) def main():