File size: 5,600 Bytes
d8c18ec
 
 
 
e58c5f2
07b68f3
d8c18ec
af740a4
 
170f984
 
 
a62a4cc
2f34027
af740a4
 
 
 
d8c18ec
af740a4
d128a4d
170f984
 
 
fcd0a7c
 
 
170f984
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6043bab
170f984
 
a62a4cc
170f984
 
7c18b3f
8171d78
170f984
 
7c18b3f
8171d78
170f984
 
 
 
7c18b3f
170f984
 
 
 
 
 
 
 
 
 
 
 
fcd0a7c
170f984
 
 
d128a4d
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
# import telebot
from telebot import types
import asyncio
from telebot.async_telebot import AsyncTeleBot
from pages.Warning import *
from pages.llm import get_llm_answer

import os

class Telegram: 
    def __init__(self):
        self.last_message = ""
        self.gesuchte_zeile = "Test" #Warning()    
        self.bot = AsyncTeleBot(os.environ['Rene_Telegram_Token'])
        print("Telegram-Bot geladen")
        
        #with open("token.txt") as file:
        #    token = file.read()
    
        #self.bot = AsyncTeleBot(token)
        #self.start_polling()
    
    async def send_status_message(self, message):
        status_message = (
        "Hallo! Willkommen beim KatHelferPro Chatbot! Ich bin Rene. Hier gibt es Informationen zum Zivil- und Katastrophenschutz in Deutschland. Beachte bitte, dass ich Fehler machen kann. Prüfe daher Wichtiges nochmal nach. \n"
            " Frag mich nach allgemeinen Informationen zum Katastrophenschutz, Tipps zur Vorsorge, Verhalten bei verschiedenen Katastrophen und wie du dich (auch) langfristig bei verschiedenen Organisationen engagieren kannst. Aktuelle Meldungen stehen ebenfalls zur Verfügung. \n"
            " Sicherheit geht vor! 🚨 \n"

            "                                                                        Impressum Platzhalter"
        )
        button_akt_Meldung = types.InlineKeyboardButton('Aktuelle Warnungen', callback_data='akt_Meldung')
        button_allg = types.InlineKeyboardButton('Allgemeine Informationen zum Katastrophenschutz', callback_data='allg')

        keyboard = types.InlineKeyboardMarkup()
        keyboard.add(button_allg)
        keyboard.add(button_akt_Meldung)

        last_message = status_message
        await self.bot.reply_to(message, text=status_message, reply_markup=keyboard)
        
    def start_polling(self):
        @self.bot.message_handler(commands=['start'])
        async def send_welcome(message):
            await self.send_status_message(message)

        @self.bot.message_handler(content_types=['new_chat_members'])
        async def send_welcome_new_members(message):
            for member in message.new_chat_members:
                if member.id == self.bot.get_me().id:
                    await self.send_status_message(message.chat.id)
        

        @self.bot.callback_query_handler(func=lambda call: True)
        async def handle_button_click(call):
            match call.data:
                case "allg":
                    await self.function_allg(call.message)
                case "akt_Meldung":
                    # Hier wird die Funktion aufgerufen, die du mit Button 1 verknüpfen möchtest
                    await self.function_akt_meldungen(call.message)

                case _:
                    # Hier wird die Funktion aufgerufen, die du mit Button 2 verknüpfen möchtest
                    last_message = "Der Button ist nicht angebunden."
                    await self.send_message(call.message.chat.id, last_message)
                    
        @self.bot.message_handler(func=lambda message: True)
        async def get_Message(message):
            match self.last_message:
                case "Okay, um welchen Ort handelt es sich?":
                # Pauls APi abruf
                    ort = message.text
                    antwort = "Test "# self.gesuchte_zeile.getWarningOrt(ort)
                    
                    if antwort == "Keine Warnung gefunden":
                        erw_ant = "Zu diesem Ort haben wir keine Meldungen. Probiere es mit einem anderen. Oder tippe /start, um etwas anderes zu fragen."
                        self.last_message = "Okay, um welchen Ort handelt es sich?"
                        await self.bot.send_message(message.chat.id, erw_ant)
                    else:
                        erw_ant = "Wir haben zu diesem Ort folgende Meldungen: \n" + antwort +  "\nSuche nach einem neuen Ort oder tippe /start, um etwas anderes zu fragen."
                        self.last_message = "Okay, um welchen Ort handelt es sich?"
                        await self.bot.send_message(message.chat.id, erw_ant)
                case "Okay, es geht um allgemeine Informationen zum Katastrophenschutz. Stelle mir einfach eine Frage und ich gebe mein Bestes, um dir weiterzuhelfen!":
                    ######zauberei einfügen#####
                    self.last_message = "Okay, es geht um allgemeine Informationen zum Katastrophenschutz. Stelle mir einfach eine Frage und ich gebe mein Bestes, um dir weiterzuhelfen!"
                    erw_ant = get_llm_answer(message.text) + "\n Um weitere Antworten zu erhalten, stelle mir gerne noch eine Frage oder tippe /start, um aktuelle Meldungen zu erhalten."
                    await self.bot.send_message(message.chat.id, erw_ant)        
                case _:
                    self.last_message = "Bitte starte den Bot mit /start neu."
                    await self.bot.send_message(message.chat.id, self.last_message)
        asyncio.run(self.bot.polling())

    async def function_allg(self, message):
        antwort = "Okay, es geht um allgemeine Informationen zum Katastrophenschutz. Stelle mir einfach eine Frage und ich gebe mein Bestes, um dir weiterzuhelfen!"
        self.last_message = antwort
        await self.bot.send_message(message.chat.id, antwort)

    async def function_akt_meldungen(self, message):
        antwort = "Okay, um welchen Ort handelt es sich?"
        self.last_message = antwort
        await self.bot.send_message(message.chat.id, antwort)

telegram = Telegram()
telegram.start_polling()