async def _get_profiles(self, names): if not names: names = ['me'] uids = [] for name in names: if name == 'me' or name == 'myself': uids.append(self.bot.user.id) continue match = MENTION_REGEX.match(name) if match is not None: uid = int(match[1]) elif name.isdigit(): uid = int(name) else: nname = normalize_caseless(name) uid = discord.utils.find( lambda u, n=nname: normalize_caseless(u.name) == n, self.bot.users) uids.append(uid) profiles = await asyncio.gather( *[self._get_profile(uid) for uid in uids]) return list(filter(lambda t: t[1] is not None, profiles))
def _get_user_mention(self, name): if name.isdigit(): id = int(name) user = self.bot.get_user(id) else: name = utils.normalize_caseless(name) user = discord.utils.find( lambda u: utils.normalize_caseless(u.name) == name, self.bot.users) return getattr(user, 'mention', '(No such user)')
def _get_channel_mention(self, name, guild=None): if name.isdigit(): id = int(name) chan = self.bot.get_channel(id) else: name = utils.normalize_caseless(name) channels = guild.channels if guild else self.bot.get_all_channels() chan = discord.utils.find( lambda c: utils.normalize_caseless(c.name) == name, channels) return getattr(chan, 'mention', '(No such channel)')
def _get_guild(self, ctx, name): if name is None: return ctx.guild if name.isdigit(): return self.bot.get_guild(int(name)) else: name = normalize_caseless(name) for guild in self.bot.guilds: if normalize_caseless(guild.name) == name: return guild return None