Для того чтобы сохранить состояние кнопки после перезапуска бота Discord.js, вы можете использовать базу данных или файловую систему для хранения информации о состоянии кнопки. Например, вы можете сохранить состояние кнопки (например, активна ли она или нет) в базу данных или файл при каждом изменении состояния кнопки, а затем при перезапуске бота считывать это значение из базы данных или файла и установить состояние кнопки соответственно.
Чтобы открывать тикет при нажатии на кнопку, вам необходимо добавить обработчик события клика на кнопке. В обработчике события можно выполнять необходимые действия, например, отправлять сообщение в чат о создании нового тикета. Ниже приведен пример кода на Discord.js, который показывает, как можно добавить обработчик события клика на кнопку:
```javascript
const { Client, MessageActionRow, MessageButton } = require('discord.js');
const client = new Client();
client.on('messageCreate', message => {
if (message.content === '!ticket') {
const row = new MessageActionRow()
.addComponents(
new MessageButton()
.setCustomId('createTicket')
.setLabel('Create Ticket')
.setStyle('PRIMARY'),
);
message.channel.send({ content: 'Click the button to create a ticket:', components: [row] });
}
});
client.on('interactionCreate', async interaction => {
if (!interaction.isButton()) return;
if (interaction.customId === 'createTicket') {
// Действия, которые нужно выполнить при нажатии на кнопку
// Например, создание нового тикета
await interaction.reply({ content: 'Ticket has been created!', ephemeral: true });
}
});
client.login('TOKEN');
```
В данном примере при отправке сообщения "!ticket" в чат бот будет отправлять сообщение с кнопкой "Create Ticket". После нажатия на кнопку будет выполняться действие создания нового тикета. При необходимости вы можете добавить дополнительную логику обработки создания тикетов в обработчике события клика на кнопку.