From de477210b140d965b41284bdf89368e39651d964 Mon Sep 17 00:00:00 2001 From: Alek Ratzloff Date: Mon, 30 May 2022 16:31:01 -0700 Subject: [PATCH] Add on_connect callback and joined_channels property * on_connect is called on all plugins on the first message received from the IRC server * joined_channels property gets all of the channels that this bot has currently joined in IRC Signed-off-by: Alek Ratzloff --- omnibot/bot.py | 9 +++++++++ omnibot/plugin.py | 3 +++ 2 files changed, 12 insertions(+) diff --git a/omnibot/bot.py b/omnibot/bot.py index a5f241a..eef2fe1 100644 --- a/omnibot/bot.py +++ b/omnibot/bot.py @@ -33,6 +33,13 @@ class Bot: def plugins(self) -> Sequence[plugin.Plugin]: return self.__plugins + @property + def joined_channels(self) -> Set[str]: + """ + Returns a list of all channels that this bot has joined. + """ + return self.__channels + def quit(self): self.__quitting.set() @@ -67,6 +74,8 @@ class Bot: for ch in self.server_config.all_channels: msg = Message(None, None, "JOIN", ch) conn.send(str(msg)) + # on_connect event on all plugins + await asyncio.gather(*[plugin.on_connect(conn) for plugin in self.plugins]) async def on_join(self, conn: IrcProtocol, message: Message): log.debug("%s", message) diff --git a/omnibot/plugin.py b/omnibot/plugin.py index 630b918..6b789df 100644 --- a/omnibot/plugin.py +++ b/omnibot/plugin.py @@ -58,6 +58,9 @@ class Plugin: async def on_load(self): pass + async def on_connect(self, conn: IrcProtocol): + pass + async def on_unload(self, conn: IrcProtocol): pass