def linkrole(self, ctx, role_name:str, level:int, remove_role = None):
"""Associate a role with a level. Removes previous role if given."""
server = ctx.message.server
role_obj = discord.utils.find(lambda r: r.name == role_name, server.roles)
remove_role_obj = discord.utils.find(lambda r: r.name == remove_role, server.roles)
if role_obj == None or (remove_role != None and remove_role_obj == None):
if remove_role == None:
await self.bot.say("**Please make sure the `{}` role exists!**".format(role_name))
else:
await self.bot.say("**Please make sure the `{}` and/or `{}` roles exist!**".format(role_name, remove_role))
else:
server_roles = db.roles.find_one({'server_id':server.id})
if not server_roles:
new_server = {
'server_id': server.id,
'roles': {
role_name: {
'level':str(level),
'remove_role': remove_role
}
}
}
db.roles.insert_one(new_server)
else:
if role_name not in server_roles['roles']:
server_roles['roles'][role_name] = {}
server_roles['roles'][role_name]['level'] = str(level)
server_roles['roles'][role_name]['remove_role'] = remove_role
db.roles.update_one({'server_id':server.id}, {'$set':{'roles':server_roles['roles']}})
if remove_role == None:
await self.bot.say("**The `{}` role has been linked to level `{}`**".format(role_name, level))
else:
await self.bot.say("**The `{}` role has been linked to level `{}`. Will also remove `{}` role.**".format(
role_name, level, remove_role))
评论列表
文章目录