Python, Disnake дискорд бот

Рейтинг: 0Ответов: 1Опубликовано: 15.02.2023

Хочу сделать бан определенного пользователя с причиной на слеш-командах Вот что пробовал:

import disnake
from disnake.ext import commands

bot = commands.Bot(command_prefix="!",
                   intents=disnake.Intents.all(),
                   activity=disnake.Game("PyCharm"),
                   status=disnake.Status.do_not_disturb)

bot.remove_command('help')

@bot.slash_command(name="бан", description="Банит участника")
@commands.has_permissions(ban_members=True)
async def ban(inter, member: disnake.Member, *, reason="Нарушение правил"):
    embed = disnake.Embed(
        title="Модерация",
        color=0x3c36d3,
        description=f"Администратор {inter.author.mention} забанил участника {member.name}"
    )
    await inter.response.send_message(embed=embed)
    await member.ban()

bot.run("Токен")

Ответы

▲ 1Принят

Во-первых в аргументах slash-команды вам не понадобится *

Во-вторых ваш аргумент reason нигде не используется. В строке await member.ban() задайте аргумент reason=reason.

Итог:

@bot.slash_command(name="бан", description="Банит участника")
@commands.has_permissions(ban_members=True)
async def ban(inter, member: disnake.Member, reason="Нарушение правил"):
    embed = disnake.Embed(
        title="Модерация",
        color=0x3c36d3,
        description=f"Администратор {inter.author.mention} забанил участника {member.name}"
    )
    await inter.response.send_message(embed=embed)
    await member.ban(reason=reason)