MaxGit32 commited on
Commit
170f984
1 Parent(s): 62b5d38

Update pages/telegram.py

Browse files
Files changed (1) hide show
  1. pages/telegram.py +92 -113
pages/telegram.py CHANGED
@@ -1,120 +1,99 @@
1
  # import telebot
2
  from telebot import types
3
  import asyncio
4
- from pages.bot import get_llm_answer
5
-
6
  from telebot.async_telebot import AsyncTeleBot
 
 
7
 
8
- # from Warning import *
9
-
10
-
11
- #### Julian neu #####
12
-
13
- with open("token.txt") as file:
14
- token = file.read()
15
- bot = AsyncTeleBot(token)
16
-
17
- @bot.message_handler(commands=['start'])
18
- async def handle_start(message):
19
- #print(message)
20
- button_akt_Meldung = types.InlineKeyboardButton('Aktuelle Meldungen zum Wetter', callback_data='akt_Meldung')
21
- button_allg = types.InlineKeyboardButton('Allgemeine Informationen zum Katastrophenschutz', callback_data='allg')
22
-
23
- keyboard = types.InlineKeyboardMarkup()
24
- keyboard.add(button_allg)
25
-
26
- await bot.reply_to(message, text='Keyboard example', reply_markup=keyboard)
27
-
28
- @bot.callback_query_handler(func=lambda call: True)
29
- async def handle_button_click(call):
30
- match call.data:
31
- case "allg":
32
- # Hier wird die Funktion aufgerufen, die du mit Button 1 verknüpfen möchtest
33
- await function_allg(call.message)
34
- case "akt_Meldung":
35
- # Hier wird die Funktion aufgerufen, die du mit Button 1 verknüpfen möchtest
36
- await function_akt_meldungen(call.message)
37
-
38
- case _:
39
- # Hier wird die Funktion aufgerufen, die du mit Button 2 verknüpfen möchtest
40
- await bot.send_message(call.message.chat.id, "Der Button ist nicht angebunden.")
41
-
42
-
43
- async def function_allg(message):
44
- # hier bitte den Zaubereipart einsenden
45
- antwort = get_llm_answer(message.text)
46
- await bot.send_message(message, antwort)
47
-
48
- async def function_akt_meldungen(message):
49
- # hier bitte Pauls abfrage einfügen
50
- antwort = "Du möchtest Wetter Informationen"
51
- await bot.send_message(message, antwort)
52
-
53
- # Handle '/start' and '/help'
54
- # @bot.message_handler(commands=['help', 'start'])
55
- # async def send_welcome(message):
56
- # await bot.reply_to(message, """hhjvkhv\
57
- # Hi there, I am EchoBot.
58
- # I am here to echo your kind words back to you. Just say anything nice and I'll say the exact same thing to you!\
59
- # """)
60
 
61
- @bot.message_handler(func=lambda message: True)
62
- async def get_Message(message):
63
- frage = message.text
64
 
65
- await bot.reply_to(message, frage)
66
-
67
-
68
-
69
-
70
- asyncio.run(bot.polling())
71
-
72
-
73
-
74
-
75
-
76
-
77
- # ### Paul alt ####
78
- # with open("token.txt") as file:
79
- # token = file.read()
80
-
81
- # bot = telebot.TeleBot(token)
82
- # frage = ""
83
-
84
- # # Startnachricht
85
- # startnachricht = "Disclaimer zu unserem Chatbot: ..."
86
- # markup = types.InlineKeyboardMarkup()
87
- # button = types.InlineKeyboardButton('Aktuelle Informationen zu Warnungen', callback_data='api_warnung')
88
- # button = types.InlineKeyboardButton('Allgemeine Informationen zu Katastrophen', callback_data='allg_infos')
89
- # markup.add(button)
90
-
91
- # bot.send_message(chat_id='6475480143',text=startnachricht, reply_markup=markup)
92
-
93
- # # Command Handler
94
- # @bot.message_handler(commands=['start'])
95
- # def start(message):
96
- # markup = types.InlineKeyboardMarkup()
97
- # button = types.InlineKeyboardButton('Aktuelle Informationen zu Warnungen', callback_data='api_warnung')
98
-
99
- # markup.add(button)
100
-
101
- # bot.send_message(message.chat.id, 'Hallo! Klicke auf den Button:', reply_markup=markup)
102
-
103
- # # Nachricht erkennen
104
- # @bot.callback_query_handler(func=lambda call: True)
105
- # def callback_handler(call):
106
- # # Antworten wenn API Infos gefordert
107
- # if call.data == 'api_warnung':
108
- # bot.send_message(call.message.chat.id, 'Antworten zu aktuellen Informationen:')
109
- # if call.data == 'allg_infos':
110
- # bot.send_message(call.message.chat.id, 'Antworten zu allgemeinen Informationen:')
111
-
112
- # # Get_Message
113
- # @bot.message_handler(func=lambda message: True)
114
- # def get_Message(message):
115
- # #bot.reply_to(message, message.text)
116
- # frage = message.text
117
- # print(frage)
118
-
119
- # # Bot starten
120
- # bot.infinity_polling()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  # import telebot
2
  from telebot import types
