discord bot на python

Писал бота через chatgpt, просто попробовать. В общем есть 2 кнопки, если нажать одну, то она меня никнейм пользователю и выдает рольки. Если нажимает вторую кнопку, меняет на другой никнейм и выдает другие рольки. Но проблема, не понимаю как сделать так, чтобы он определил, какую кнопку я нажал. Уже разными способами попробовал. Помогите кто понимает

import discord
from discord.ui import Button, View, Modal, TextInput
from discord.ext import commands

# Устанавливаем префикс для команд бота и включаем необходимые intents
intents = discord.Intents.default()
intents.message_content = True  # Включаем intent для чтения содержимого сообщений
intents.guilds = True  # Включаем intent для работы с серверами
intents.members = True  # Включаем intent для работы с участниками
bot = commands.Bot(command_prefix="!", intents=intents)

# ID канала для отправки кнопки
target_channel_id = 1332348283414249512  # Замените на настоящий ID вашего канала

# ID канала для логирования данных (где бот будет отправлять текст)
log_channel_id = 1332348302183759964  # Замените на ID канала для логирования

# ID ролей, которые вы хотите назначить (замените на реальные ID ролей)
role_1_id = 1332348645672095754  # Роль 1
role_2_id = 1332736634319536161  # Роль 2
role_3_id = 1332348697350242398  # Роль 3
role_4_id = 1332348716236931202  # Роль 4
role_5_id = 1332914558968270862  # Роль 5

@bot.event
async def on_ready():
    print(f'Мы вошли как {bot.user}')

    # Автоматически отправляем кнопки в определенный канал
    channel = bot.get_channel(target_channel_id)
    if channel:
        # Создаем кнопки с уникальными custom_id для каждой кнопки
        button_1 = Button(label="Получить роли", style=discord.ButtonStyle.primary, custom_id="button_1")

        # Создаем callback для первой кнопки
        async def button_1_callback(interaction: discord.Interaction):
            # Создаем модальное окно с двумя полями ввода
            modal = Modal(title="Выдача ролей")
            modal.add_item(TextInput(label="Ваш никнейм", placeholder="Например: Morris Moore"))
            modal.add_item(TextInput(label="Ваш номер паспорта", placeholder="Например: 123456", max_length=6))

            # Отправляем модальное окно
            await interaction.response.send_modal(modal)

        button_1.callback = button_1_callback

        button_2 = Button(label="Получить другие роли", style=discord.ButtonStyle.danger, custom_id="button_2")

        # Создаем callback для второй кнопки
        async def button_2_callback(interaction: discord.Interaction):
            # Создаем модальное окно с двумя полями ввода
            modal = Modal(title="Выдача ролей")
            modal.add_item(TextInput(label="Ваш никнейм", placeholder="Например: Morris Moore"))
            modal.add_item(TextInput(label="Ваш номер паспорта", placeholder="Например: 123456", max_length=6))

            # Отправляем модальное окно
            await interaction.response.send_modal(modal)

        button_2.callback = button_2_callback

        # Создаем View и добавляем кнопки
        view = View()
        view.add_item(button_1)
        view.add_item(button_2)

        # Отправляем сообщение с кнопками в канал
        await channel.send("Нажмите на одну из кнопок, чтобы получить роли.", view=view)

@bot.event
async def on_interaction(interaction: discord.Interaction):
    if interaction.type == discord.InteractionType.modal_submit:
        # Получаем введенные данные из модального окна
        text_input_1 = interaction.data['components'][0]['components'][0]['value']
        text_input_2 = interaction.data['components'][1]['components'][0]['value']
        
        # Получаем пользователя
        user = interaction.user
        
        # Логируем данные
        log_channel = bot.get_channel(log_channel_id)
        if log_channel:
            await log_channel.send(f"{user.mention}\nНомер паспорта: {text_input_2}")
        
        # Проверяем, какая кнопка была нажата по custom_id
        if interaction.data["custom_id"] == "button_1":
            roles = [role_1_id, role_2_id, role_3_id]
            new_nick = f"[1 | TSD] {text_input_1}"
        elif interaction.data["custom_id"] == "button_2":
            roles = [role_1_id, role_2_id, role_4_id, role_5_id]
            new_nick = f"[2 | TSD] {text_input_1}"
        else:
            await interaction.response.send_message("Произошла ошибка: не удалось определить, какую кнопку вы нажали.", ephemeral=True)
            return

        # Обрезаем ник, если он слишком длинный
        if len(new_nick) > 32:
            new_nick = new_nick[:32]

        # Получаем пользователя и сервер
        member = interaction.user
        guild = interaction.guild

        # Проверяем, есть ли у бота права на управление ролями
        if guild.me.guild_permissions.manage_roles:
            # Получаем объекты ролей по ID
            role_objects = [guild.get_role(role_id) for role_id in roles]

            # Проверяем, что все роли существуют
            if all(role for role in role_objects):
                await member.add_roles(*role_objects)

            # Проверяем, есть ли у бота права на изменение ника
            if guild.me.guild_permissions.manage_nicknames:
                try:
                    await member.edit(nick=new_nick)
                    await interaction.response.send_message(f"Роли выданы успешно, и ваш ник был изменен на: {user.mention}", ephemeral=True)
                except discord.Forbidden:
                    await interaction.response.send_message("У меня нет прав на изменение вашего ника!", ephemeral=True)
            else:
                await interaction.response.send_message("У меня нет прав на изменение ников!", ephemeral=True)

# Запуск бота
bot.run('YOUR_BOT_TOKEN')```

Ответы (0 шт):