You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

45 lines
1.2 KiB

import random
from enum import Enum
from edmond.plugin import Plugin
class Mood(Enum):
CALM = "calm"
PISSED = "pissed"
class MoodPlugin(Plugin):
"""Handle the mood of the bot.
This plugin exposes the runtime value `mood` (Mood) which can be
used to act differently upon some actions according to the bot
current mood.
"""
REQUIRED_CONFIGS = ["questions", "greetings", "answer"]
def __init__(self, bot):
super().__init__(bot)
def on_welcome(self, event):
mood = random.choice(list(Mood))
self.set_runtime_value("mood", mood)
def on_join(self, event):
if event.source.nick != self.bot.nick:
return
mood = self.get_runtime_value("mood")
greetings = self.config["greetings"].get(mood.value)
if greetings:
self.bot.say(event.target, random.choice(greetings))
def on_pubmsg(self, event):
if not self.should_answer_question(event.arguments[0]):
return False
mood = self.get_runtime_value("mood")
answer = self.config["answer"].get(mood.value)
if answer:
self.bot.say(event.target, answer)
return True