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 <alekratz@gmail.com>
This commit is contained in:
2022-05-30 16:31:01 -07:00
parent c27ea72c85
commit de477210b1
2 changed files with 12 additions and 0 deletions

View File

@@ -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)

View File

@@ -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