Пример #1
0
    async def mod_notes(self, ctx, *, user_id=""):
        """
        Print mod notes for this server
        
        user_id: filter by a specific user
        """

        # TODO: Currently, this may break if we try to filter out with an ID of a user who left. fix
        async with self.bot.db.execute(
            "SELECT guild_id, user_id, note, timestamp FROM mod_notes "
            "WHERE guild_id = ?", [int(ctx.guild.id)]) as cursor:
            all_mod_notes = await cursor.fetchall()

        if user_id:
            check_member = wrappers.get_member_guaranteed(ctx, user_id)
        else:
            check_member = None

        for one_note in all_mod_notes:
            if check_member:
                if check_member.id != int(one_note[1]):
                    continue
            member = ctx.guild.get_member(int(one_note[1]))
            timestamp = datetime.datetime.utcfromtimestamp(int(one_note[3]))
            embed = await self.mod_noted_member(member, one_note[2], timestamp)
            await ctx.send(embed=embed)
Пример #2
0
    async def legacy_claim_waifu(self, ctx, *, user_id):
        member = wrappers.get_member_guaranteed(ctx, user_id)
        if not member:
            await ctx.send("no member found with that name")
            return

        async with self.bot.db.execute("SELECT waifu_id FROM legacy_waifu_claims WHERE owner_id = ?",
                                       [int(ctx.author.id)]) as cursor:
            waifu_id = await cursor.fetchall()
        if waifu_id:
            waifu_name = self.guaranteed_member_string(ctx, waifu_id[0][0])
            if waifu_name == member.display_name:
                await ctx.send(f"`{member.display_name}` is already your waifu")
            else:
                if waifu_name == ctx.author.display_name:
                    await ctx.send(f"you already claimed yourself as your waifu. you can have only one claim at a time")
                else:
                    await ctx.send(f"you already claimed `{waifu_name}` as your waifu. "
                                   f"you can only claim one at a time")
            return

        async with self.bot.db.execute("SELECT owner_id FROM legacy_waifu_claims WHERE waifu_id = ?",
                                       [int(member.id)]) as cursor:
            owner_id = await cursor.fetchall()
        if owner_id:
            owner_name = self.guaranteed_member_string(ctx, owner_id[0][0])
            await ctx.send(f"`{member.display_name}` is already claimed by `{owner_name}`")
            return

        await self.bot.db.execute("INSERT INTO legacy_waifu_claims VALUES (?,?)", [int(ctx.author.id), int(member.id)])
        await self.bot.db.commit()
        if int(ctx.author.id) == int(member.id):
            await ctx.send("you claimed yourself as your waifu. nice.")
            return
        await ctx.send(f"you claimed `{member.display_name}` as your waifu")
Пример #3
0
    async def claim_waifu(self, ctx, *, user_id):
        member = wrappers.get_member_guaranteed(ctx, user_id)
        if not member:
            await ctx.send("no member found with that name")
            return None

        waifu_id = db.query(["SELECT waifu_id FROM waifu_claims WHERE owner_id = ?", [str(ctx.author.id)]])
        if waifu_id:
            waifu_name = self.guaranteed_member_string(ctx, waifu_id[0][0])
            if waifu_name == member.display_name:
                await ctx.send(f"`{member.display_name}` is already your waifu")
            else:
                if waifu_name == ctx.author.display_name:
                    await ctx.send(f"you already claimed yourself as your waifu. you can have only one claim at a time")
                else:
                    await ctx.send(f"you already claimed `{waifu_name}` as your waifu. "
                                   f"you can only claim one at a time")
            return None

        owner_id = db.query(["SELECT owner_id FROM waifu_claims WHERE waifu_id = ?", [str(member.id)]])
        if owner_id:
            owner_name = self.guaranteed_member_string(ctx, owner_id[0][0])
            await ctx.send(f"`{member.display_name}` is already claimed by `{owner_name}`")
            return None

        db.query(["INSERT INTO waifu_claims VALUES (?,?)", [str(ctx.author.id), str(member.id)]])
        if str(ctx.author.id) == str(member.id):
            await ctx.send("you claimed yourself as your waifu. nice.")
            return None
        await ctx.send(f"you claimed `{member.display_name}` as your waifu")
