Migrate admin/kick, ref #91

This commit is contained in:
Zeva Rose 2022-02-02 18:34:04 -07:00
parent 7e4823a731
commit 12870bba17

View file

@ -1,42 +1,30 @@
"""J.A.R.V.I.S. KickCog."""
from discord import User
from discord.ext.commands import Bot
from discord_slash import SlashContext, cog_ext
from discord_slash.utils.manage_commands import create_option
from dis_snek import InteractionContext, Snek
from dis_snek.models.discord.embed import EmbedField
from dis_snek.models.discord.user import User
from dis_snek.models.snek.application_commands import (
OptionTypes,
slash_command,
slash_option,
)
from jarvis.db.models import Kick
from jarvis.utils import build_embed
from jarvis.utils.cachecog import CacheCog
from jarvis.utils.field import Field
from jarvis.utils.permissions import admin_or_permissions
class KickCog(CacheCog):
"""J.A.R.V.I.S. KickCog."""
def __init__(self, bot: Bot):
def __init__(self, bot: Snek):
super().__init__(bot)
@cog_ext.cog_slash(
name="kick",
description="Kick a user",
options=[
create_option(
name="user",
description="User to kick",
option_type=6,
required=True,
),
create_option(
name="reason",
description="Kick reason",
required=False,
option_type=3,
),
],
)
@slash_command(name="kick", description="Kick a user")
@slash_option(name="user", description="User to kick", option_type=OptionTypes.USER, required=True)
@slash_option(name="reason", description="Kick reason", option_type=OptionTypes.STRING, required=True)
@admin_or_permissions(kick_members=True)
async def _kick(self, ctx: SlashContext, user: User, reason: str = None) -> None:
async def _kick(self, ctx: InteractionContext, user: User, reason: str) -> None:
if not user or user == ctx.author:
await ctx.send("You cannot kick yourself.", hidden=True)
return
@ -46,8 +34,6 @@ class KickCog(CacheCog):
if len(reason) > 100:
await ctx.send("Reason must be < 100 characters", hidden=True)
return
if not reason:
reason = "Mr. Stark is displeased with your presence. Please leave."
guild_name = ctx.guild.name
embed = build_embed(
title=f"You have been kicked from {guild_name}",
@ -56,7 +42,7 @@ class KickCog(CacheCog):
)
embed.set_author(
name=ctx.author.name + "#" + ctx.author.discriminator,
name=ctx.author.username + "#" + ctx.author.discriminator,
icon_url=ctx.author.avatar_url,
)
embed.set_thumbnail(url=ctx.guild.icon_url)
@ -68,7 +54,7 @@ class KickCog(CacheCog):
send_failed = True
await ctx.guild.kick(user, reason=reason)
fields = [Field(name="DM Sent?", value=str(not send_failed))]
fields = [EmbedField(name="DM Sent?", value=str(not send_failed))]
embed = build_embed(
title="User Kicked",
description=f"Reason: {reason}",