@RIZAM

Я не нашел ошибку,где ошибка?

import discord
from discord.ext import commands


class RecruitementModal(discord.ui.Modal):
    def __init__(self, arg):
        self.arg = arg  # arg - это аргумент, который передается в конструкторе класса RecruitementSelect
        """
        Также можно сделать так:
                components = [
            disnake.ui.TextInput(label="Ваше имя", placeholder="Введите ваше имя", custom_id="name"),
            disnake.ui.TextInput(label="Ваш возраст", placeholder="Введите ваш возраст", custom_id="age")
            disnake.ui.TextInput(
                label="Расскажите о себе и почему именно вы?",
                placeholder="Расскажи о себе здесь",
                custom_id="info",
                style=disnake.TextInputStyle.paragraph,
                min_length=10,
                max_length=500,
            )
        ]
        """
        components = [
            discord.ui.TextInput(label="Ваше имя", placeholder="Введите ваше имя", custom_id="name"),
            discord.ui.TextInput(label="Ваш возраст", placeholder="Введите ваш возраст", custom_id="age")
        ]
        if self.arg == "moderator":
            title = "Набор на должность модератора"
        else:
            title = "Набор на должность ведущего"
        super().__init__(title=title, components=components, custom_id="recruitementModal")

    async def callback(self, interaction: discord.ModalInteraction) -> None:
        name = interaction.text_values["name"]
        age = interaction.text_values["age"]
        embed = discord.Embed(color=0x2F3136, title="Заявка отправлена!")
        embed.description = f"{interaction.author.mention}, Благодарим вас за **заявку**! " \
                            f"Если вы нам **подходите**, администрация **свяжется** с вами в ближайшее время."
        embed.set_thumbnail(url=interaction.author.display_avatar.url)
        await interaction.response.send_message(embed=embed, ephemeral=True)
        channel = interaction.guild.get_channel(1247975148171034737)  # Вставить ID канала куда будут отправляться заявки
        await channel.send(f"Заявка на должность {self.arg} от {name} {interaction.author.mention} ({age} лет)")


class RecruitementSelect(discord.ui.Select):
    def __init__(self):
        options = [
            discord.SelectOption(label="Модератор", value="moderator", description="Модератор сервера"),
            discord.SelectOption(label="Ведущий", value="eventsmod", description="Ведущий мероприятий"),
        ]
        super().__init__(
            placeholder="Выбери желаемую роль", options=options, min_values=0, max_values=1, custom_id="recruitement"
        )

    async def callback(self, interaction: discord.MessageInteraction):
        if not interaction.values:
            await interaction.response.defer()
        else:
            await interaction.response.send_modal(RecruitementModal(interaction.values[0]))


class Recruitement(commands.Cog):
    def __init__(self, bot):
        self.bot = bot
        self.persistents_views_added = False

    @commands.command()
    async def recruit(self, ctx):
        view = discord.ui.View()
        view.add_item(RecruitementSelect())
        # Тут можно добавть эмбед с описанием ролей
        await ctx.send('Выбери желаемую роль', view=view)

    @commands.Cog.listener()
    async def on_connect(self):
        if self.persistents_views_added:
            return

        view = discord.ui.View(timeout=None)
        view.add_item(RecruitementSelect())
        self.bot.add_view(view,
                          message_id=1252532393299021837)  # Вставить ID сообщения, которое отправится после использования с команда !recruit


def setup(bot):
    bot.add_cog(Recruitement(bot))


но выдает ошибку:
[ERROR   ] discord.ext.commands.bot: Ignoring exception in command None
discord.ext.commands.errors.CommandNotFound: Command "recruit" is not found
  • Вопрос задан
  • 91 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы