def dashboard(server_id): log.info("Level dashboard") key_path = '{}:Level:Config'.format(server_id) initial_announcement = '{player}, you just advanced to **level {level}** !\n Now go and fight more mobs!' announcement = db.hget(key_path,"announce_message") if announcement is None: db.hset(key_path,"announce_message", initial_announcement) db.hset(key_path.format(server_id),"announce",'on') cooldown = db.hget(key_path.format(server_id),"rank_cooldown") or 0 config = db.hgetall(key_path) #getting database of members db_banned_members = db.smembers('{}:Level:banned_members'.format(server_id)) or [] db_banned_roles = db.smembers('{}:Level:banned_roles'.format(server_id)) or [] db_banned_channels = db.smembers('{}:Level:banned_channels'.format(server_id)) or [] #checking roles get_role = utils.resource_get("/guilds/{}".format(server_id)) guild_roles = get_role['roles'] #get member info get_member = utils.resource_get("/guilds/{}/members?&limit=1000".format(server_id)) guild_members=[x['user'] for x in get_member] #getting channel guild_channels = utils.get_channel(server_id) #ban role and members banned_roles = list(filter(lambda r: r['id'] in db_banned_roles,guild_roles)) banned_members = list(filter(lambda r:r['id'] in db_banned_members,guild_members)) banned_channels = list(filter(lambda r:r['id'] in db_banned_channels,guild_channels)) log.info("Done getting list of banned, now getting rewards roles") #reward roles role_level = db.hgetall("{}:Level:role_reward".format(server_id)) or {} temp = [ {"name":x['name'], "id":x['id'], "color":hex(x["color"]).split("0x")[1], "level":role_level.get(x["id"],0)} for x in guild_roles] temp.sort(key=lambda x: x['name']) reward_roles = [temp[:int(len(temp)/2)],temp[int(len(temp)/2):]] #Spliting them into half return { 'config':config, 'banned_members': banned_members, 'guild_members':guild_members, 'banned_roles': banned_roles, 'guild_roles':guild_roles, 'banned_channels':banned_channels, 'guild_channels':guild_channels, 'cooldown': cooldown, "reward_roles":reward_roles, }
def dashboard(server_id): log.info("loading cogs page") default_message = "{user}, welcome to **{server}**!" get_message = db.hget("{}:Welcome:Message".format(server_id), "message") if get_message is None: db.hset("{}:Welcome:Message".format(server_id), "message", default_message) get_message = default_message config = db.hgetall("{}:Welcome:Message".format(server_id)) channel = utils.get_channel(server_id) delete_msg = db.hget("{}:Welcome:Message".format(server_id), "delete_msg") or 0 if config.get("channel", False) is False: welcome_channel = server_id else: welcome_channel = config['channel'] db_assign_role = db.smembers('{}:Welcome:Assign_Roles'.format(server_id)) or [] get_role = utils.resource_get("/guilds/{}".format(server_id)) guild_roles = get_role['roles'] assign_role = list(filter(lambda r: r['name'] in db_assign_role or r['id'] in db_assign_role, guild_roles)) return { 'guild_channel': channel, "welcome_channel": welcome_channel, 'assign_role': assign_role, 'guild_roles': guild_roles, 'message': get_message, 'config': config, 'delete_msg': delete_msg}
def dashboard(server_id): log.info("loading cog pages") db_role = db.smembers('{}:Memes:editor_role'.format(server_id)) or [] get_role = utils.resource_get("/guilds/{}".format(server_id)) guild_roles = get_role['roles'] role = list(filter(lambda r: r['name'] in db_role or r['id'] in db_role, guild_roles)) return {"roles": role, "guild_roles": guild_roles}
def dashboard(server_id): log.info("loading cogs page") default_message = "{user}, welcome to **{server}**!" get_message = db.hget("{}:Welcome:Message".format(server_id), "message") if get_message is None: db.hset("{}:Welcome:Message".format(server_id), "message", default_message) get_message = default_message config = db.hgetall("{}:Welcome:Message".format(server_id)) channel = utils.get_channel(server_id) delete_msg = db.hget("{}:Welcome:Message".format(server_id), "delete_msg") or 0 if config.get("channel", False) is False: welcome_channel = server_id else: welcome_channel = config['channel'] db_assign_role = db.smembers( '{}:Welcome:Assign_Roles'.format(server_id)) or [] get_role = utils.resource_get("/guilds/{}".format(server_id)) guild_roles = get_role['roles'] assign_role = list( filter( lambda r: r['name'] in db_assign_role or r['id'] in db_assign_role, guild_roles)) return { 'guild_channel': channel, "welcome_channel": welcome_channel, 'assign_role': assign_role, 'guild_roles': guild_roles, 'message': get_message, 'config': config, 'delete_msg': delete_msg }
def dashboard(server_id): info = db.hgetall("{}:AntiRaid:Config".format(server_id)) or default_option db_mute_role = db.smembers('{}:AntiRaid:mute_roles'.format(server_id)) or [] get_role = utils.resource_get("/guilds/{}".format(server_id)) guild_roles = get_role['roles'] mute_role = list(filter(lambda r: r['name'] in db_mute_role or r['id'] in db_mute_role, guild_roles)) return {"option_data":option_setting,"config":info,"mute_roles":mute_role,"guild_roles":guild_roles}
def dashboard(server_id): log.info("Load cogs pages") db_admin_role = db.smembers('{}:Mod:admin_roles'.format(server_id)) or [] db_mute_role = db.smembers('{}:Mod:mute_roles'.format(server_id)) or [] get_role = utils.resource_get("/guilds/{}".format(server_id)) guild_roles = get_role['roles'] admin_role = list(filter(lambda r: r['name'] in db_admin_role or r['id'] in db_admin_role, guild_roles)) mute_role = list(filter(lambda r: r['name'] in db_mute_role or r['id'] in db_mute_role, guild_roles)) return {"admin_roles": admin_role, "mute_roles":mute_role,"guild_roles": guild_roles}
def max_use(server_id): user = utils.session.get('user') role_data = db.hgetall("{}:Customcmd:role".format(server_id)) get_user_role = utils.resource_get("/guilds/{}/members/{}".format(server_id,user['id']))["roles"] use = [] for role,num in role_data.items(): if role in get_user_role: use.append(num) if use: max_cmd = max([int(x) for x in use]) else: max_cmd = 0 return max_cmd
def dashboard(server_id): number = random.randint(0, len(anime_picture) - 1) get_role = utils.resource_get("/guilds/{}".format(server_id)) guild_roles = get_role['roles'] role = db.smembers('{}:Memes:editor_role'.format(server_id)) or [] channel = utils.get_channel(server_id) admin_role = list( filter(lambda r: r['name'] in role or r['id'] in role, guild_roles)) return { "Info": anime_picture[number], "guild_roles": guild_roles, "admin_roles": admin_role, "channel": channel }
def max_use(server_id): if utils.is_owner(): return 99 #well..... user = utils.session.get('user') role_data = db.hgetall("{}:Customcmd:role".format(server_id)) get_user_role = utils.resource_get("/guilds/{}/members/{}".format(server_id,user['id']))["roles"] use = [] for role,num in role_data.items(): if role in get_user_role: use.append(num) if use: max_cmd = max([int(x) for x in use]) else: max_cmd = 0 return max_cmd
def dashboard(server_id): info = db.hgetall("{}:AntiRaid:Config".format(server_id)) or default_option db_mute_role = db.smembers( '{}:AntiRaid:mute_roles'.format(server_id)) or [] get_role = utils.resource_get("/guilds/{}".format(server_id)) guild_roles = get_role['roles'] mute_role = list( filter(lambda r: r['name'] in db_mute_role or r['id'] in db_mute_role, guild_roles)) return { "option_data": option_setting, "config": info, "mute_roles": mute_role, "guild_roles": guild_roles }
def dashboard(server_id): log.info("loading cog pages") db_role = db.smembers('{}:Customcmd:editor_role'.format(server_id)) or [] get_role = utils.resource_get("/guilds/{}".format(server_id)) guild_roles = get_role['roles'] role = list(filter(lambda r: r['name'] in db_role or r['id'] in db_role, guild_roles)) role_max = db.hgetall("{}:Customcmd:role".format(server_id)) or {} temp = [ {"name":x['name'], "id":x['id'], "color":hex(x["color"]).split("0x")[1], "max":role_max.get(x["id"],0)} for x in guild_roles] temp.sort(key=lambda x: x['name']) role_max_use = [temp[:int(len(temp)/2)],temp[int(len(temp)/2):]] #Spliting them into half return {"roles": role, "guild_roles": guild_roles,"role_max":role_max_use,"limit":limit}
def trust_level(server_id): #Getting info about server, id, name and icon of it to display it. server = { 'id':server_id, 'name':db.hget("Info:Server",server_id), 'icon':db.hget("Info:Server_Icon",server_id)} def ar(i): #ar for assign_role,shortcut ik... db_assign_role = db.smembers("{}:Discourse:trust_role{}".format(server_id,i)) or [] return list(filter(lambda r: r['name'] in db_assign_role or r['id'] in db_assign_role, guild_roles)) get_role = utils.resource_get("/guilds/{}".format(server_id)) guild_roles = get_role['roles'] config = db.hgetall("{}:Discourse:Config".format(server_id)) data = discourse(config["domain"],config["api_key"],config["username"],"groups/trust_level_0/members.json") if data is None: flash("Please Note, Nurevam cannot access to groups for some reason, maybe account you provide is not active or you forget to set config at dashboard?","warning") return dashboard(server_id = server_id) return render_template("trust_role.html",server=server,guild_roles=guild_roles, assign_role1=ar(1), assign_role2=ar(2),assign_role3=ar(3),assign_role4=ar(4))
def levels(server_id): is_admin = utils.is_admin(server_id) css_theme = "css/custom/{}.css".format(server_id) if os.path.isfile("static/css/custom/{}.css".format(server_id)) else None print(css_theme) is_private=False if db.get("{}:Level:Private".format(server_id)) == "on": is_private=True #Check if server and plugins are in server_check = db.hget("Info:Server",server_id) if server_check is None: return redirect(url_for('index')) plugin_check = db.hget("{}:Config:Cogs".format(server_id),"level") if plugin_check is None: return redirect(url_for('index')) log.info("Pass all requirement check") server = { 'id':server_id, 'name':server_check, 'icon':db.hget("Info:Server_Icon",server_id)} #Players' level name_list = db.hgetall("Info:Name") avatar_list = db.hgetall("Info:Icon") total_member = len(db.smembers("{}:Level:Player".format(server_id))) player_data = db.sort("{}:Level:Player".format(server_id), by="{}:Level:Player:*->Total_XP".format(server_id), get=[ "{}:Level:Player:*->ID".format(server_id), "{}:Level:Player:*->Total_XP".format(server_id),], start=0, num=total_member, desc=True) data = [] total_exp = 0 for x in range(0,len(player_data),2): if player_data[x] is None: continue if name_list.get(player_data[x]) is None: db.srem("{}:Level:Player".format(server_id),player_data[x]) # print(player_data[x],player_data[x+1]) #for future references total_exp += int(player_data[x+1]) level, remain,next_xp= next_Level(int(player_data[x+1])) name = name_list.get(player_data[x],"None#1234").split("#") temp = { "Name":name[0], "ID":player_data[x], "Level":level, "XP": remain, "Next_XP":next_xp, "Total_XP":player_data[x+1], "Discriminator":name[1], "Avatar":avatar_list.get(player_data[x]), "XP_Percent":100*(float(remain)/float(next_xp)) } data.append(temp) log.info("Done gather player infos") #Role rewards get_role = utils.resource_get("/guilds/{}".format(server_id)) guild_roles = get_role['roles'] role_level = db.hgetall("{}:Level:role_reward".format(server_id)) or {} reward_roles = [ {"name":x['name'], "id":x['id'], "color":hex(x["color"]).split("0x")[1], "level":role_level.get(x["id"],0)} for x in guild_roles if role_level.get(x["id"],"0") != "0" and x["id"] != str(server_id)] reward_roles.sort(key=lambda x: x['name']) print(reward_roles) #Those are for Website stats = {"total_member":total_member,"total_exp":total_exp} if request.args.get('json'): log.info("Requesting Json") return jsonify({"server:":server,"reward_roles":reward_roles,"players":data}) return render_template('level/levels.html', players=data, stats = stats, reward_roles = reward_roles,server=server, title="{} leaderboard".format(server['name']),is_admin=is_admin,is_private=is_private,css_theme = css_theme)
def levels(server_id): is_admin = utils.is_admin(server_id) css_theme = "css/custom/{}.css".format(server_id) if os.path.isfile("static/css/custom/{}.css".format(server_id)) else None print(css_theme) is_private=False if db.get("{}:Level:Private".format(server_id)) == "on": is_private=True #Check if server and plugins are in server_check = db.hget("Info:Server",server_id) if server_check is None: return redirect(url_for('index')) plugin_check = db.hget("{}:Config:Cogs".format(server_id),"level") if plugin_check is None: return redirect(url_for('index')) log.info("Pass all requirement check") server = { 'id':server_id, 'name':server_check, 'icon':db.hget("Info:Server_Icon",server_id)} #Players' level name_list = db.hgetall("Info:Name") avatar_list = db.hgetall("Info:Icon") total_member = len(db.smembers("{}:Level:Player".format(server_id))) player_data = db.sort("{}:Level:Player".format(server_id), by="{}:Level:Player:*->Total_XP".format(server_id), get=[ "{}:Level:Player:*->ID".format(server_id), "{}:Level:Player:*->Total_XP".format(server_id),], start=0, num=total_member, desc=True) data = [] total_exp = 0 for x in range(0,len(player_data),2): if name_list.get(player_data[x]) is None: db.srem("{}:Level:Player".format(server_id),player_data[x]) if player_data[x] is None: continue # print(player_data[x],player_data[x+1]) #for future references total_exp += int(player_data[x+1]) level, remain,next_xp= next_Level(int(player_data[x+1])) name = name_list.get(player_data[x],"None#1234").split("#") temp = { "Name":name[0], "ID":player_data[x], "Level":level, "XP": remain, "Next_XP":next_xp, "Total_XP":player_data[x+1], "Discriminator":name[1], "Avatar":avatar_list.get(player_data[x]), "XP_Percent":100*(float(remain)/float(next_xp)) } data.append(temp) log.info("Done gather player infos") #Role rewards get_role = utils.resource_get("/guilds/{}".format(server_id)) guild_roles = get_role['roles'] role_level = db.hgetall("{}:Level:role_reward".format(server_id)) or {} reward_roles = [ {"name":x['name'], "id":x['id'], "color":hex(x["color"]).split("0x")[1], "level":role_level.get(x["id"],0)} for x in guild_roles if role_level.get(x["id"],"0") != "0" and x["id"] != str(server_id)] reward_roles.sort(key=lambda x: x['name']) print(reward_roles) #Those are for Website stats = {"total_member":total_member,"total_exp":total_exp} if request.args.get('json'): log.info("Requesting Json") return jsonify({"server:":server,"reward_roles":reward_roles,"players":data}) return render_template('level/levels.html', players=data, stats = stats, reward_roles = reward_roles,server=server, title="{} leaderboard".format(server['name']),is_admin=is_admin,is_private=is_private,css_theme = css_theme)