Пример #4
0
    async def add_co_modder(self, ctx, user_id):
        """
        Turns a modding queue into a joint one.
        This command allows you to add a co-owner to your queue.
        They will be able to open/close/hide/archive the queue.
        Using this command will not prevent them from creating their own separate queue or
        from being added to someone else's queue.
        They will not be able to remove you from this queue.
        You, being the creator of this queue, will still not be able to make a new queue,
        however you can still be a co-owner of someone else's queue.
        """
        if not await self.is_queue_creator(ctx):
            return None

        if not await self.channel_is_a_queue(ctx):
            return None

        member = wrappers.get_member_guaranteed(ctx, user_id)
        if not member:
            await ctx.send("no member found with that name")
            return None

        await self.bot.db.execute("INSERT INTO queues VALUES (?, ?, ?, ?)",
                                  [str(ctx.channel.id), str(member.id), str(ctx.guild.id), "0"])
        await self.bot.db.commit()
        await ctx.channel.set_permissions(member, overwrite=self.queue_owner_default_permissions)
        await ctx.send(f"{member.mention} is now the co-owner of this queue!")
Пример #5
0
    async def debug_mapset_force_call_on_member_join(self, ctx, user_id):
        member = wrappers.get_member_guaranteed(ctx, user_id)
        if not member:
            await ctx.send("no member found with that name")
            return None

        await self.on_member_join(member)
        await ctx.send("done")
Пример #6
0
 async def debug_reset_rolls(self, ctx, user_id=None):
     if user_id:
         member = wrappers.get_member_guaranteed(ctx, user_id)
     else:
         member = ctx.author
     for roll in reversed(self.roll_count_cache):
         if roll[1].id == member.id:
             self.roll_count_cache.remove(roll)
     await ctx.send(f"rolls reset for `{member.display_name}`")
Пример #7
0
 async def regular_role_blacklist_add(self, ctx, user_id):
     member = wrappers.get_member_guaranteed(ctx, user_id)
     if not member:
         await ctx.send("no member found with that name")
         return None
     db.query([
         "INSERT INTO regular_roles_user_blacklist VALUES (?,?)",
         [str(ctx.guild.id), str(member.id)]
     ])
     await ctx.send(
         f"{member.display_name} is now no longer be allowed to be a regular"
     )
Пример #8
0
    async def regular_role_blacklist_remove(self, ctx, user_id):
        """
        Un-blacklist a member from being a regular.
        """

        member = wrappers.get_member_guaranteed(ctx, user_id)
        if not member:
            await ctx.send("no member found with that name")
            return

        await self.bot.db.execute(
            "DELETE FROM regular_roles_user_blacklist WHERE guild_id = ? AND user_id = ?",
            [int(ctx.guild.id), int(member.id)])
        await self.bot.db.commit()

        await ctx.send(f"{member.name} is now allowed to be a regular again")
Пример #9
0
    async def unclaim_waifu(self, ctx, *, user_id):
        member = wrappers.get_member_guaranteed(ctx, user_id)
        if not member:
            await ctx.send("no member found with that name")
            if user_id.isdigit():
                db.query(["DELETE FROM waifu_claims WHERE owner_id = ? AND waifu_id = ?",
                          [str(ctx.author.id), str(user_id)]])
                await ctx.send("but i tried to unclaim whoever you claimed")
            return None

        your_waifu_id = db.query(["SELECT waifu_id FROM waifu_claims WHERE owner_id = ? AND waifu_id = ?",
                                  [str(ctx.author.id), str(member.id)]])
        if your_waifu_id:
            db.query(["DELETE FROM waifu_claims WHERE owner_id = ? AND waifu_id = ?",
                      [str(ctx.author.id), str(member.id)]])
            await ctx.send(f"you unclaimed `{member.display_name}` as your waifu")
Пример #10
0
    async def regular_role_blacklist_add(self, ctx, user_id):
        """
        Manually blacklist a member from being a regular
        """

        member = wrappers.get_member_guaranteed(ctx, user_id)
        if not member:
            await ctx.send("no member found with that name")
            return

        await self.bot.db.execute(
            "INSERT INTO regular_roles_user_blacklist VALUES (?,?)",
            [int(ctx.guild.id), int(member.id)])
        await self.bot.db.commit()

        await ctx.send(
            f"{member.display_name} is now no longer be allowed to be a regular"
        )
