Как сделать так, чтобы при отправке данных из одной формы на Discord появилось сообщение с другой кнопкой?

Как изменить бота с двумя кнопками, чтобы после заполнения одной формы отправлялось сообщение с другой формой вместо простого текста?
  • 18 мая 2024 г. 6:50
Ответы на вопрос 2
Для реализации данного функционала вам потребуется использовать библиотеку для работы с Discord API, такую как Discord.js, и создать соответствующие обработчики событий.

Пример кода с использованием Discord.js:

1. Создайте экземпляр Discord клиента и зарегистрируйте обработчик событий для получения данных из формы:

```javascript
const Discord = require('discord.js');
const client = new Discord.Client();

client.on('message', (message) => {
  // Проверяем, что сообщение пришло из формы
  if (message.content === 'Данные из формы') {
    // Отправляем сообщение с другой кнопкой
    message.channel.send('Ваше сообщение', {
      buttons: [
        new Discord.MessageButton()
          .setStyle('PRIMARY')
          .setLabel('Кнопка')
          .setCustomId('buttonId')
      ]
    });
  }
});

client.login('токен_бота');
```

2. Создайте обработчик для кнопки:

```javascript
client.on('interactionCreate', async (interaction) => {
  if (!interaction.isButton()) return;

  if (interaction.customId === 'buttonId') {
    // Обработка нажатия на кнопку
    interaction.reply('Вы нажали на кнопку');
  }
});
```

После запуска вашего бота, при отправке данных из первой формы будет отображаться сообщение с кнопкой. При нажатии на кнопку будет отправлено сообщение с другой формой.
Надеюсь кому-то поможет. 
Проблема решилась таким образом:
Создал отдельные классы для каждой кнопки и вызвал класс кнопки в send_message с помощью view=Button2()
await interaction.response.send_message(f'Fill out vouch form 2\n', view=Button2(), ephemeral=True, delete_after=30)
Код полностью:
import discord
from discord import ui
from discord.ext import commands

PREFIX = "/"
intents = discord.Intents().all()

#права бота
bot = commands.Bot(command_prefix=PREFIX, intents=intents)


class Button1(discord.ui.View):
    def __init__(self,):
        super().__init__(timeout=None)

    @discord.ui.button (label="Vouchform", style=discord.ButtonStyle.green, custom_id="Invite1")
    async def button_callback(self, interaction, button):
        q = Questionnaire1()
        button.callback = Button1.button_callback
        await interaction.response.send_modal(q)


class Button2(discord.ui.View):
    def __init__(self,):
        super().__init__(timeout=None)

    @discord.ui.button (label="Vouchform2", style=discord.ButtonStyle.green, custom_id="Invite2")
    async def button_callback(self, interaction, button):
        q = Questionnaire2()
        button.callback = Button2.button_callback
        await interaction.response.send_modal(q)

#Вызываем модальное окно
class Questionnaire1(ui.Modal, title='Vouchform 1'):

    first_name = ui.TextInput(label='What is you Steam ID/Epic ID?')
    name = ui.TextInput(label='What is your main Implant ID & Gamename?')
    father_name = ui.TextInput(label='What are your alt Implant ID & Gamename?')
    nickname = ui.TextInput(label='How old are you?')
    
    async def on_submit(self, interaction: discord.Interaction):
        await interaction.response.send_message(f'Fill out vouch form 2\n', view=Button2(), ephemeral=True, delete_after=60)
        for channel in interaction.guild.text_channels:
            if 'заявки' == channel.name:
                await channel.send(f"Vouchform 1\n"
                                   f"Discord: {interaction.user.name}\n"
                                   f"Steam ID: {self.first_name}\n"
                                   f"ImplantID&Nickname: {self.name}\n"
                                   f"alt ImplantID&Nickname: {self.father_name}\n"
                                   f"Age: {self.nickname}")
                break

class Questionnaire2(discord.ui.Modal, title='Vouchform 2'):

    first_name = ui.TextInput(label='WHAT IS YOUR TIMEZONE?')
    name = ui.TextInput(label='WHAT LANGUAGES DO YOU SPEAK?')
    father_name = ui.TextInput(label='WHAT WERE YOUR PREVIOUS TRIBE?')
    nickname = ui.TextInput(label='WHO VOUCHED FOR YOU?')

    async def on_submit(self, interaction: discord.Interaction):
        await interaction.response.send_message(f'The application will be reviewed by the administrator\n', ephemeral=True, delete_after=30)
        for channel in interaction.guild.text_channels:
            if 'заявки' == channel.name:
                await channel.send(f"Vouchform2\n"
                                   f"Discord: {interaction.user.name}\n"
                                   f"TIMEZONE: {self.first_name}\n"
                                   f"LANGUAGES: {self.name}\n"
                                   f"TRIBES: {self.father_name}\n"
                                   f"WHO VOUCH: {self.nickname}")
                break

#создает кнопку invite нажатие на которую вызывает модальное окно
@bot.command()
async def invite(ctx):
        
        view = Button1()
        view.add_item = Button1.button_callback
        await ctx.send(view=view)
Похожие вопросы