This repository has been archived on 2025-01-25. You can view files and clone it, but cannot push or open issues or pull requests.
aquabot/code/cogs/moderation.py
2025-01-25 22:58:41 -06:00

96 lines
3.6 KiB
Python

import discord
from discord.ext import commands
import datetime
from discord import app_commands
class Moderation(commands.Cog):
def __init__(self, bot):
self.bot = bot
@app_commands.default_permissions(manage_messages=True)
@app_commands.command()
@app_commands.checks.has_permissions(manage_messages=True)
@app_commands.describe(amount='Number of messages you would like deleted')
async def purge(
self,
interaction: discord.Interaction,
amount: app_commands.Range[int, 1, 100]
):
"Delete the specified number of messages from the channel"
await interaction.channel.purge(limit=amount+1)
await interaction.response.send_message(f"{amount} {'messages' if amount > 1 else 'message'} deleted")
@app_commands.default_permissions(kick_members=True)
@app_commands.command()
@app_commands.checks.has_permissions(kick_members=True)
@app_commands.describe(member='Member you would like to kick')
@app_commands.describe(reason='Reason for kicking the member')
async def kick(
self,
interaction: discord.Interaction,
member: discord.Member,
reason: str
):
"Kick a member from your server"
await member.kick(reason=reason)
embed = discord.Embed(
title=f"{member} Kicked",
description=f"{interaction.user.mention} has kicked {member.mention} for `\"{reason}\"`.",
color=discord.Color.orange()
)
embed.set_thumbnail(url=member.avatar.url)
embed.set_footer(text=datetime.datetime.now(datetime.timezone.utc).strftime('%Y-%m-%d %H:%M:%S')+" UTC")
await interaction.response.send_message(embed=embed)
@app_commands.default_permissions(ban_members=True)
@app_commands.command()
@app_commands.checks.has_permissions(ban_members=True)
@app_commands.describe(member='Member you would like to ban')
@app_commands.describe(reason='Reason for banning the member')
async def ban(
self,
interaction: discord.Interaction,
member: discord.Member,
reason: str
):
"Ban a member from your server"
await member.ban(reason=reason)
embed = discord.Embed(
title=f"{member} Banned",
description=f"{interaction.user.mention} has banned {member.mention} for `\"{reason}\"`.",
color=discord.Color.red()
)
embed.set_thumbnail(url=member.avatar.url)
embed.set_footer(text=datetime.datetime.now(datetime.timezone.utc).strftime('%Y-%m-%d %H:%M:%S')+" UTC")
await interaction.response.send_message(embed=embed)
@app_commands.default_permissions(kick_members=True)
@app_commands.command()
@app_commands.checks.has_permissions(kick_members=True)
@app_commands.describe(member='Member you would like to softban')
@app_commands.describe(reason='Reason for softbanning the member')
async def softban(
self,
interaction: discord.Interaction,
member: discord.Member,
reason: str
):
"Ban and then immediately unban a member"
await member.ban(reason=reason)
await member.unban()
embed = discord.Embed(
title=f"{member} Softbanned",
description=f"{interaction.user.mention} has softbanned {member.mention} for `\"{reason}\"`.",
color=discord.Color.orange()
)
embed.set_thumbnail(url=member.avatar.url)
embed.set_footer(text=datetime.datetime.now(datetime.timezone.utc).strftime('%Y-%m-%d %H:%M:%S')+" UTC")
await interaction.response.send_message(embed=embed)
async def setup(bot):
await bot.add_cog(Moderation(bot))