def guilds(): guilds = [] dbguilds = db.session.query(Guilds).all() for guild in dbguilds: rguild = redisqueue.get_guild(guild.guild_id) if not rguild: continue guilds.append({ "guild_id": guild.guild_id, "name": rguild["name"], "icon": rguild["icon"] }) return render_template("admin_guilds.html.j2", servers=guilds, icon_generate=generate_guild_icon_url)
def administrate_guild(guild_id): if not check_user_can_administrate_guild(guild_id): return redirect(url_for("user.dashboard")) guild = redisqueue.get_guild(guild_id) if not guild: session["redirect"] = url_for("user.administrate_guild", guild_id=guild_id, _external=True) return redirect(url_for("user.add_bot", guild_id=guild_id)) session["redirect"] = None db_guild = db.session.query(Guilds).filter(Guilds.guild_id == guild_id).first() if not db_guild: db_guild = Guilds(guild["id"]) db.session.add(db_guild) db.session.commit() permissions=[] if check_user_permission(guild_id, 5): permissions.append("Manage Embed Settings") if check_user_permission(guild_id, 2): permissions.append("Ban Members") if check_user_permission(guild_id, 1): permissions.append("Kick Members") cosmetics = db.session.query(Cosmetics).filter(Cosmetics.user_id == session['user_id']).first() all_members = db.session.query(UnauthenticatedUsers).filter(UnauthenticatedUsers.guild_id == guild_id).order_by(UnauthenticatedUsers.id).all() all_bans = db.session.query(UnauthenticatedBans).filter(UnauthenticatedBans.guild_id == guild_id).all() users = prepare_guild_members_list(all_members, all_bans) dbguild_dict = { "id": db_guild.guild_id, "name": guild["name"], "roles": guild["roles"], "unauth_users": db_guild.unauth_users, "visitor_view": db_guild.visitor_view, "webhook_messages": db_guild.webhook_messages, "chat_links": db_guild.chat_links, "bracket_links": db_guild.bracket_links, "mentions_limit": db_guild.mentions_limit, "unauth_captcha": db_guild.unauth_captcha, "icon": guild["icon"], "invite_link": db_guild.invite_link if db_guild.invite_link != None else "", "guest_icon": db_guild.guest_icon if db_guild.guest_icon != None else "", "post_timeout": db_guild.post_timeout, "max_message_length": db_guild.max_message_length, "banned_words_enabled": db_guild.banned_words_enabled, "banned_words_global_included": db_guild.banned_words_global_included, "banned_words": json.loads(db_guild.banned_words), "autorole_unauth": db_guild.autorole_unauth, "autorole_discord": db_guild.autorole_discord, "file_upload": db_guild.file_upload, } return render_template("administrate_guild.html.j2", guild=dbguild_dict, members=users, permissions=permissions, cosmetics=cosmetics, disabled=(guild_id in list_disabled_guilds()))
def delete_webhook_if_too_much(webhook): if not webhook: return guild_id = webhook["guild_id"] if guild_webhooks_enabled(guild_id): guild = redisqueue.get_guild(guild_id) guild_webhooks = guild["webhooks"] total_wh_cnt = len(guild_webhooks) titan_wh_cnt = 0 for wh in guild_webhooks: if wh["name"].startswith("[Titan] "): titan_wh_cnt = titan_wh_cnt + 1 if titan_wh_cnt > 0 and total_wh_cnt >= 8: try: discord_api.delete_webhook(webhook["id"], webhook["token"]) except: pass # not my problem now
def get_channel_webhook_url(guild_id, channel_id): if not guild_webhooks_enabled(guild_id): return None guild = redisqueue.get_guild(guild_id) guild_webhooks = guild["webhooks"] name = "[Titan] " username = session["username"] if len(username) > 19: username = username[:19] if user_unauthenticated(): name = name + username + "#" + str(session["user_id"]) else: name = name + username + "#" + str(session["discriminator"]) for webhook in guild_webhooks: if channel_id == webhook["channel_id"] and webhook["name"] == name: return {"id": webhook["id"], "token": webhook["token"]} webhook = discord_api.create_webhook(channel_id, name) return webhook["content"]
def get_online_discord_users(guild_id, embed): apimembers = redisqueue.list_guild_members(guild_id) apimembers_filtered = {} for member in apimembers: apimembers_filtered[int(member["id"])] = member guild_roles = redisqueue.get_guild(guild_id)["roles"] guildroles_filtered = {} for role in guild_roles: guildroles_filtered[role["id"]] = role for member in embed['members']: apimem = apimembers_filtered.get(int(member["id"])) member["hoist-role"] = None member["color"] = None if apimem: member["hoist-role"] = apimem["hoist-role"] member["color"] = apimem["color"] member["avatar"] = apimem["avatar"] member["avatar_url"] = apimem["avatar_url"] return embed['members']
def guild_embed(guild_id): if check_guild_existance(guild_id): guild = redisqueue.get_guild(guild_id) dbguild = db.session.query(Guilds).filter( Guilds.guild_id == guild_id).first() if not dbguild: abort(404) guild_dict = { "id": guild["id"], "name": guild["name"], "unauth_users": dbguild.unauth_users, "icon": guild["icon"], "invite_link": dbguild.invite_link, "invite_domain": parse_url_domain(dbguild.invite_link), "post_timeout": dbguild.post_timeout, } customcss = get_custom_css() return render_template( "embed.html.j2", disabled=str(guild_id) in list_disabled_guilds(), login_greeting=get_logingreeting(), guild_id=guild_id, guild=guild_dict, generate_guild_icon=generate_guild_icon_url, unauth_enabled=guild_query_unauth_users_bool(guild_id), visitors_enabled=guild_accepts_visitors(guild_id), unauth_captcha_enabled=guild_unauthcaptcha_enabled(guild_id), client_id=config['client-id'], recaptcha_site_key=config["recaptcha-site-key"], css=customcss, cssvariables=parse_css_variable(customcss), same_target=request.args.get("sametarget", False) == "true", userscalable=request.args.get("userscalable", "True").lower().startswith("t"), fixed_sidenav=request.args.get("fixedsidenav", "False").lower().startswith("t"), is_peak=request.args.get("forcepeak", False) == "1" or is_peak(guild_id)) abort(404)
def get_user_color(self, guild_id, user_id): color = None member = redisqueue.get_guild_member(guild_id, user_id) if not member: return None guild_roles = redisqueue.get_guild(guild_id)["roles"] guildroles_filtered = {} for role in guild_roles: guildroles_filtered[role["id"]] = role member_roleids = member["roles"] member_roles = [] for roleid in member_roleids: role = guildroles_filtered.get(str(roleid)) if not role: continue member_roles.append(role) member_roles = sorted(member_roles, key=lambda k: k['position']) for role in member_roles: if role["color"] != 0: color = '{0:02x}'.format(role["color"]) while len(color) < 6: color = "0" + color return color
def on_disconnect(self): time.sleep(0) if "user_keys" not in session: self.teardown_db_session() return if "socket_guild_id" not in session: self.teardown_db_session() return else: guild_id = session["socket_guild_id"] msg = {} if session["unauthenticated"]: msg = { "unauthenticated": True, "username": session["username"], "discriminator": session["user_id"] } else: msg = {"unauthenticated": False, "id": str(session["user_id"])} emit("embed_user_disconnect", msg, room="GUILD_" + guild_id) if guild_webhooks_enabled(guild_id): # Delete webhooks guild_webhooks = redisqueue.get_guild(guild_id)["webhooks"] name = "[Titan] " username = session["username"] if len(username) > 19: username = username[:19] if session["unauthenticated"]: name = name + username + "#" + str(session["user_id"]) else: name = name + username + "#" + str( session["discriminator"]) for webhook in guild_webhooks: time.sleep(0) if webhook["name"] == name: discord_api.delete_webhook(webhook["id"], webhook["token"]) self.teardown_db_session()
def get_guild_roles(guild_id): return redisqueue.get_guild(guild_id)["roles"]
def get_guild_emojis(guild_id): return redisqueue.get_guild(guild_id)["emojis"]