Ejemplo n.º 1
0
    async def getBannedUser(ctx, user):

        user = str(user).lower()

        matcher = StringMatcher()

        userdata = []

        for _user in await ctx.guild.bans():

            _user = _user.user

            member = {
                "name": _user.name,
                "fullname": _user.name + "#" + str(_user.discriminator),
                "mention": "<@!" + str(_user.id) + ">",
                "nickname": _user.display_name,
                "discriminator": str(_user.discriminator),
                "discrim2": "#" + str(_user.discriminator),
                "id": str(_user.id)
            }

            data = {}

            for item in member:

                matcher.set_seqs(user, member[item].lower())

                data[item] = matcher.quick_ratio()

            data["_id"] = member["id"]

            userdata.append(data)

        matches = {}

        for user in userdata:

            for key in user:

                if key != "_id":

                    if user[key] > .5:

                        matches[user["_id"]] = user[key]

                        break

        if not matches:

            raise ValueError(f"NoSuchUser: {user}")

        id = int(max(matches.items(), key=itemgetter(1))[0])

        for banned in await ctx.guild.bans():

            if banned.user.id == id:

                return banned.user
Ejemplo n.º 2
0
    async def getClosestUser(ctx, user, return_member=False):

        # Thanks to discord's new intent system, this entire function is broken if you are not verified.
        # Because of this, we migrated back to discord.User, which is what this now returns.
        return user

        user = str(user).lower()

        matcher = StringMatcher()

        userdata = []

        for _user in ctx.guild.members:

            member = {
                "name": _user.name,
                "fullname": _user.name + "#" + str(_user.discriminator),
                "mention": "<@!" + str(_user.id) + ">",
                "nickname": _user.display_name,
                "discriminator": str(_user.discriminator),
                "discrim2": "#" + str(_user.discriminator),
                "id": str(_user.id)
            }

            data = {}

            for item in member:

                matcher.set_seqs(user, member[item].lower())

                data[item] = matcher.quick_ratio()

            data["_id"] = member["id"]

            userdata.append(data)

        matches = {}

        for user in userdata:

            for key in user:

                if key != "_id":

                    if user[key] > .5:

                        matches[user["_id"]] = user[key]

                        break

        if not matches:

            raise ValueError(f"NoSuchUser: {user}")

        id = int(max(matches.items(), key=itemgetter(1))[0])

        if not return_member:

            return bot.get_user(id)

        return ctx.guild.get_member(id)