Пример #1
0
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,
        }
Пример #2
0
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,
        }
Пример #3
0
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}
Пример #4
0
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}
Пример #5
0
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
    }
Пример #6
0
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}
Пример #7
0
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}
Пример #8
0
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
Пример #9
0
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
    }
Пример #10
0
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
Пример #11
0
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
    }
Пример #12
0
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}
Пример #13
0
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}
Пример #14
0
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))
Пример #15
0
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)
Пример #16
0
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)