hebdobot/bot/hebdobot.py

54 lines
1.5 KiB
Python

from dataclasses import dataclass
import time
from bot.hooks import hooks
from bot.review.review import Review
@dataclass
class Answer:
target: str
message: str
class Hebdobot:
def __init__(self, settings, channel, nickname="hebdobot"):
self.settings = settings
self.channel = channel
self.nickname = nickname
self.answers = []
# Gestion de la revue hebdomadaire
self.review = Review()
def on_private_message(self, channel, sender, message):
"""
Tous les messages privés sont ignorés. Si l'utilisateur tente une commande, on
lui signale de le faire plutôt sur le canal public.
"""
self.answers = []
if message[0] == "!":
self.send(sender, "vos commandes dans le salon public")
return self.answers
def on_public_message(self, channel, sender, message):
"""
Tous les messages publics sont pris en compte. On utilise les hooks chargés au
démarrage pour cela.
"""
self.answers = []
if self.review.is_started:
self.review.add_message(sender, message)
for hook in hooks:
if hook.process(self, channel, sender, message):
break
return self.answers
def send(self, target, message):
self.answers.append(Answer(target, message))
if self.review.is_started and target == self.channel:
self.review.add_message(self.nickname, message)