async def help_page(): if await discord.authorized: user = await fetch_user_with_perms() else: user = False commands = slash.commands info = "" help_list = [] for command in commands: options = commands[command].options guilds = ', '.join([ bot.get_guild(guild_id).name for guild_id in commands[command].allowed_guild_ids ]) command_help = { "options": options, "guilds": guilds, "description": markdown(commands[command].description) if commands[command].description else "No Description", "command_name": command } help_list.append(command_help) return await render_template("help.html", help_list=help_list, user=user)
async def home(): if await discord.authorized: user = await fetch_user_with_perms() else: user = False guilds = ', '.join( [bot.get_guild(guild_id).name for guild_id in SLASH_COMMANDS_GUILDS]) registered_users = len(fetch_players_list_discord_id()) online_members = sum( member.status != Status.offline and not member.bot for member in bot.get_guild(SLASH_COMMANDS_GUILDS[0]).members) return await render_template("home.html", discord_invite=PUG_INVITE_LINK, guilds=guilds, registered_users=registered_users, online_members=online_members, user=user)
async def mod_tools(): if await discord.authorized: user = await fetch_user_with_perms() if user["is_mod"]: guild = bot.get_guild(SLASH_COMMANDS_GUILDS[0]) text_channels = guild.text_channels member = get(guild.members, id=user["user"].id) allowed_text_channels = [ channel for channel in text_channels if channel.permissions_for(member).send_messages ] return await render_template( '/moderators/mod_tools.html', user=user, allowed_text_channels=allowed_text_channels) else: return redirect(url_for("home")) else: return redirect(url_for("home"))
async def fetch_user_with_perms(): user = await discord.fetch_user() guild = bot.get_guild(SLASH_COMMANDS_GUILDS[0]) admin_role = get(guild.roles, name=ADMIN_ROLE) mod_role = get(guild.roles, name=MOD_ROLE) member = get(guild.members, id=user.id) if member: return { "user": user, "is_admin": member.top_role.position >= admin_role.position, "is_mod": member.top_role.position >= mod_role.position, "in_server": True } else: return { "user": user, "is_admin": False, "is_mod": False, "in_server": False }
async def fetch_dummy_user(): """for dev purposes""" user = bot.get_user(175964671520669696) guild = bot.get_guild(SLASH_COMMANDS_GUILDS[0]) admin_role = get(guild.roles, name=ADMIN_ROLE) mod_role = get(guild.roles, name=MOD_ROLE) member = get(guild.members, id=user.id) if member: return { "user": user, "is_admin": member.top_role.position >= admin_role.position, "is_mod": member.top_role.position >= mod_role.position, "in_server": True } else: return { "user": user, "is_admin": False, "is_mod": False, "in_server": False }
async def send_message(): if await discord.authorized: user = await fetch_user_with_perms() if user["is_mod"]: message_info = await request.get_json() guild = bot.get_guild(SLASH_COMMANDS_GUILDS[0]) member = get(guild.members, id=user["user"].id) info(message_info) info(f"{user['user']} sent message \"{message_info['message']}\"") channel = bot.get_channel(int(message_info["channel_id"])) allowed_text_channels = [ channel for channel in guild.text_channels if channel.permissions_for(member).send_messages ] if channel in allowed_text_channels: await channel.send(message_info["message"]) else: return jsonify({ "success": False, "error": "You do not have perms for this channel" }) return jsonify({"success": True}) else: return jsonify({ "success": False, "error": "You need the PUG Mod role to do this" }) else: return jsonify({ "success": False, "error": "You are not logged in with your discord account" })
def get_guild(id): return bot.get_guild(id)