log.info('User {} {} an administrator{}'.format(user.name, 'is' if ret else 'is not', ' on server {}'.format(server.name) if server is not None else ''))
return ret
+def is_member(member, name, author = None):
+ if author is not None:
+ if not member.server.get_member(author.id):
+ return False
+ parts = name.split('#')
+ member_name = parts[0].lower()
+ if len(parts) > 1:
+ discriminator = parts[1]
+ else:
+ discriminator = None
+ if member.name.lower() != member_name:
+ if member.nick is None:
+ return False
+ if member.nick.lower() != member_name:
+ return False
+ if discriminator is not None and member.discriminator != discriminator:
+ return False
+ return True
+
+def get_member_by_name(name, author = None):
+ for member in client.get_all_members():
+ if is_member(member, name, author):
+ return member
+ return None
+
def get(key):
if key in variables:
return variables[key].value
log.warning("User {} isn't on role{} server {}!".format(author, role.name, server.name))
if m.group(1) != '&':
log.debug('Member {}.'.format(name))
- parts = name.split('#')
- member_name = parts[0].lower()
- if len(parts) > 1:
- discriminator = parts[1]
- else:
- discriminator = None
- for member in client.get_all_members():
- if member.name.lower() != member_name:
- if member.nick is None:
- continue
- if member.nick.lower() != member_name:
- continue
- if discriminator is not None and member.discriminator != discriminator:
- continue
+ member = get_member_by_name(name, author)
+ if member is not None:
log.info('Parsed {} as {}#{} on {}'.format(name, member.name, member.discriminator, server.name))
return member.id
log.warning("Can't find role or member with name {}!".format(name))
results.append(member)
break
else:
- for member in client.get_all_members():
- if target:
- parts = target.lower().split('#')
- if member.name.lower() != parts[0]:
- continue
- if len(parts) > 1 and member.discriminator != parts[1]:
- continue
- results.append(member)
+ if target:
+ member = bot.get_member_by_name(target)
+ if member is not None:
+ results.append(member)
if do & Identify.role.value:
if role_id:
for server in client.servers: