Add minor parsing for THREAD_LIST_SYNC and THREAD_MEMBER_UPDATE
There's no dispatch for these yet
This commit is contained in:
@ -28,6 +28,7 @@ import copy
|
||||
import datetime
|
||||
import itertools
|
||||
import logging
|
||||
from typing import Optional
|
||||
import weakref
|
||||
import warnings
|
||||
import inspect
|
||||
@ -56,6 +57,7 @@ from .interactions import Interaction
|
||||
from .ui.view import ViewStore
|
||||
from .stage_instance import StageInstance
|
||||
from .threads import Thread, ThreadMember
|
||||
from discord import guild
|
||||
|
||||
class ChunkRequest:
|
||||
def __init__(self, guild_id, loop, resolver, *, cache=True):
|
||||
@ -724,7 +726,7 @@ class ConnectionState:
|
||||
return
|
||||
|
||||
thread_id = int(data['id'])
|
||||
thread = guild._get_thread(thread_id)
|
||||
thread = guild.get_thread(thread_id)
|
||||
if thread is not None:
|
||||
old = copy.copy(thread)
|
||||
thread._update(data)
|
||||
@ -734,15 +736,56 @@ class ConnectionState:
|
||||
guild_id = int(data['guild_id'])
|
||||
guild = self._get_guild(guild_id)
|
||||
if guild is None:
|
||||
log.debug('THREAD_UPDATE referencing an unknown guild ID: %s. Discarding', guild_id)
|
||||
log.debug('THREAD_DELETE referencing an unknown guild ID: %s. Discarding', guild_id)
|
||||
return
|
||||
|
||||
thread_id = int(data['id'])
|
||||
thread = guild._get_thread(thread_id)
|
||||
thread = guild.get_thread(thread_id)
|
||||
if thread is not None:
|
||||
guild._remove_thread(thread)
|
||||
self.dispatch('thread_delete', thread)
|
||||
|
||||
def parse_thread_list_sync(self, data):
|
||||
guild_id = int(data['guild_id'])
|
||||
guild: Optional[Guild] = self._get_guild(guild_id)
|
||||
if guild is None:
|
||||
log.debug('THREAD_LIST_SYNC referencing an unknown guild ID: %s. Discarding', guild_id)
|
||||
return
|
||||
|
||||
threads = {
|
||||
d['id']: guild._store_thread(d)
|
||||
for d in data.get('threads', [])
|
||||
}
|
||||
|
||||
for member in data.get('members', []):
|
||||
try:
|
||||
# note: member['id'] is the thread_id
|
||||
thread = threads[member['id']]
|
||||
except KeyError:
|
||||
continue
|
||||
else:
|
||||
thread._add_member(ThreadMember(thread, member))
|
||||
|
||||
# TODO: dispatch?
|
||||
|
||||
def parse_thread_member_update(self, data):
|
||||
guild_id = int(data['guild_id'])
|
||||
guild: Optional[Guild] = self._get_guild(guild_id)
|
||||
if guild is None:
|
||||
log.debug('THREAD_MEMBER_UPDATE referencing an unknown guild ID: %s. Discarding', guild_id)
|
||||
return
|
||||
|
||||
thread_id = int(data['id'])
|
||||
thread = guild.get_thread(thread_id)
|
||||
if thread is None:
|
||||
log.debug('THREAD_MEMBER_UPDATE referencing an unknown thread ID: %s. Discarding', thread_id)
|
||||
return
|
||||
|
||||
member = ThreadMember(thread, data)
|
||||
thread._add_member(member)
|
||||
|
||||
# TODO: dispatch
|
||||
|
||||
def parse_guild_member_add(self, data):
|
||||
guild = self._get_guild(int(data['guild_id']))
|
||||
if guild is None:
|
||||
|
Reference in New Issue
Block a user