mirror of https://gitlab.com/litecord/litecord.git
blueprints.guild: use guild_id = role_id on at-everyone's role
- gateway.websocket: add user_ready function - storage: add guild_id by default on member roles - storage: add get_role_data - schema.sql: change default color from 0 to 1
This commit is contained in:
parent
3258dc94d5
commit
2276308c5d
|
|
@ -59,12 +59,10 @@ async def create_guild():
|
|||
VALUES ($1, $2)
|
||||
""", user_id, guild_id)
|
||||
|
||||
everyone_role_id = get_snowflake()
|
||||
|
||||
await app.db.execute("""
|
||||
INSERT INTO roles (id, guild_id, name, position, permissions)
|
||||
VALUES ($1, $2, $3, $4, $5)
|
||||
""", everyone_role_id, guild_id, '@everyone', 0, 104324161)
|
||||
""", guild_id, guild_id, '@everyone', 0, 104324161)
|
||||
|
||||
general_id = get_snowflake()
|
||||
|
||||
|
|
|
|||
|
|
@ -145,19 +145,71 @@ class GatewayWebsocket:
|
|||
|
||||
await self.dispatch('GUILD_CREATE', dict(guild))
|
||||
|
||||
async def user_ready(self):
|
||||
"""Fetch information about users in the READY packet.
|
||||
|
||||
This part of the API is completly undocumented.
|
||||
PLEAS DISCORD DO NOT BAN ME
|
||||
"""
|
||||
|
||||
return {
|
||||
'relationships': [],
|
||||
'user_guild_settings': [],
|
||||
'notes': {},
|
||||
'friend_suggestion_count': 0,
|
||||
'presences': [],
|
||||
'read_state': [],
|
||||
'experiments': [],
|
||||
'guild_experiments': [],
|
||||
'connected_accounts': [],
|
||||
'user_settings': {
|
||||
'afk_timeout': 300,
|
||||
'animate_emoji': True,
|
||||
'convert_emoticons': False,
|
||||
'default_guilds_restricted': True,
|
||||
'detect_platform_accounts': False,
|
||||
'developer_mode': True,
|
||||
'enable_tts_command': False,
|
||||
'explicit_content_filter': 2,
|
||||
'friend_source_flags': {
|
||||
'mutual_friends': True
|
||||
},
|
||||
'gif_auto_play': True,
|
||||
'guild_positions': [],
|
||||
'inline_attachment_media': True,
|
||||
'inline_embed_media': True,
|
||||
'locale': 'en-US',
|
||||
'message_display_compact': False,
|
||||
'render_embeds': True,
|
||||
'render_reactions': True,
|
||||
'restricted_guilds': [],
|
||||
'show_current_game': True,
|
||||
'status': 'online',
|
||||
'theme': 'dark',
|
||||
'timezone_offset': 420,
|
||||
},
|
||||
'analytics_token': 'transbian',
|
||||
'required_action': 'be gay',
|
||||
}
|
||||
|
||||
async def dispatch_ready(self):
|
||||
"""Dispatch the READY packet for a connecting account."""
|
||||
guilds = await self._make_guild_list()
|
||||
user = await self.storage.get_user(self.state.user_id, True)
|
||||
|
||||
await self.dispatch('READY', {
|
||||
uready = {}
|
||||
if not self.state.bot:
|
||||
# user, fetch info
|
||||
uready = await self.user_ready()
|
||||
|
||||
await self.dispatch('READY', {**{
|
||||
'v': 6,
|
||||
'user': user,
|
||||
'private_channels': [],
|
||||
'guilds': guilds,
|
||||
'session_id': self.state.session_id,
|
||||
'_trace': ['transbian']
|
||||
})
|
||||
}, **uready})
|
||||
|
||||
# async dispatch of guilds
|
||||
self.ext.loop.create_task(self.guild_dispatch(guilds))
|
||||
|
|
|
|||
|
|
@ -112,7 +112,7 @@ class Storage:
|
|||
return {
|
||||
'user': await self.get_user(member_id),
|
||||
'nick': row['nickname'],
|
||||
'roles': [row[0] for row in members_roles],
|
||||
'roles': [guild_id] + [row[0] for row in members_roles],
|
||||
'joined_at': row['joined_at'].isoformat(),
|
||||
'deaf': row['deafened'],
|
||||
'mute': row['muted'],
|
||||
|
|
@ -177,7 +177,8 @@ class Storage:
|
|||
async def get_channel_data(self, guild_id) -> List[Dict]:
|
||||
"""Get channel information on a guild"""
|
||||
channel_basics = await self.db.fetch("""
|
||||
SELECT * FROM guild_channels
|
||||
SELECT id, guild_id::text, parent_id, name, position, nsfw
|
||||
FROM guild_channels
|
||||
WHERE guild_id = $1
|
||||
""", guild_id)
|
||||
|
||||
|
|
@ -215,6 +216,21 @@ class Storage:
|
|||
|
||||
return channels
|
||||
|
||||
async def get_role_data(self, guild_id: int) -> List[Dict[str, Any]]:
|
||||
roledata = await self.db.fetch("""
|
||||
SELECT id::text, name, color, hoist, position,
|
||||
permissions, managed, mentionable
|
||||
FROM roles
|
||||
WHERE guild_id = $1
|
||||
""", guild_id)
|
||||
|
||||
roles = []
|
||||
|
||||
for row in roledata:
|
||||
roles.append(dict(row))
|
||||
|
||||
return roles
|
||||
|
||||
async def get_guild_extra(self, guild_id: int,
|
||||
user_id=None, large=None) -> Dict:
|
||||
"""Get extra information about a guild."""
|
||||
|
|
@ -238,12 +254,14 @@ class Storage:
|
|||
|
||||
members = await self.get_member_data(guild_id)
|
||||
channels = await self.get_channel_data(guild_id)
|
||||
roles = await self.get_role_data(guild_id)
|
||||
|
||||
return {**res, **{
|
||||
'member_count': member_count,
|
||||
'members': members,
|
||||
'voice_states': [],
|
||||
'channels': channels,
|
||||
'roles': roles,
|
||||
# TODO: finish those
|
||||
'presences': [],
|
||||
}}
|
||||
|
|
|
|||
|
|
@ -278,7 +278,7 @@ CREATE TABLE IF NOT EXISTS roles (
|
|||
guild_id bigint REFERENCES guilds (id) ON DELETE CASCADE,
|
||||
|
||||
name varchar(100) NOT NULL,
|
||||
color int DEFAULT 0,
|
||||
color int DEFAULT 1,
|
||||
hoist bool DEFAULT false,
|
||||
position int NOT NULL,
|
||||
permissions int NOT NULL,
|
||||
|
|
|
|||
Loading…
Reference in New Issue