""" Bot IRC permettant de gérer la revue hebdomadaire de l'April. """ import time from ircbot import IrcBot from events import events from hooks import hooks import logger from review.review import Review import settings class HebdoBot(IrcBot): def __init__(self, settings): super().__init__(settings) self.VERSION = "3.1.0" self.review = Review() for event in events: event.init(self.reactor.scheduler, getattr(self, event.callback)) logger.info( "--==============================INIT====" "======================================--" ) logger.info(f"Hebdobot {self.VERSION}") def notifications(self, minutes): """ Envoi des notifications sur IRC. """ self.send(self.channel, f"Revue hebdomadaire dans {minutes} minutes.") def mastodon(self): """ Envoi d'une notification 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 :)", # ~ ) pass 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].strip() if self.review.is_started: self.review.add_message(sender, message) for hook in hooks: if hook.process(self, channel, sender, message): break def on_join(self, connection, event): """ Lorsqu'il se connecte, le bot dit bonjour. """ if event.source.nick.lower() == self.nickname.lower(): self.send(event.target, "Bonjour tout le monde, je suis là :)") 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) if __name__ == "__main__": HebdoBot(settings).start()