hebdobot/hebdobot.py

85 lines
2.6 KiB
Python
Raw Normal View History

"""
Bot IRC permettant de gérer la revue hebdomadaire de l'April.
"""
import time
2024-01-11 08:17:25 +01:00
from ircbot import IrcBot
from events import events
from hooks import hooks
2024-01-11 08:17:25 +01:00
import logger
from review.review import Review
import settings
class HebdoBot(IrcBot):
def __init__(self, settings):
super().__init__(settings)
self.VERSION = "3.0.0"
self.review = Review()
for event in events:
event.init_scheduler(self.reactor.scheduler, self.callback)
logger.info(
"--==============================INIT===="
"======================================--"
)
logger.info(f"Hebdobot {self.VERSION}")
def callback(self, minutes):
"""
Envoi des notification sur IRC et les réseaux sociaux.
"""
if minutes == 15:
# Envoi sur IRC
self.send(
self.channel,
f"Plus que {minutes} minutes avant le début de la revue hebdomdaire.",
)
# Envoi sur Mastodon
# TODO : Gérer mastodon
# ~ mastodon.send(
# ~ "Revue hebdomadaire April à 12h sur notre salon : "
# ~ "http://april.org/salon-irc-de-lapril\nCette revue ne dure qu'une "
# ~ "quinzaine de minutes et permet d'avoir une idée des actions en cours "
# ~ "et à venir.\nVous pouvez aussi juste nous faire un coucou. Et ça met "
# ~ "en appétit :)",
# ~ )
def on_privmsg(self, connection, event):
"""
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.
"""
target = event.source.nick
message = event.arguments[0]
if message[0] == "!":
self.send(target, "Vos commandes dans le salon public")
def on_pubmsg(self, connection, event):
"""
Tous les messages publics sont pris en compte. On utilise les hooks chargés au
démarrage pour cela.
"""
channel = event.target
sender = event.source.nick
message = event.arguments[0]
if self.review.is_started:
self.review.add_message(sender, message)
2024-01-11 08:17:25 +01:00
for hook in hooks:
if hook.process(self, channel, sender, message):
break
2024-01-11 08:17:25 +01:00
def send(self, target, message):
if self.review.is_started and target == self.channel:
self.review.add_message(self.nickname, message)
super().send(target, message)
2024-01-11 08:17:25 +01:00
if __name__ == "__main__":
HebdoBot(settings).start()