def __init__(self, ws, **kwargs):
super().__init__(ws)
self.ws = ws
self.loop = ws.loop
self.options = kwargs['config']
self.server = kwargs['server']
self.state = None
self.session_id = None
self._encoder, self._decoder = get_data_handlers(self.options[1])
# Client's heartbeat interval, chose at random between 40 and 42sec
self.hb_interval = random.randint(HB_MIN_MSEC, HB_MAX_MSEC)
self.wait_task = None
# ratelimiting tasks that clean the request counter
self.ratelimit_tasks = {}
self.request_counter = {}
# some flags for the client etc
self.identified = False
self.dispatch_lock = asyncio.Lock()
# references to objects
self.guild_man = self.server.guild_man
self.presence = self.server.presence
self.relations = self.server.relations
self.settings = self.server.settings
_o = Optional
self.identify_schema = Schema({
'token': str,
'properties': dict,
_o('compress'): bool,
'large_threshold': int,
'shard': list,
}, extra=REMOVE_EXTRA)
self.resume_schema = Schema({
'token': str,
'session_id': str,
'seq': int
}, extra=REMOVE_EXTRA)
self.req_guild_schema = Schema({
'guild_id': str,
'query': str,
'limit': int,
}, extra=REMOVE_EXTRA)
评论列表
文章目录