some things with guild model and events

This commit is contained in:
grey-cat-1908 2022-03-20 17:04:12 +03:00
parent b8faa2df8a
commit 49d2a5f899
3 changed files with 19 additions and 5 deletions

View file

@ -47,7 +47,7 @@ class Client:
self._events: Dict[str, Coro] = {} self._events: Dict[str, Coro] = {}
# ToDo: Transfer guilds in to the cache manager # ToDo: Transfer guilds in to the cache manager
self.guilds = [] self.guilds = {}
self.user = None self.user = None
self._loop = asyncio.get_event_loop() self._loop = asyncio.get_event_loop()
@ -59,6 +59,7 @@ class Client:
self._activity = activity self._activity = activity
self._status = status self._status = status
self._none_guilds_cached = False
APIModelBase.set_client(self) APIModelBase.set_client(self)

View file

@ -3,18 +3,28 @@
from __future__ import annotations from __future__ import annotations
import asyncio
from ..utils.types import Coro from ..utils.types import Coro
from ..models.guild import Guild
async def guild_create_listener(self, gateway, payload: dict): async def guild_create_listener(self, gateway, payload: dict):
gateway.session_id = payload.get("session_id") gateway.session_id = payload.get("session_id")
self.guilds[payload["id"]] = payload guild_was_cached_as_none = False
guild = Guild.from_dict(payload)
if self.guilds.get(guild.id, "empty") != "empty":
guild_was_cached_as_none = True
self.guilds[guild.id] = guild
custom_listener = self._events.get("on_guild_create") custom_listener = self._events.get("on_guild_create")
if custom_listener is not None: if custom_listener is not None and guild_was_cached_as_none is False:
await custom_listener(payload) # ToDo: Guild Model asyncio.ensure_future(custom_listener(guild))
return return

View file

@ -14,7 +14,10 @@ async def on_ready_listener(self, gateway, payload: dict):
guilds = payload.get("guilds") guilds = payload.get("guilds")
self.guilds = dict(map(lambda i: (i["id"], None), guilds)) if self._none_guilds_cached is False:
self.guilds = dict(map(lambda i: (i["id"], None), guilds))
self._none_guilds_cached = True
self.user = User.from_dict(payload.get("user")) self.user = User.from_dict(payload.get("user"))
custom_listener = self._events.get("on_shard_ready") custom_listener = self._events.get("on_shard_ready")