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)
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")
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")
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!")
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")
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}`")
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" )
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")
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")
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" )
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!")
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")
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")
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}")
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}")