From 95c1f93e5bfa97f9d62cef324096dae28588f5ab Mon Sep 17 00:00:00 2001 From: ThomasWeis Date: Wed, 20 Apr 2022 15:32:33 +0200 Subject: [PATCH 1/4] Create LetterObserver.py MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Module chooses a random letter from the German alphabet (includig ä, ö, ü; not including ß) --- FaustBot/Modules/LetterObserver.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 FaustBot/Modules/LetterObserver.py diff --git a/FaustBot/Modules/LetterObserver.py b/FaustBot/Modules/LetterObserver.py new file mode 100644 index 0000000..4b05239 --- /dev/null +++ b/FaustBot/Modules/LetterObserver.py @@ -0,0 +1,26 @@ +from FaustBot.Communication import Connection +from FaustBot.Modules.PrivMsgObserverPrototype import PrivMsgObserverPrototype + +import random + +class LetterObserver(PrivMsgObserverPrototype): + @staticmethod + def cmd(): + return [".abc"] + + @staticmethod + def help(): + return ".abc - wählt einen zufälligen Buchstaben aus" + + def update_on_priv_msg(self, data: dict, connection: Connection): + if data['message'].find('.abc') == -1: + return + + alphabet = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', + 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', + 'u', 'v', 'w', 'x', 'y', 'z', 'ä', 'ö', 'ü'] + + #choose a random letter from alphabet list + letter = random.choice(alphabet).upper() + + connection.send_back('Gewählter Buchstabe: ' + letter, data) \ No newline at end of file From 6c924c13abc8b7b10de397c443e1360da7901542 Mon Sep 17 00:00:00 2001 From: ThomasWeis Date: Wed, 20 Apr 2022 15:35:39 +0200 Subject: [PATCH 2/4] Create DiceObserver.py Module rolls a die with variable number of sides, standard if no argument is given is 6 sides --- FaustBot/Modules/DiceObserver.py | 34 ++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 FaustBot/Modules/DiceObserver.py diff --git a/FaustBot/Modules/DiceObserver.py b/FaustBot/Modules/DiceObserver.py new file mode 100644 index 0000000..4d2963c --- /dev/null +++ b/FaustBot/Modules/DiceObserver.py @@ -0,0 +1,34 @@ +from FaustBot.Communication import Connection +from FaustBot.Modules.PrivMsgObserverPrototype import PrivMsgObserverPrototype + +import random + +class DiceObserver(PrivMsgObserverPrototype): + @staticmethod + def cmd(): + return [".zahl"] + + @staticmethod + def help(): + return ".zahl n - Wirft einen n-seitigen Würfel" + + def update_on_priv_msg(self, data: dict, connection: Connection): + if data['message'].find('.zahl') == -1: + return + + #roll a die with given number of sides, standard is 6 + dice_sides = 6 + + if len(data['message'].split(' ')) > 1: + found_at_index = data['message'].split(' ').index('.zahl') + if data['message'].split(' ')[-1] == '.zahl': + dice_sides = 6 + else: + dice_sides = (data['message'].split(' ')[found_at_index + 1]) + if dice_sides.isdigit(): + dice_sides = int(dice_sides) + else: + dice_sides = 6 + result = random.randint(1, dice_sides) + + connection.send_back(data['nick'] + ' wirft einen ' + str(dice_sides) + '-seitigen Würfel und bekommt ' + str(result), data) \ No newline at end of file From 340f20188262688db395b0c3a82fbe3bc976c000 Mon Sep 17 00:00:00 2001 From: ThomasWeis Date: Wed, 20 Apr 2022 15:37:12 +0200 Subject: [PATCH 3/4] Update to include LetterObserver and DiceObserver modules --- FaustBot/FaustBot.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/FaustBot/FaustBot.py b/FaustBot/FaustBot.py index 78a86d3..34b3275 100644 --- a/FaustBot/FaustBot.py +++ b/FaustBot/FaustBot.py @@ -6,7 +6,7 @@ from FaustBot.Modules import ActivityObserver, IdentNickServObserver, GiveCookie UserList, WikiObserver, GiveDrinkObserver, GiveFoodObserver, ComicObserver, HelpObserver, \ IntroductionObserver, HangmanObserver, DuckObserver, AllSeenObserver, JokeObserver,TellObserver, WordRunObserver,\ GiveIceObserver, GiveDrinkToObserver, Greeter, MathRunObserver, PartyObserver, PrideObserver, SnacksObserver, \ - BlockObserver + BlockObserver, LetterObserver, DiceObserver from FaustBot.Modules.CustomUserModules import GlossaryModule, ICDObserver, ModmailObserver from FaustBot.Modules.ModuleType import ModuleType @@ -59,6 +59,8 @@ class FaustBot(object): self.add_module(PrideObserver.PrideObserver()) self.add_module(SnacksObserver.SnacksObserver()) self.add_module(BlockObserver.BlockObserver()) + self.add_module(LetterObserver.LetterObserver()) + self.add_module(DiceObserver.DiceObserver()) def run(self): self._setup() running = True From 02308bf5d7cd5496eb0a2a24d3db918e95ece46e Mon Sep 17 00:00:00 2001 From: ThomasWeis Date: Wed, 20 Apr 2022 17:27:33 +0200 Subject: [PATCH 4/4] Update DiceObserver.py Exception handling --- FaustBot/Modules/DiceObserver.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/FaustBot/Modules/DiceObserver.py b/FaustBot/Modules/DiceObserver.py index 4d2963c..6880bf4 100644 --- a/FaustBot/Modules/DiceObserver.py +++ b/FaustBot/Modules/DiceObserver.py @@ -27,8 +27,16 @@ class DiceObserver(PrivMsgObserverPrototype): dice_sides = (data['message'].split(' ')[found_at_index + 1]) if dice_sides.isdigit(): dice_sides = int(dice_sides) + if dice_sides == 0: + connection.send_back(data['nick'] + ' wirft einen 0-seitigen Würfel und bekommt Unendlich.', data) + return + elif dice_sides < 0: + connection.send_back(data['nick'] + ' wirft einen ' + str(dice_sides) + '-seitigen Würfel und nichts passiert.', data) + return else: dice_sides = 6 + result = random.randint(1, dice_sides) - connection.send_back(data['nick'] + ' wirft einen ' + str(dice_sides) + '-seitigen Würfel und bekommt ' + str(result), data) \ No newline at end of file + connection.send_back(data['nick'] + ' wirft einen ' + str(dice_sides) + '-seitigen Würfel und bekommt ' + str(result), data) + \ No newline at end of file