Не могу разобраться в modal Discord.js
имеется вот такой код
const { Events, SlashCommandBuilder, EmbedBuilder, StringSelectMenuBuilder, StringSelectMenuOptionBuilder, ActionRowBuilder, ModalBuilder, ModalSubmitInteraction, TextInputBuilder, TextInputStyle } = require('discord.js');
const sqlite3 = require('sqlite3').verbose();
module.exports = {
data: new SlashCommandBuilder()
.setName('transfer')
.setDescription('Transfer money')
.addUserOption(option => option.setName('пользователь').setDescription('Пользователь для перевода средств.').setRequired(true)),
async execute(interaction) {
const user = interaction.options.getUser('пользователь');
const db = new sqlite3.Database('./database.sqlite3');
function containLetters(amountToTransfer) {
return /[a-zA-Zа-яА-Я]/.test(amountToTransfer);
}
const embedNotValue = {
color: 0xFF0000,
title: `Ошибка!`,
description: `Введите пожалуйста число.`,
thumbnail: { url: interaction.user.displayAvatarURL({ format: 'jpg' }).toString() },
}
const embedNotAmount = {
color: 0xFF0000,
title: `Ошибка!`,
description: `У вас недостаточно средств для перевода.`,
thumbnail: { url: interaction.user.displayAvatarURL({ format: 'jpg' }).toString() },
}
const embedAmountWZero = {
color: 0xFF0000,
title: `Ошибка!`,
description: `Число не может быть ниже 0.`,
thumbnail: { url: interaction.user.displayAvatarURL({ format: 'jpg' }).toString() },
}
const modalTransfer = new ModalBuilder()
.setCustomId('modalTransfer')
.setTitle('Сумма для перевода?')
const amount = new TextInputBuilder()
.setCustomId('amount')
.setLabel("Сколько вы желаете перевести?")
.setStyle(TextInputStyle.Short)
.setPlaceholder("0")
const amountRow = new ActionRowBuilder().addComponents(amount);
modalTransfer.addComponents(amountRow);
await interaction.showModal(modalTransfer);
try {
const modalResponse = await interaction.awaitModalSubmit({filter: (i) =>
i.customId === 'modalTransfer' && i.user.id === interaction.user.is,
time: 60000,});
if(modalResponse.isModalSubmit()){
const amountToTransfer = interaction.values.get('amount');
if (containLetters(amountToTransfer)) {
await interaction.reply({ embeds: [embedNotValue], ephemeral: true });
return;
} else if (amountToTransfer < 0) {
await interaction.reply({ embeds: [embedAmountWZero], ephemeral: true });
return;
}
db.get(`SELECT balance FROM users WHERE id = ?`, [interaction.user.id], (err, row) => {
if (err) {
console.error(err);
return;
}
const balance = row ? row.balance : 0;
if (amountToTransfer > balance) {
interaction.reply({ embeds: [embedNotAmount], ephemeral: true });
return;
}
db.run(`UPDATE users SET balance = balance - ? WHERE id =?`, [amountToTransfer, interaction.user.id]);
db.run(`UPDATE users SET balance = balance +? WHERE id =?`, [amountToTransfer, user.id]);
const embedSuccess = {
color: 0x00FF00,
title: `Успешный перевод!`,
description:`${interaction.user.username} Вы успешно перевели ${user.username} сумму в размере: ${amountToTransfer}`,
thumbnail: { url: interaction.user.displayAvatarURL({ format: 'jpg' }).toString() },
}
return interaction.reply({ embeds: [embedSuccess] });
});}
} catch (error){console.error(error)}
}
}
По сути он должен принимать значение из modal но по итогу кода я на сервере даю ответ на modal он реагирует только так:

По итогу я перепробовал исправить код путём добавления доп обработок модла, не помогло.