3
  import asyncio
 
 
4
  from telebot.async_telebot import AsyncTeleBot
5
+ from Warning import *
6
+ from pages.bot import get_llm_answer
7
 
8
+ class Telegram:
9
+ def __init__(self):
10
+ self.last_message = ""
11
+ self.gesuchte_zeile = Warning()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12
 
13
+ with open("token.txt") as file:
14
+ token = file.read()
 
15
 
16
+ self.bot = AsyncTeleBot(token)
17
+
18
+ async def send_status_message(self, message):
19
+ status_message = (
20
+ "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."
21
+ " 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 Pegelstände der Gewässer stehen ebenfalls zur Verfügung."
22
+ " Sicherheit geht vor! 🚨"
23
+
24
+ " Impressum Platzhalter"
25
+ )
26
+ button_akt_Meldung = types.InlineKeyboardButton('Aktuelle Warnungen', callback_data='akt_Meldung')
27
+ button_allg = types.InlineKeyboardButton('Allgemeine Informationen zum Katastrophenschutz', callback_data='allg')
28
+
29
+ keyboard = types.InlineKeyboardMarkup()
30
+ keyboard.add(button_allg)
31
+ keyboard.add(button_akt_Meldung)
32
+
33
+ last_message = status_message
34
+ await self.bot.reply_to(message, text=status_message, reply_markup=keyboard)
35
+
36
+ def start_polling(self):
37
+ @self.bot.message_handler(commands=['start'])
38
+ async def send_welcome(message):
39
+ await self.send_status_message(message)
40
+
41
+ @self.bot.message_handler(content_types=['new_chat_members'])
42
+ async def send_welcome_new_members(message):
43
+ for member in message.new_chat_members:
44
+ if member.id == self.bot.get_me().id:
45
+ await self.send_status_message(message.chat.id)
46
+
47
+
48
+ @self.bot.callback_query_handler(func=lambda call: True)
49
+ async def handle_button_click(call):
50
+ match call.data:
51
+ case "allg":
52
+ await self.function_allg(call.message)
53
+ case "akt_Meldung":
54
+ # Hier wird die Funktion aufgerufen, die du mit Button 1 verknüpfen möchtest
55
+ await self.function_akt_meldungen(call.message)
56
+
57
+ case _:
58
+ # Hier wird die Funktion aufgerufen, die du mit Button 2 verknüpfen möchtest
59
+ last_message = "Der Button ist nicht angebunden."
60
+ await self.send_message(call.message.chat.id, last_message)
61
+
62
+ @self.bot.message_handler(func=lambda message: True)
63
+ async def get_Message(message):
64
+ match self.last_message:
65
+ case "Okay, um welche Region handelt es sich?":
66
+ # Pauls APi abruf
67
+ ort = message.text
68
+ antwort = self.gesuchte_zeile.getWarningOrt(ort)
69
+
70
+ if antwort == "Keine Warnung gefunden":
71
+ erw_ant = "Zu diesem Ort haben wir keine Meldungen. Probiere es mit einem anderen. Oder tippe \start um etwas anderes zu fragen."
72
+ self.last_message = "Okay, um welche Region handelt es sich?"
73
+ await self.bot.send_message(message.chat.id, erw_ant)
74
+ else:
75
+ erw_ant = "Wir haben zu diesem Ort folgende Meldungen: \n" + antwort + "\nSuche nach einem neuen ort oder tippe \start um etwas anderes zu fragen."
76
+ self.last_message = "Okay, um welche Region handelt es sich?"
77
+ await self.bot.send_message(message.chat.id, erw_ant)
78
+ case "Okay, es geht um allgemeine Informationen zum Katastrophenschutz. Stelle mir einfach eine Frage und ich gebe mein Bestes, um dir weiterzuhelfen!":
79
+ ######zauberei einfügen#####
80
+ self.last_message = "Okay, es geht um allgemeine Informationen zum Katastrophenschutz. Stelle mir einfach eine Frage und ich gebe mein Bestes, um dir weiterzuhelfen!"
81
+ erw_ant = get_llm_answer(message)
82
+ await self.bot.send_message(message.chat.id, erw_ant)
83
+ case _:
84
+ self.last_message = "Bitte starte den Bot mit /start neu."
85
+ await self.bot.send_message(message.chat.id, self.last_message)
86
+ asyncio.run(self.bot.polling())
87
+
88
+ async def function_allg(self, message):
89
+ antwort = "Okay, es geht um allgemeine Informationen zum Katastrophenschutz. Stelle mir einfach eine Frage und ich gebe mein Bestes, um dir weiterzuhelfen!"
90
+ self.last_message = antwort
91
+ await self.bot.send_message(message.chat.id, antwort)
92
+
93
+ async def function_akt_meldungen(self, message):
94
+ antwort = "Okay, um welche Region handelt es sich?"
95
+ self.last_message = antwort
96
+ await self.bot.send_message(message.chat.id, antwort)
97
+
98
+ telegram = Telegram()
99
+ telegram.start_polling()