mirror of
https://github.com/TitanEmbeds/Titan.git
synced 2024-12-24 14:07:03 +01:00
Transition over to use db instead of fetching discord REST
This commit is contained in:
parent
9c24093901
commit
fc169c2063
@ -145,6 +145,7 @@ class DatabaseInterface(object):
|
|||||||
"color": role.color.value,
|
"color": role.color.value,
|
||||||
"hoist": role.hoist,
|
"hoist": role.hoist,
|
||||||
"position": role.position,
|
"position": role.position,
|
||||||
|
"permissions": role.permissions.value
|
||||||
})
|
})
|
||||||
return roles
|
return roles
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
from titanembeds.database import db, Guilds, UnauthenticatedUsers, UnauthenticatedBans, AuthenticatedUsers, KeyValueProperties, get_channel_messages
|
from titanembeds.database import db, Guilds, UnauthenticatedUsers, UnauthenticatedBans, AuthenticatedUsers, KeyValueProperties, GuildMembers, get_channel_messages, list_all_guild_members
|
||||||
from titanembeds.decorators import valid_session_required, discord_users_only
|
from titanembeds.decorators import valid_session_required, discord_users_only
|
||||||
from titanembeds.utils import check_guild_existance, guild_query_unauth_users_bool, get_client_ipaddr, discord_api, rate_limiter, channel_ratelimit_key, guild_ratelimit_key
|
from titanembeds.utils import check_guild_existance, guild_query_unauth_users_bool, get_client_ipaddr, discord_api, rate_limiter, channel_ratelimit_key, guild_ratelimit_key
|
||||||
from titanembeds.oauth import user_has_permission, generate_avatar_url, check_user_can_administrate_guild
|
from titanembeds.oauth import user_has_permission, generate_avatar_url, check_user_can_administrate_guild
|
||||||
@ -27,9 +27,8 @@ def checkUserRevoke(guild_id, user_key=None):
|
|||||||
banned = checkUserBanned(guild_id)
|
banned = checkUserBanned(guild_id)
|
||||||
if banned:
|
if banned:
|
||||||
return revoked
|
return revoked
|
||||||
member = discord_api.get_guild_member_nocache(guild_id, session['user_id'])
|
dbUser = GuildMembers.query.filter(GuildMembers.guild_id == guild_id).filter(GuildMembers.user_id == session["user_id"]).first()
|
||||||
if member['code'] == 200:
|
revoked = not dbUser.active
|
||||||
revoked = False
|
|
||||||
return revoked
|
return revoked
|
||||||
|
|
||||||
def checkUserBanned(guild_id, ip_address=None):
|
def checkUserBanned(guild_id, ip_address=None):
|
||||||
@ -44,10 +43,8 @@ def checkUserBanned(guild_id, ip_address=None):
|
|||||||
banned = False
|
banned = False
|
||||||
else:
|
else:
|
||||||
banned = False
|
banned = False
|
||||||
bans = discord_api.get_guild_bans(guild_id)['content']
|
dbUser = GuildMembers.query.filter(GuildMembers.guild_id == guild_id).filter(GuildMembers.user_id == session["user_id"]).first()
|
||||||
for user in bans:
|
banned = dbUser.banned
|
||||||
if session['user_id'] == user['user']['id']:
|
|
||||||
return True
|
|
||||||
return banned
|
return banned
|
||||||
|
|
||||||
def update_user_status(guild_id, username, user_key=None):
|
def update_user_status(guild_id, username, user_key=None):
|
||||||
@ -97,7 +94,7 @@ def check_user_in_guild(guild_id):
|
|||||||
return guild_id in session['user_keys']
|
return guild_id in session['user_keys']
|
||||||
else:
|
else:
|
||||||
dbUser = db.session.query(AuthenticatedUsers).filter(and_(AuthenticatedUsers.guild_id == guild_id, AuthenticatedUsers.client_id == session['user_id'])).first()
|
dbUser = db.session.query(AuthenticatedUsers).filter(and_(AuthenticatedUsers.guild_id == guild_id, AuthenticatedUsers.client_id == session['user_id'])).first()
|
||||||
return 200 == discord_api.get_guild_member_nocache(guild_id, session['user_id'])['code'] and dbUser is not None
|
return not checkUserRevoke(guild_id) and dbUser is not None
|
||||||
|
|
||||||
def format_post_content(message):
|
def format_post_content(message):
|
||||||
message = message.replace("<", "\<")
|
message = message.replace("<", "\<")
|
||||||
@ -114,20 +111,28 @@ def format_post_content(message):
|
|||||||
message = "**<{}#{}>** {}".format(session['username'], session['discriminator'], message) # I would like to do a @ mention, but i am worried about notif spam
|
message = "**<{}#{}>** {}".format(session['username'], session['discriminator'], message) # I would like to do a @ mention, but i am worried about notif spam
|
||||||
return message
|
return message
|
||||||
|
|
||||||
|
def get_member_roles(guild_id, user_id):
|
||||||
|
q = db.session.query(GuildMembers).filter(GuildMembers.guild_id == guild_id).filter(GuildMembers.user_id == user_id).first()
|
||||||
|
return json.loads(q.roles)
|
||||||
|
|
||||||
|
def get_dbguild_channels(guild_id):
|
||||||
|
q = db.session.query(Guilds).filter(Guilds.guild_id == guild_id).first()
|
||||||
|
return json.loads(q.channels)
|
||||||
|
|
||||||
def get_guild_channels(guild_id):
|
def get_guild_channels(guild_id):
|
||||||
if user_unauthenticated():
|
if user_unauthenticated():
|
||||||
member_roles = [guild_id] #equivilant to @everyone role
|
member_roles = [guild_id] #equivilant to @everyone role
|
||||||
else:
|
else:
|
||||||
member = discord_api.get_guild_member(guild_id, session['user_id'])['content']
|
member_roles = get_member_roles(guild_id, session['user_id'])
|
||||||
member_roles = member['roles']
|
|
||||||
if guild_id not in member_roles:
|
if guild_id not in member_roles:
|
||||||
member_roles.append(guild_id)
|
member_roles.append(guild_id)
|
||||||
guild_channels = discord_api.get_guild_channels(guild_id)['content']
|
dbguild = db.session.query(Guilds).filter(Guilds.guild_id == guild_id).first()
|
||||||
guild_roles = discord_api.get_guild_roles(guild_id)["content"]
|
guild_channels = json.loads(dbguild.channels)
|
||||||
guild_owner = discord_api.get_guild(guild_id)['content']['owner_id']
|
guild_roles = json.loads(dbguild.roles)
|
||||||
|
guild_owner = json.loads(dbguild.owner_id)
|
||||||
result_channels = []
|
result_channels = []
|
||||||
for channel in guild_channels:
|
for channel in guild_channels:
|
||||||
if channel['type'] == 0:
|
if channel['type'] == "text":
|
||||||
result = {"channel": channel, "read": False, "write": False}
|
result = {"channel": channel, "read": False, "write": False}
|
||||||
if guild_owner == session['user_id']:
|
if guild_owner == session['user_id']:
|
||||||
result["read"] = True
|
result["read"] = True
|
||||||
@ -192,17 +197,17 @@ def get_guild_channels(guild_id):
|
|||||||
def filter_guild_channel(guild_id, channel_id):
|
def filter_guild_channel(guild_id, channel_id):
|
||||||
channels = get_guild_channels(guild_id)
|
channels = get_guild_channels(guild_id)
|
||||||
for chan in channels:
|
for chan in channels:
|
||||||
if chan["channel"]["id"] == guild_id:
|
if chan["channel"]["id"] == channel_id:
|
||||||
return chan
|
return chan
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def get_online_discord_users(guild_id):
|
def get_online_discord_users(guild_id):
|
||||||
embed = discord_api.get_widget(guild_id)
|
embed = discord_api.get_widget(guild_id)
|
||||||
apimembers = discord_api.list_all_guild_members(guild_id)
|
apimembers = list_all_guild_members(guild_id)
|
||||||
apimembers_filtered = {}
|
apimembers_filtered = {}
|
||||||
for member in apimembers:
|
for member in apimembers:
|
||||||
apimembers_filtered[member["user"]["id"]] = member
|
apimembers_filtered[member["user"]["id"]] = member
|
||||||
guild_roles = discord_api.get_guild_roles(guild_id)["content"]
|
guild_roles = json.loads(db.session.query(Guilds).filter(Guilds.guild_id == guild_id).first().roles)
|
||||||
guildroles_filtered = {}
|
guildroles_filtered = {}
|
||||||
for role in guild_roles:
|
for role in guild_roles:
|
||||||
guildroles_filtered[role["id"]] = role
|
guildroles_filtered[role["id"]] = role
|
||||||
@ -235,12 +240,12 @@ def get_online_embed_users(guild_id):
|
|||||||
users['unauthenticated'].append(meta)
|
users['unauthenticated'].append(meta)
|
||||||
for user in auths:
|
for user in auths:
|
||||||
client_id = user.client_id
|
client_id = user.client_id
|
||||||
u = discord_api.get_guild_member(guild_id, client_id)['content']['user']
|
usrdb = db.session.query(GuildMembers).filter(GuildMembers.guild_id == guild_id).filter(GuildMembers.user_id == client_id).first()
|
||||||
meta = {
|
meta = {
|
||||||
'id': u['id'],
|
'id': usrdb.user_id,
|
||||||
'username': u['username'],
|
'username': usrdb.username,
|
||||||
'discriminator': u['discriminator'],
|
'discriminator': usrdb.discriminator,
|
||||||
'avatar_url': generate_avatar_url(u['id'], u['avatar']),
|
'avatar_url': generate_avatar_url(usrdb.user_id, usrdb.avatar),
|
||||||
}
|
}
|
||||||
users['authenticated'].append(meta)
|
users['authenticated'].append(meta)
|
||||||
return users
|
return users
|
||||||
|
@ -6,6 +6,6 @@ from guilds import Guilds
|
|||||||
from unauthenticated_users import UnauthenticatedUsers
|
from unauthenticated_users import UnauthenticatedUsers
|
||||||
from unauthenticated_bans import UnauthenticatedBans
|
from unauthenticated_bans import UnauthenticatedBans
|
||||||
from authenticated_users import AuthenticatedUsers
|
from authenticated_users import AuthenticatedUsers
|
||||||
from guild_members import GuildMembers
|
from guild_members import GuildMembers, list_all_guild_members
|
||||||
from keyvalue_properties import KeyValueProperties, set_keyvalproperty, get_keyvalproperty, getexpir_keyvalproperty, setexpir_keyvalproperty, ifexists_keyvalproperty, delete_keyvalproperty
|
from keyvalue_properties import KeyValueProperties, set_keyvalproperty, get_keyvalproperty, getexpir_keyvalproperty, setexpir_keyvalproperty, ifexists_keyvalproperty, delete_keyvalproperty
|
||||||
from messages import Messages, get_channel_messages
|
from messages import Messages, get_channel_messages
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
from titanembeds.database import db
|
from titanembeds.database import db
|
||||||
|
import json
|
||||||
|
|
||||||
class GuildMembers(db.Model):
|
class GuildMembers(db.Model):
|
||||||
__tablename__ = "guild_members"
|
__tablename__ = "guild_members"
|
||||||
@ -26,3 +27,19 @@ class GuildMembers(db.Model):
|
|||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return '<GuildMembers {0} {1} {2} {3} {4}>'.format(self.id, self.guild_id, self.user_id, self.username, self.discriminator)
|
return '<GuildMembers {0} {1} {2} {3} {4}>'.format(self.id, self.guild_id, self.user_id, self.username, self.discriminator)
|
||||||
|
|
||||||
|
def list_all_guild_members(guild_id):
|
||||||
|
memlist = []
|
||||||
|
members = db.session.query(GuildMembers).filter(GuildMembers.guild_id == guild_id).all()
|
||||||
|
for member in members:
|
||||||
|
memlist.append({
|
||||||
|
"user": {
|
||||||
|
"username": member.username,
|
||||||
|
"discriminator": member.discriminator,
|
||||||
|
"id": member.user_id,
|
||||||
|
"avatar": member.avatar
|
||||||
|
},
|
||||||
|
"roles": json.loads(member.roles),
|
||||||
|
"nickname": member.nickname,
|
||||||
|
})
|
||||||
|
return memlist
|
||||||
|
Loading…
Reference in New Issue
Block a user