mirror of https://gitlab.com/litecord/litecord.git
storage: inject message.member field
required some changes around how we fetch data from the members table, but it works
This commit is contained in:
parent
7b4aaabcbf
commit
a846c57ae8
|
|
@ -171,12 +171,34 @@ class Storage:
|
||||||
return drow
|
return drow
|
||||||
|
|
||||||
async def _member_basic(self, guild_id: int, member_id: int):
|
async def _member_basic(self, guild_id: int, member_id: int):
|
||||||
return await self.db.fetchrow("""
|
row = await self.db.fetchrow("""
|
||||||
SELECT user_id, nickname, joined_at, deafened, muted
|
SELECT user_id, nickname, joined_at,
|
||||||
|
deafened AS deaf, muted AS mute
|
||||||
FROM members
|
FROM members
|
||||||
WHERE guild_id = $1 and user_id = $2
|
WHERE guild_id = $1 and user_id = $2
|
||||||
""", guild_id, member_id)
|
""", guild_id, member_id)
|
||||||
|
|
||||||
|
if row is None:
|
||||||
|
return None
|
||||||
|
|
||||||
|
row = dict(row)
|
||||||
|
row['joined_at'] = timestamp_(row['joined_at'])
|
||||||
|
return row
|
||||||
|
|
||||||
|
async def _member_basic_with_roles(self, guild_id: int,
|
||||||
|
member_id: int):
|
||||||
|
basic = await self._member_basic(guild_id, member_id)
|
||||||
|
|
||||||
|
if basic is None:
|
||||||
|
return None
|
||||||
|
|
||||||
|
basic = dict(basic)
|
||||||
|
roles = await self.get_member_role_ids(guild_id, member_id)
|
||||||
|
|
||||||
|
return {**basic, **{
|
||||||
|
'roles': roles
|
||||||
|
}}
|
||||||
|
|
||||||
async def get_member_role_ids(self, guild_id: int,
|
async def get_member_role_ids(self, guild_id: int,
|
||||||
member_id: int) -> List[str]:
|
member_id: int) -> List[str]:
|
||||||
"""Get a list of role IDs that are on a member."""
|
"""Get a list of role IDs that are on a member."""
|
||||||
|
|
@ -203,6 +225,7 @@ class Storage:
|
||||||
|
|
||||||
async def _member_dict(self, row, guild_id, member_id) -> Dict[str, Any]:
|
async def _member_dict(self, row, guild_id, member_id) -> Dict[str, Any]:
|
||||||
roles = await self.get_member_role_ids(guild_id, member_id)
|
roles = await self.get_member_role_ids(guild_id, member_id)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
'user': await self.get_user(member_id),
|
'user': await self.get_user(member_id),
|
||||||
'nick': row['nickname'],
|
'nick': row['nickname'],
|
||||||
|
|
@ -211,9 +234,9 @@ class Storage:
|
||||||
# the user since it is known that everyone has
|
# the user since it is known that everyone has
|
||||||
# that role.
|
# that role.
|
||||||
'roles': roles,
|
'roles': roles,
|
||||||
'joined_at': timestamp_(row['joined_at']),
|
'joined_at': row['joined_at'],
|
||||||
'deaf': row['deafened'],
|
'deaf': row['deaf'],
|
||||||
'mute': row['muted'],
|
'mute': row['mute'],
|
||||||
}
|
}
|
||||||
|
|
||||||
async def get_member_data_one(self, guild_id: int,
|
async def get_member_data_one(self, guild_id: int,
|
||||||
|
|
@ -244,7 +267,8 @@ class Storage:
|
||||||
async def get_member_data(self, guild_id: int) -> List[Dict[str, Any]]:
|
async def get_member_data(self, guild_id: int) -> List[Dict[str, Any]]:
|
||||||
"""Get member information on a guild."""
|
"""Get member information on a guild."""
|
||||||
members_basic = await self.db.fetch("""
|
members_basic = await self.db.fetch("""
|
||||||
SELECT user_id, nickname, joined_at, deafened, muted
|
SELECT user_id, nickname, joined_at,
|
||||||
|
deafened AS deaf, muted AS mute
|
||||||
FROM members
|
FROM members
|
||||||
WHERE guild_id = $1
|
WHERE guild_id = $1
|
||||||
""", guild_id)
|
""", guild_id)
|
||||||
|
|
@ -849,8 +873,12 @@ class Storage:
|
||||||
|
|
||||||
res['attachments'] = await self.get_attachments(message_id)
|
res['attachments'] = await self.get_attachments(message_id)
|
||||||
|
|
||||||
# TODO: res['member'] for partial member data
|
# if message is not from a dm, guild_id is None and so, _member_basic
|
||||||
# of the author
|
# will just return None
|
||||||
|
res['member'] = await self._member_basic_with_roles(guild_id, user_id)
|
||||||
|
|
||||||
|
if res['member'] is None:
|
||||||
|
res.pop('member')
|
||||||
|
|
||||||
pin_id = await self.db.fetchval("""
|
pin_id = await self.db.fetchval("""
|
||||||
SELECT message_id
|
SELECT message_id
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue