From 9706ab57f8fe62eb9976e10b4a42bae25a87bfc8 Mon Sep 17 00:00:00 2001 From: CMDR furrycat Date: Fri, 31 Mar 2017 10:31:19 +0100 Subject: [PATCH] Added get_member_by_name(). --- bot.py | 41 +++++++++++++++++++++++++++-------------- plugin/developer/developer.py | 12 ++++-------- 2 files changed, 31 insertions(+), 22 deletions(-) diff --git a/bot.py b/bot.py index d1f0faa..99dbc16 100644 --- a/bot.py +++ b/bot.py @@ -38,6 +38,31 @@ def is_admin(user, server = None): 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 @@ -289,20 +314,8 @@ def parse_mention(text, *, author = None): 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)) diff --git a/plugin/developer/developer.py b/plugin/developer/developer.py index 233ebe7..009dfa9 100644 --- a/plugin/developer/developer.py +++ b/plugin/developer/developer.py @@ -194,14 +194,10 @@ class Developer(object): 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: -- 2.7.4