Discord Bot Slash Command for Reporting with Status and Reason

Answered using ChatGPT 4o by ChatGPT4o

Question:

напиши слэш-команду /report {выбирает: отказано/принято} {тут сам пишет причина} и бот пишет если принято: Здравствуйте, уважаемый игрок! Игрок будет наказан. Закрыто, приятной игры! а если отказано то: Доброго времени суток, уважаемый игрок! Ваша жалоба не может быть рассмотрена по причине: {тут пишет то что указал человек в 3 пункте} и закрывает форум и блокирует, и ставит тэг {то что выбрал во втором если отказано то: отказано👎, если принято то: принято☝️} discord bot python СЛЭШ-КОМАНДУ

Answer:

Для создания слэш-команды в Discord боте на Python, вам потребуется библиотека discord.py и её расширение для слэш-команд discord-py-slash-command. Убедитесь, что у вас установлены эти библиотеки:

pip install discord.py
pip install discord-py-slash-command

Вот пример кода для создания слэш-команды /report:

import discord
from discord.ext import commands
from discord_slash import SlashCommand, SlashContext
from discord_slash.utils.manage_commands import create_option, create_choice

intents = discord.Intents.default()
bot = commands.Bot(command_prefix="!", intents=intents)
slash = SlashCommand(bot, sync_commands=True)

@slash.slash(
    name="report",
    description="Отправить жалобу",
    options=[
        create_option(
            name="статус",
            description="Выберите статус",
            option_type=3,
            required=True,
            choices=[
                create_choice(name="принято", value="принято"),
                create_choice(name="отказано", value="отказано")
            ]
        ),
        create_option(
            name="причина",
            description="Укажите причину",
            option_type=3,
            required=True
        )
    ]
)
async def report(ctx: SlashContext, статус: str, причина: str):
    if статус == "принято":
        response = "Здравствуйте, уважаемый игрок! Игрок будет наказан. Закрыто, приятной игры!"
        tag = "принято☝️"
    else:
        response = f"Доброго времени суток, уважаемый игрок!\nВаша жалоба не может быть рассмотрена по причине: {причина} и закрывает форум и блокирует."
        tag = "отказано👎"

    await ctx.send(response)
    # Здесь вы можете добавить логику для закрытия форума и блокировки, если это необходимо
    # Например, если у вас есть канал для жалоб, вы можете отправить туда сообщение с тегом
    # report_channel = bot.get_channel(YOUR_REPORT_CHANNEL_ID)
    # await report_channel.send(f"Жалоба {tag}")

bot.run("YOUR_BOT_TOKEN")

В этом коде:

  1. Мы создаем бота с помощью discord.py и discord-py-slash-command.
  2. Определяем слэш-команду /report с двумя параметрами: статус и причина.
  3. В зависимости от значения параметра статус, бот отправляет соответствующее сообщение и добавляет тег.

Не забудьте заменить "YOUR_BOT_TOKEN" на токен вашего бота и, при необходимости, добавить логику для закрытия форума и блокировки.