async def admin_get_member_status(self, context, name=None): member = find_member(name, roles) if member is not None: response = '' for role in member.roles: if role.name != '@everyone': response += f'{role.name} ,' response = response[:-1] headers = {'Authorization': roles.auth_token} web_response = requests.get( f'{roles.BASE_URL}/api/users/discord/{member.id}', headers=headers, verify=roles.VERIFY_SSL) if web_response.status_code == 200: web_privs = web_response.json()['role'] if web_response.json( )['is_active'] == False or web_response.json( )['guild']['is_active'] == False: web_privs = 'none' await context.send( f'User `{web_response.json()["username"]}` found for {member.mention}, they have the roles: {response}. They have web privilage level of: {web_privs}' ) else: await context.send( f'No user found for {context.author.mention}') await context.send(response) else: await context.send( 'you must provide a valid member name in order to use a find query.' )
async def admin_demote_user_permisions(self, context, name=None): roles.log.info(f'demote_user {context.author}') member = find_member(name, roles) if (roles.admin_role in context.author.roles) and member is not None: data = json.dumps({'is_active': True, 'role': 'verified'}) headers = { 'Authorization': roles.auth_token, 'Content-Type': 'application/json' } response = requests.patch( f'{roles.BASE_URL}/api/users/discordRoles/{member.id}', data=data, headers=headers, verify=roles.VERIFY_SSL) if response.status_code == 200: await context.send( f'{member.mention} has been demoted on flamesofexile.com') roles.log.info('demote member completed') else: roles.log.info('problem with api request when demoting member') await context.send( f'Their was a problem demoting {member.mention} on flamesofexile.com' ) elif member is not None: await context.send( 'You do not have the authority to invoke this action') roles.admin_channel.send( f'{roles.it_role.mention}{context.author.mention} attempted to demote {member.mention} this action is reserved for {roles.admin_role.mention}' ) else: await context.send( 'You need to include the name of a member in order to invoke this action' )
async def diplo_vouch(self, context, user=None): diplo = context.author if (roles.diplo_role not in context.author.roles) and (roles.admin_role not in context.author.roles): await context.send( 'you do not have the required permissions to invoke this action' ) await roles.admin_channel.send( f'{context.author.mention} attempted to invoke "vouch" but does not have the required permissions' ) return target_user = find_member(user, roles) if target_user is None: await context.send( 'you must provide a valid username to invoke this action') return data = json.dumps({'diplo': diplo.id, 'target_user': target_user.id}) headers = { 'Authorization': roles.auth_token, 'Content-Type': 'application/json' } response = requests.patch(f'{roles.BASE_URL}/api/users/alliance/vouch', data=data, headers=headers, verify=roles.VERIFY_SSL) if response.status_code == 200: await target_user.add_roles(roles.alliance_role) roles.log.info(roles.alliance_role) await context.send( f'{target_user.mention} has been vouched for by {diplo.mention}' ) await roles.admin_channel.send( f'{roles.admin_role.mention}: {target_user.mention} has been granted roles by {diplo.mention}' ) elif response.status_code == 403: await context.send( f'You must belong to the same guild to give {target_user.mention}\'s roles ' ) await roles.admin_channel.send( f'{context.author.mention} attempted to add roles to a member of a different guild ({target_user.mention})' ) else: await context.send( f'there was a problem processing your request. If this problem continues contact {roles.it_role.mention}' ) await roles.it_channel.send( f'{diplo.mention} had a problem running vouch for {target_user.mention}' )
async def admin_exile_member(self, context, name=None, reason=None): roles.log.info(f'exile_member called by {context.author}') try: member = find_member(name, roles) if context.author == member: context.send('you cannot exile yourself') return if (roles.admin_role in context.author.roles) and member is not None: await member.remove_roles(roles.member_role, roles.admin_role, roles.recruit_role, roles.alliance_role, roles.diplo_role) data = json.dumps({'is_active': False, 'role': 'guest'}) headers = { 'Authorization': roles.auth_token, 'Content-Type': 'application/json' } response = requests.patch( f'{roles.BASE_URL}/api/users/discordRoles/{member.id}', data=data, headers=headers, verify=roles.VERIFY_SSL) if response.status_code == 200: await context.send( f'{member.mention} has been exiled and their roles have been revoked from flamesofexile.com' ) roles.log.info('exile member completed') else: roles.log.info( 'problem with api request when exileing member') await context.send( f'{member.mention} has been exiled but an error was encountered removing roles from flamesofexile.com manual removal will be needed' ) elif member: await context.send( 'You do not have the authority to invoke this acction') roles.admin_channel.send( f'{roles.it_role.mention}{context.author.mention} attempted to exile {member.mention} this action is reserved for {roles.admin_role.mention}' ) else: await context.send( 'You need to include the name of a member in order to invoke this action' ) except HTTPException: await context.send( 'An error was encountered USER Privilages May not have been completely removed.' ) roles.log.info('exile member raised HTTP Exception')
async def admin_grant_user_permissions(self, context, name=None): roles.log.info(f'grant_user_permissions called by {context.author}') try: member = find_member(name, roles) if (roles.admin_role in context.author.roles) and member is not None: await member.add_roles(roles.member_role) await member.remove_roles(roles.recruit_role) data = json.dumps({'is_active': True, 'role': 'verified'}) headers = { 'Authorization': roles.auth_token, 'Content-Type': 'application/json' } response = requests.patch( f'{roles.BASE_URL}/api/users/discordRoles/{member.id}', data=data, headers=headers, verify=roles.VERIFY_SSL) if response.status_code == 200: await context.send( f'{member.mention} has been granted and their roles have been verified on flamesofexile.com' ) roles.log.info('grant member completed') else: roles.log.info( 'problem with api request when granting member') await context.send( f'{member.mention} has had roles granted on discord but their was a problem granting them permissions on flamesofexile.com' ) elif member is not None: await context.send( 'You do not have the authority to invoke this action') roles.admin_channel.send( f'{roles.it_role.mention}{context.author.mention} attempted to grant {member.mention} this action is reserved for {roles.admin_role.mention}' ) else: await context.send( 'You need to include the name of a valid member in order to invoke this action' ) except HTTPException: await context.send( 'An error was encountered NO USER Privilages have been modified.' )