Skip to content

Commit

Permalink
Fix error with templates not having access to member cache flags.
Browse files Browse the repository at this point in the history
This also changes the attribute from having an underscore

Fix Rapptz#5986
  • Loading branch information
Rapptz committed Nov 22, 2020
1 parent bdcc645 commit 431ee87
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 15 deletions.
4 changes: 2 additions & 2 deletions discord/ext/commands/converter.py
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ class MemberConverter(IDConverter):
"""

async def query_member_named(self, guild, argument):
cache = guild._state._member_cache_flags.joined
cache = guild._state.member_cache_flags.joined
if len(argument) > 5 and argument[-5] == '#':
username, _, discriminator = argument.rpartition('#')
members = await guild.query_members(username, limit=100, cache=cache)
Expand All @@ -140,7 +140,7 @@ async def query_member_named(self, guild, argument):

async def query_member_by_id(self, bot, guild, user_id):
ws = bot._get_websocket(shard_id=guild.shard_id)
cache = guild._state._member_cache_flags.joined
cache = guild._state.member_cache_flags.joined
if ws.is_ratelimited():
# If we're being rate limited on the WS, then fall back to using the HTTP API
# So we don't have to wait ~60 seconds for the query to finish
Expand Down
4 changes: 2 additions & 2 deletions discord/guild.py
Original file line number Diff line number Diff line change
Expand Up @@ -305,8 +305,8 @@ def _from_data(self, guild):
self._rules_channel_id = utils._get_as_snowflake(guild, 'rules_channel_id')
self._public_updates_channel_id = utils._get_as_snowflake(guild, 'public_updates_channel_id')

cache_online_members = self._state._member_cache_flags.online
cache_joined = self._state._member_cache_flags.joined
cache_online_members = self._state.member_cache_flags.online
cache_joined = self._state.member_cache_flags.joined
self_id = self._state.self_id
for mdata in guild.get('members', []):
member = Member(data=mdata, guild=self, state=state)
Expand Down
12 changes: 6 additions & 6 deletions discord/state.py
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,7 @@ def __init__(self, *, dispatch, handlers, hooks, syncer, http, loop, **options):

cache_flags._verify_intents(intents)

self._member_cache_flags = cache_flags
self.member_cache_flags = cache_flags
self._activity = activity
self._status = status
self._intents = intents
Expand Down Expand Up @@ -604,7 +604,7 @@ def parse_presence_update(self, data):
user = data['user']
member_id = int(user['id'])
member = guild.get_member(member_id)
flags = self._member_cache_flags
flags = self.member_cache_flags
if member is None:
if 'username' not in user:
# sometimes we receive 'incomplete' member data post-removal.
Expand Down Expand Up @@ -742,7 +742,7 @@ def parse_guild_member_add(self, data):
return

member = Member(guild=guild, data=data, state=self)
if self._member_cache_flags.joined:
if self.member_cache_flags.joined:
guild._add_member(member)

try:
Expand Down Expand Up @@ -786,7 +786,7 @@ def parse_guild_member_update(self, data):

self.dispatch('member_update', old_member, member)
else:
if self._member_cache_flags.joined:
if self.member_cache_flags.joined:
member = Member(data=data, guild=guild, state=self)
guild._add_member(member)
log.debug('GUILD_MEMBER_UPDATE referencing an unknown member ID: %s. Discarding.', user_id)
Expand Down Expand Up @@ -817,7 +817,7 @@ def _get_create_guild(self, data):
return self._add_guild_from_data(data)

async def chunk_guild(self, guild, *, wait=True, cache=None):
cache = cache or self._member_cache_flags.joined
cache = cache or self.member_cache_flags.joined
request = self._chunk_requests.get(guild.id)
if request is None:
self._chunk_requests[guild.id] = request = ChunkRequest(guild.id, self.loop, self._get_guild, cache=cache)
Expand Down Expand Up @@ -984,7 +984,7 @@ def parse_webhooks_update(self, data):
def parse_voice_state_update(self, data):
guild = self._get_guild(utils._get_as_snowflake(data, 'guild_id'))
channel_id = utils._get_as_snowflake(data, 'channel_id')
flags = self._member_cache_flags
flags = self.member_cache_flags
self_id = self.user.id
if guild is not None:
if int(data['user_id']) == self_id:
Expand Down
14 changes: 9 additions & 5 deletions discord/template.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,26 +42,30 @@ class _PartialTemplateState:
def __init__(self, *, state):
self.__state = state
self.http = _FriendlyHttpAttributeErrorHelper()

@property
def is_bot(self):
return self.__state.is_bot

@property
def shard_count(self):
return self.__state.shard_count

@property
def user(self):
return self.__state.user

@property
def self_id(self):
return self.__state.user.id


@property
def member_cache_flags(self):
return self.__state.member_cache_flags

def store_emoji(self, guild, packet):
return None

def _get_voice_client(self, id):
return None

Expand Down

0 comments on commit 431ee87

Please sign in to comment.