chore: remove TODO.md and refactor bot channel caching with get_channel method
This commit is contained in:
+23
-12
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user