diff --git a/.google-cookie b/.google-cookie index 9decb19..8ac7432 100644 --- a/.google-cookie +++ b/.google-cookie @@ -1,5 +1,5 @@ #LWP-Cookies-2.0 -Set-Cookie3: 1P_JAR="2020-05-13-15"; path="/"; domain=".google.com"; path_spec; domain_dot; secure; expires="2020-06-12 15:07:25Z"; version=0 +Set-Cookie3: 1P_JAR="2020-05-14-09"; path="/"; domain=".google.com"; path_spec; domain_dot; secure; expires="2020-06-13 09:04:23Z"; version=0 Set-Cookie3: NID="204=n_wUpdR_TRFItRjyHxZ36B0EybjpBvLOa2ZsmpYnFPdVyLkmIaHc86rv9Ne06Ky5XEPRNNnsIHNzfmZc0NVnCf3HujqVbmYxN9OocwqASX0dYmH4B8Iy9UdLmvAUUfKC5FB3EkMMi_Q491lUiFSSbznjktAAMgcuHvJ7MBFAC7w"; path="/"; domain=".google.com"; path_spec; domain_dot; expires="2020-11-12 15:07:25Z"; HttpOnly=None; version=0 Set-Cookie3: CGIC=""; path="/complete/search"; domain=".google.com"; path_spec; domain_dot; expires="2020-11-09 15:07:25Z"; HttpOnly=None; version=0 Set-Cookie3: CGIC=""; path="/search"; domain=".google.com"; path_spec; domain_dot; expires="2020-11-09 15:07:25Z"; HttpOnly=None; version=0 diff --git a/main.py b/main.py index 0e8481f..8dafe15 100644 --- a/main.py +++ b/main.py @@ -8,6 +8,7 @@ import datetime import googlesearch import emoji +from persistence import PersistentVars class ChatBot(): @@ -22,18 +23,18 @@ class ChatBot(): self.version = version self.name = name - # Counters + # Persisten variable + self.persistence = PersistentVars("permanent_vars.json") + + # Uptime counter self.start_time = datetime.datetime.now() - self.message_read = 0 - self.message_sent = 0 - self.log = [] + self.persistence.write("reboots", self.persistence.read("reboots")+1) + # Dynamic variables for answering self.chat_id = "" self.offset = 0 - # People in use - self.chat_members = {} # Available commands self.commands = { @@ -46,6 +47,7 @@ class ChatBot(): "events" : self.bot_print_events, "emojify" : self.bot_emojify, "wikipedia" : self.bot_show_wikipedia, + "bot_do_all" : self.bot_do_all, } self.message_loop() @@ -78,15 +80,19 @@ class ChatBot(): def handle_result(self, result): """Inspects the message and reacts accordingly. Can easily be extended""" for message_data in result: - self.message_read += 1 + message_read = self.persistence.read("message_read") + self.persistence.write("message_read", message_read + 1) self.offset = message_data["update_id"] + 1 message = message_data["message"] self.chat_id = message["chat"]["id"] author = message["from"] - if author["id"] not in self.chat_members: - self.chat_members[author["id"]] = author["first_name"] + " " + author["last_name"] - self.send_message("Welcome to this chat " + self.chat_members[author["id"]] + " !") + chat_members = self.persistence.read("chat_members") + if str(author["id"]) not in chat_members: + name = author["first_name"] + " " + author["last_name"] + chat_members[author["id"]] = name + self.persistence.write("chat_members", chat_members) + self.send_message("Welcome to this chat " + name + " !") if "text" in message: print("Chat said: ", emoji.demojize(message["text"])) @@ -114,13 +120,19 @@ class ChatBot(): def send_message(self, message): print("SENDING: " + emoji.demojize(message)) - data = {'chat_id': self.chat_id, 'text': message, "parse_mode": "HTML"} + data = {'chat_id': self.chat_id, 'text': emoji.emojize(message), "parse_mode": "HTML"} send_url = self.base_url + "sendMessage" try: r = requests.post(send_url, data=data) except: - self.log.append(str(datetime.datetime.now()) + " - did not send:\n" + message) - self.message_sent += 1 + log = self.persistence.read("log") + log.append(str(datetime.datetime.now()) + " - did not send:\n" + message) + self.persistence.write("log", log) + message_sent = self.persistence.read("message_sent") + self.persistence.write("message_sent", message_sent + 1) + + + ############################################################################ """Command-implementation""" @@ -133,11 +145,14 @@ class ChatBot(): def bot_print_status(self, params): """Prints the bots current status and relevant information""" delta = str(datetime.datetime.now() - self.start_time) - message = "
Status: Running \n"
+        message = "
Status: Running :green_circle:\n"
         message += "Uptime: " + delta + "\n"
-        message += "Messages read: " + str(self.message_read) + "\n"
-        message += "Messages sent: " + str(self.message_sent) + "
" + message += "Reboots: " + str(self.persistence.read("reboots")) + "\n" + message += "Messages read: " + str(self.persistence.read("message_read")) + "\n" + message += "Messages sent: " + str(self.persistence.read("message_sent")) + "
" self.send_message(message) + if "full" in params: + self.bot_print_log([]) def bot_show_weather(self, params): @@ -206,7 +221,7 @@ class ChatBot(): out_string += emoji_dict[i] + " " else: out_string += i - self.send_message(emoji.emojize(out_string)) + self.send_message(out_string) def bot_show_help(self, params): @@ -218,16 +233,22 @@ class ChatBot(): send_text += self.commands[entry].__doc__ + "\n\n" self.send_message(send_text) + def bot_print_log(self, params): """Shows an error-log, mostly of bad api-requests""" + if "clear" in params: + self.persistence.write("log",[]) + self.send_message("Log cleared") + return send_text = "" - for event in self.log: + for event in self.persistence.read("log"): send_text += event + "\n" if send_text == "": send_text += "No errors up to now" self.send_message(send_text) - def bot_show_wikipedia(self,params): + + def bot_show_wikipedia(self, params): """Shows the wikipedia entry for a given therm""" if len(params) > 2 or len(params) == 0: self.send_message("Please only search for one word at a time. 1rst param is for language (de or fr or en or ...)") @@ -249,4 +270,11 @@ class ChatBot(): self.send_message(url) + def bot_do_all(self,params): + """Executes every single command with random params""" + for key in self.commands: + if key != "bot_do_all": + self.commands[key](["en","Freiburg"]) + + bot = ChatBot("ChatterBot", telegram_api, version="1.0") diff --git a/permanent_vars.json b/permanent_vars.json new file mode 100644 index 0000000..5e0f291 --- /dev/null +++ b/permanent_vars.json @@ -0,0 +1 @@ +{"message_read": 6, "message_sent": 15, "log": [], "chat_members": {"364520272": "Remy Moll"}, "reboots": 4} \ No newline at end of file diff --git a/persistence.py b/persistence.py new file mode 100644 index 0000000..189c156 --- /dev/null +++ b/persistence.py @@ -0,0 +1,30 @@ +import json +import time + +class PersistentVars(): + """""" + + def __init__(self,savefile_path): + self.path = savefile_path + + def write(self, name, value): + pre = self.read() + pre[name] = value + try: + file = open(self.path,"w") + json.dump(pre, file) + file.close() + except: + print("Config not written - critical") + + def read(self, name=""): + try: + file = open(self.path,"r") + vars = json.load(file) + file.close() + if len(name) != 0: + vars = vars[name] + except: + vars = None + + return vars