Esempio n. 1
0
async def remove_rank(client: bot.Overlord, msg: discord.Message,
                      role_name: str):
    role = client.get_role(role_name)
    if role is None:
        await msg.channel.send(
            res.get("messages.rank_role_unknown").format(role_name))
        return
    ranks = client.config.ranks.role.copy().value()
    if role_name not in ranks:
        await msg.channel.send(res.get("messages.rank_unknown"))
        return
    del ranks[role_name]
    path = 'bot.ranks.role'

    if await __safe_alter_config(client, path, ranks):
        __save_config(client)
        log.info(f'Done')
        await client.control_channel.send(res.get("messages.done"))
Esempio n. 2
0
async def edit_rank(client: bot.Overlord, msg: discord.Message, role_name: str,
                    weight: str, membership: str, msg_count: str,
                    vc_time: str):
    try:
        weight = int(weight)
        membership = int(membership)
        messages_count = int(msg_count)
        vc_time = int(vc_time)
    except ValueError:
        await msg.channel.send(res.get("messages.rank_arg_parse_error"))
        return
    role = client.get_role(role_name)
    if role is None:
        await msg.channel.send(
            res.get("messages.rank_role_unknown").format(role_name))
        return
    ranks = client.config.ranks.role.copy().value()
    if role_name not in ranks:
        await msg.channel.send(res.get("messages.rank_unknown"))
        return
    ranks_weights = {ranks[r]['weight']: r for r in ranks}
    if weight in ranks_weights and ranks_weights[weight] != role_name:
        await msg.channel.send(
            res.get("messages.rank_role_same_weight").format(
                ranks_weights[weight]))
        return
    ranks[role_name] = {
        "weight": weight,
        "membership": membership,
        "messages": messages_count,
        "vc": vc_time
    }
    path = 'bot.ranks.role'

    if await __safe_alter_config(client, path, ranks):
        __save_config(client)
        log.info(f'Done')
        await client.control_channel.send(res.get("messages.done"))