96 lines
3.6 KiB
Python
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)) |