chore: remove TODO.md and refactor bot channel caching with get_channel method

This commit is contained in:
2025-04-24 19:38:56 +00:00
parent 476041c0ab
commit 4cbb7d17e3
3 changed files with 33 additions and 20 deletions
+23 -12
View File
@@ -29,7 +29,7 @@ class Bot:
self.username = username
self.password = password
self.user = None
self.channels = None
self._channels = None
self.rpc = None
self.ws = None
self.joined = set()
@@ -77,8 +77,17 @@ class Bot:
await self.rpc.send_message(channel_uid, message)
return True
async def get_channels(self):
return await (await self.rpc.get_channels())()
async def get_channel(self, channel_uid=None, refresh=False):
for channel in await self.get_channels(refresh):
if channel["uid"] == channel_uid:
return channel
if not refresh:
return await self.get_channel(channel_uid, True)
async def get_channels(self, refresh=False):
if refresh or not self._channels:
self._channels = await (await self.rpc.get_channels())()
return self._channels
async def run_once(self):
async with aiohttp.ClientSession() as session:
@@ -87,23 +96,25 @@ class Bot:
rpc = RPC(self.ws)
self.rpc = rpc
await (await rpc.login(self.username, self.password))()
self.channels = await self.get_channels()
for channel in self.channels:
for channel in await self.get_channels():
logger.debug("Found channel: " + channel["name"])
self.user = await (await rpc.get_user(None))()
logger.debug("Logged in as: " + self.user["username"])
while True:
await self.on_idle()
data = await rpc.receive()
message = None
if data is None:
break
while True:
data = await rpc.receive()
try:
message = data.message.strip()
except AttributeError:
continue
try:
message = data.message.strip()
except AttributeError:
continue
else:
break
if data.username == self.user["username"]:
await self.on_own_message(data.channel_uid, message)