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