hebdobot/hebdobot.py

92 lines
2.7 KiB
Python
Raw Permalink 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:
2024-04-06 22:27:24 +02:00
event.init(self.reactor.scheduler, getattr(self, event.callback))
logger.info(
"--==============================INIT===="
"======================================--"
)
logger.info(f"Hebdobot {self.VERSION}")
2024-04-06 22:27:24 +02:00
def notifications(self, minutes):
"""
2024-04-06 22:27:24 +02:00
Envoi des notifications sur IRC.
"""
2024-04-06 22:27:24 +02:00
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]
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
2024-04-06 22:27:24 +02:00
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à :)")
2024-04-06 22:27:24 +02: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()