Пример #11
0
    async def remove_co_modder(self, ctx, user_id):
        if not await self.is_queue_creator(ctx):
            return None

        if not await self.channel_is_a_queue(ctx):
            return None

        member = wrappers.get_member_guaranteed(ctx, user_id)
        if not member:
            await ctx.send("no member found with that name")
            return None

        await self.bot.db.execute("DELETE FROM queues "
                                  "WHERE channel_id = ? AND user_id = ? AND guild_id = ? AND is_creator = ?",
                                  [str(ctx.channel.id), str(member.id), str(ctx.guild.id), str("0")])
        await self.bot.db.commit()
        await ctx.channel.set_permissions(member, overwrite=None)
        await ctx.send(f"{member.mention} is no longer a co-owner of this queue!")
Пример #12
0
    async def legacy_unclaim_waifu(self, ctx, *, user_id):
        member = wrappers.get_member_guaranteed(ctx, user_id)
        if not member:
            await ctx.send("no member found with that name")
            if user_id.isdigit():
                await self.bot.db.execute("DELETE FROM legacy_waifu_claims WHERE owner_id = ? AND waifu_id = ?",
                                          [int(ctx.author.id), int(user_id)])
                await self.bot.db.commit()
                await ctx.send("but i tried to unclaim whoever you claimed")
            return

        async with self.bot.db.execute("SELECT waifu_id FROM legacy_waifu_claims WHERE owner_id = ? AND waifu_id = ?",
                                       [int(ctx.author.id), int(member.id)]) as cursor:
            your_waifu_id = await cursor.fetchall()
        if your_waifu_id:
            await self.bot.db.execute("DELETE FROM legacy_waifu_claims WHERE owner_id = ? AND waifu_id = ?",
                                      [int(ctx.author.id), int(member.id)])
            await self.bot.db.commit()
            await ctx.send(f"you unclaimed `{member.display_name}` as your waifu")
Пример #13
0
    async def regular_role_blacklist_remove(self, ctx, user_id=None):
        if not user_id:
            user_blacklist = db.query([
                "SELECT user_id FROM regular_roles_user_blacklist "
                "WHERE guild_id = ?", [str(ctx.guild.id)]
            ])
            await ctx.send(user_blacklist)
            return None

        member = wrappers.get_member_guaranteed(ctx, user_id)
        if not member:
            await ctx.send("no member found with that name")
            return None

        db.query([
            "DELETE FROM regular_roles_user_blacklist "
            "WHERE guild_id = ? AND user_id = ?",
            [str(ctx.guild.id), str(member.id)]
        ])
        await ctx.send(f"{member.name} is now allowed to be a regular again")
Пример #14
0
    async def mod_note(self, ctx, user_id, *, note):
        """
        Stores information about a specific server member in the database for later retrieval

        user_id: user_id, name or nickname
        note: the note to store
        """

        member = wrappers.get_member_guaranteed(ctx, user_id)

        if not member:
            await ctx.send("no member found with that name")
            return

        await self.bot.db.execute(
            "INSERT INTO mod_notes VALUES (?, ?, ?, ?)",
            [int(ctx.guild.id),
             int(member.id), note,
             int(time.time())])
        await self.bot.db.commit()

        await ctx.send(f"note added for {member.name}")
Пример #15
0
    async def give_queue(self, ctx, user_id):
        """
        This will clear all co-owners too.
        """
        if not await self.is_queue_creator(ctx):
            return None

        if not await self.channel_is_a_queue(ctx):
            return None

        member = wrappers.get_member_guaranteed(ctx, user_id)
        if not member:
            await ctx.send("no member found with that name")
            return None

        await self.bot.db.execute("DELETE FROM queues WHERE channel_id = ? AND guild_id = ?",
                                  [str(ctx.channel.id), str(ctx.guild.id)])
        await self.bot.db.execute("INSERT INTO queues VALUES (?, ?, ?, ?)",
                                  [str(ctx.channel.id), str(member.id), str(ctx.guild.id), str("1")])

        await self.bot.db.commit()
        await ctx.channel.set_permissions(member, overwrite=self.queue_owner_default_permissions)
        await ctx.send(f"You have given the queue creator permissions to {member.mention}")