Merge pull request #11 from yannickreiss/bastelbot

Bastelbot
This commit is contained in:
BaerbelBox
2024-02-16 08:12:56 +01:00
committed by GitHub
2 changed files with 74 additions and 2 deletions
+2 -1
View File
@@ -6,7 +6,7 @@ from FaustBot.Modules import ActivityObserver, IdentNickServObserver, GiveCookie
UserList, WikiObserver, GiveDrinkObserver, GiveFoodObserver, ComicObserver, HelpObserver, \ UserList, WikiObserver, GiveDrinkObserver, GiveFoodObserver, ComicObserver, HelpObserver, \
IntroductionObserver, HangmanObserver, DuckObserver, AllSeenObserver, JokeObserver,TellObserver, WordRunObserver,\ IntroductionObserver, HangmanObserver, DuckObserver, AllSeenObserver, JokeObserver,TellObserver, WordRunObserver,\
GiveIceObserver, GiveDrinkToObserver, Greeter, MathRunObserver, PartyObserver, PrideObserver, SnacksObserver, \ GiveIceObserver, GiveDrinkToObserver, Greeter, MathRunObserver, PartyObserver, PrideObserver, SnacksObserver, \
BlockObserver, LetterObserver, DiceObserver, First_Greeter, CharactersCountObserver BlockObserver, LetterObserver, DiceObserver, First_Greeter, CharactersCountObserver, BastelObserver
from FaustBot.Modules.CustomUserModules import GlossaryModule, ICDObserver, ModmailObserver from FaustBot.Modules.CustomUserModules import GlossaryModule, ICDObserver, ModmailObserver
from FaustBot.Modules.ModuleType import ModuleType from FaustBot.Modules.ModuleType import ModuleType
@@ -63,6 +63,7 @@ class FaustBot(object):
self.add_module(LetterObserver.LetterObserver()) self.add_module(LetterObserver.LetterObserver())
self.add_module(DiceObserver.DiceObserver()) self.add_module(DiceObserver.DiceObserver())
self.add_module(CharactersCountObserver.CharactersCountObserver()) self.add_module(CharactersCountObserver.CharactersCountObserver())
self.add_module(BastelObserver.BastelObserver())
def run(self): def run(self):
self._setup() self._setup()
running = True running = True
+71
View File
@@ -0,0 +1,71 @@
from time import sleep
from wikipedia import wikipedia
from FaustBot.Communication import Connection
from FaustBot.Modules.PrivMsgObserverPrototype import PrivMsgObserverPrototype
class BastelObserver(PrivMsgObserverPrototype):
def __init__(self):
super().__init__()
self.annoyed: int = 0
@staticmethod
def cmd():
"""
@name cmd
@brief Register the commands to act on
Args:
@param
Returns:
listener Python list with strings to listen for.
"""
listener = [".craft"]
return listener
@staticmethod
def help():
return ".craft - Botty bastelt etwas"
def update_on_priv_msg(self, data: dict, connection: Connection):
"""
@name update_on_priv_msg
@brief Handle botty's crafting process
Args:
@param self@param data: dict@param connection: Connection
Returns:
"""
if data['message'].find('.craft') == -1:
return
# Start not more than one process with a longer iteration (15 seconds)
if self.annoyed > 0:
if self.annoyed == 1:
connection.send_back("Lass mich in Ruhe arbeiten!", data)
elif self.annoyed == 2:
connection.send_back("Ich muss mich konzentrieren!", data)
elif self.annoyed == 3:
connection.send_back("So kann ich nicht arbeiten!", data)
else:
connection.send_back("\001ACTION wirft mit Werkzeug um sich!\001", data)
# Bot is getting more annoyed when hit on multiple times
# self.annoyed is again checked against zero, as it's more likely to prevent a deadlock
if self.annoyed > 0:
self.annoyed = self.annoyed + 1
else:
self.annoyed = 1
connection.send_back("\001ACTION rennt in die Werkstatt.\001", data)
sleep(10)
connection.send_back("\001ACTION poltert herum.", data)
# Determine, what Botty has built (random wikipedia article)
wikipedia.set_lang('de')
crafted_object = wikipedia.random(1)
sleep(5)
connection.send_back(
f"\001ACTION kommt zurück und hat {crafted_object} gebastelt.\001", data)
self.annoyed = 0