From 56e99c237b71edf758e8e53595ea9b54f61c9ab7 Mon Sep 17 00:00:00 2001 From: Alek Ratzloff Date: Mon, 30 May 2022 19:45:49 -0700 Subject: [PATCH] Add nickserv plugin This allows the bot to register itself and login. Signed-off-by: Alek Ratzloff --- plugins/nickserv.py | 50 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 plugins/nickserv.py diff --git a/plugins/nickserv.py b/plugins/nickserv.py new file mode 100644 index 0000000..c4eb11f --- /dev/null +++ b/plugins/nickserv.py @@ -0,0 +1,50 @@ +import logging +from typing import Sequence + +from asyncirc.protocol import IrcProtocol +from irclib.parser import Message, Prefix +from omnibot.plugin import Plugin + + +log = logging.getLogger(__name__) + + +class NickServ(Plugin): + def get_message_types(self) -> Sequence[str]: + return ["001"] + + @property + def password(self) -> str: + return self.plugin_config["password"] + + @property + def email(self) -> str: + return self.plugin_config.get("email", "omnibot@omni.bot") + + @property + def nickserv(self) -> str: + return self.plugin_config.get("nickserv", "NickServ") + + async def on_message(self, conn: IrcProtocol, channel: str, who: Prefix, line: str): + # XXX : channel is the wrong nomenclature here and kind of an artifact of the API design + log.info("Registering with NickServ") + self.send_message( + conn, + Message( + None, + None, + "PRIVMSG", + self.nickserv, + "register", + self.password, + self.email, + ), + ) + log.info("Authenticating with NickServ") + self.send_message( + conn, + Message(None, None, "PRIVMSG", self.nickserv, "identify", self.password), + ) + + +PLUGIN_TYPE = NickServ