37 lines
1.1 KiB
Python
37 lines
1.1 KiB
Python
|
import random
|
||
|
|
||
|
from edmond.plugin import Plugin
|
||
|
from edmond.plugins.mood import Mood
|
||
|
from edmond.utils import proc
|
||
|
|
||
|
|
||
|
class ComplimentsPlugin(Plugin):
|
||
|
|
||
|
REQUIRED_CONFIGS = ["sentences", "calm_rate"]
|
||
|
|
||
|
def __init__(self, bot):
|
||
|
super().__init__(bot)
|
||
|
self.priority = -3
|
||
|
self.mood_plugin = None
|
||
|
|
||
|
def on_welcome(self, event):
|
||
|
self.mood_plugin = self.bot.get_plugin("mood")
|
||
|
|
||
|
def on_pubmsg(self, event):
|
||
|
content = self.should_read_message(event.arguments[0])
|
||
|
if content is None:
|
||
|
return False
|
||
|
if content in self.config["sentences"]:
|
||
|
self.react_to_compliment(event.source.nick, event.target)
|
||
|
return True
|
||
|
return False
|
||
|
|
||
|
def react_to_compliment(self, sender, target):
|
||
|
mood = self.get_runtime_value("mood", ns="mood")
|
||
|
if self.mood_plugin is not None:
|
||
|
if mood == Mood.PISSED and proc(self.config["calm_rate"]):
|
||
|
self.mood_plugin.calm_down(target)
|
||
|
compliment = random.choice(self.config["sentences"])
|
||
|
reply = f"{sender} {compliment}"
|
||
|
self.bot.say(target, reply)
|