ErrorName => DiscordAPIError: Недопустимое тело формы

Я не смог решить проблему с этим кодом, хотя пробовал несколькими способами. Я надеюсь, что кто-то может помочь мне с этим

КОД:

client.on("messageCreate", async message => {
if (message.author.bot || !message.guild) return;
if (message.content.startsWith(prefix + "get-roles")) {
    let roles_notifications = new Discord.MessageActionRow()
    .addComponents(
        new Discord.MessageButton()
        .setCustomId("notification_1")
        .setLabel("All Notifications")
        .setStyle("PRIMARY"),
        new Discord.MessageButton()
        .setCustomId("notification_2")
        .setLabel("YouTube Uploads")
        .setStyle("PRIMARY"),
        new Discord.MessageButton()
        .setCustomId("notification_3")
        .setLabel("Twitter Uploads")
        .setStyle("PRIMARY"),
        new Discord.MessageButton()
        .setCustomId("notification_4")
        .setLabel("Server News")
        .setStyle("PRIMARY"),
        new Discord.MessageButton()
        .setCustomId("notification_5")
        .setLabel("Server Updates")
        .setStyle("PRIMARY"),
        new Discord.MessageButton()
        .setCustomId("notification_6")
        .setLabel("Anime News")
        .setStyle("PRIMARY"),
        new Discord.MessageButton()
        .setCustomId("notification_7")
        .setLabel("Anime Episodes")
        .setStyle("PRIMARY"),
    )
    let embed = new Discord.MessageEmbed()
    .setDescription("Select role")
    let msg = await message.channel.send({ embeds: [embed], components: [roles_notifications] })
    let iFilter = i => i.user.id === message.author.id;
    let collector = msg.createMessageComponentCollector({ filter: iFilter, time: 3600000 })

    collector.on("collect", async r => {
        if (r.customId === "notification_1") {
            let role_1 = message.guild.roles.cache.get(config.roles.all_notifications)
            if (message.member.roles.cache ?.has(role_1.id)) {
                message.member.roles.remove(role_1.id)
                r.reply({ content: `Removed The ${role_1} Role!`, ephemeral: true })
            } else {
                message.member.roles.add(role_1.id)
                r.reply({ content: `Added The ${role_1} Role!`, ephemeral: true })
            }
        } else if (r.customId === "notification_2") {
            let role_2 = message.guild.roles.cache.get(config.roles.youTube_uploads)
            if (message.member.roles.cache ?.has(role_2.id)) {
                message.member.roles.remove(role_2.id)
                r.reply({ content: `Removed The ${role_2} Role!`, ephemeral: true })
            } else {
                message.member.roles.add(role_2.id)
                r.reply({ content: `Added The ${role_2} Role!`, ephemeral: true })
            }
        } else if (r.customId === "notification_3") {
            let role_3 = message.guild.roles.cache.get(config.roles.twitter_uploads)
            if (message.member.roles.cache ?.has(role_3.id)) {
                message.member.roles.remove(role_3.id)
                r.reply({ content: `Removed The ${role_3} Role!`, ephemeral: true })
            } else {
                message.member.roles.add(role_3.id)
                r.reply({ content: `Added The ${role_3} Role!`, ephemeral: true })
            }
        } else if (r.customId === "notification_4") {
            let role_4 = message.guild.roles.cache.get(config.roles.server_news)
            if (message.member.roles.cache ?.has(role_4.id)) {
                message.member.roles.remove(role_2.id)
                r.reply({ content: `Removed The ${role_2} Role!`, ephemeral: true })
            } else {
                message.member.roles.add(role_4.id)
                r.reply({ content: `Added The ${role_4} Role!`, ephemeral: true })
            }
        }  else if (r.customId === "notification_5") {
            let role_5 = message.guild.roles.cache.get(config.roles.server_updates)
            if (message.member.roles.cache ?.has(role_5.id)) {
                message.member.roles.remove(role_5.id)
                r.reply({ content: `Removed The ${role_5} Role!`, ephemeral: true })
            } else {
                message.member.roles.add(role_5.id)
                r.reply({ content: `Added The ${role_5} Role!`, ephemeral: true })
            }
        } else if (r.customId === "notification_6") {
            let role_6 = message.guild.roles.cache.get(config.roles.anime_news)
            if (message.member.roles.cache ?.has(role_6.id)) {
                message.member.roles.remove(role_6.id)
                r.reply({ content: `Removed The ${role_6} Role!`, ephemeral: true })
            } else {
                message.member.roles.add(role_6.id)
                r.reply({ content: `Added The ${role_6} Role!`, ephemeral: true })
            }
        } else if (r.customId === "notification_7") {
            let role_7 = message.guild.roles.cache.get(config.roles.anime_episodes)
            if (message.member.roles.cache ?.has(role_7.id)) {
                message.member.roles.remove(role_7.id)
                r.reply({ content: `Removed The ${role_7} Role!`, ephemeral: true })
            } else {
                message.member.roles.add(role_7.id)
                r.reply({ content: `Added The ${role_7} Role!`, ephemeral: true })
            }
        }
    })
}

});

ОШИБКА:

/home/runner/System-Bot/node_modules/discord.js/src/rest/RequestHandler.js:350
  throw new DiscordAPIError(data, res.status, request);
        ^

DiscordAPIError: Недопустимое тело формы компоненты[0].components[5]: указанный компонент превышает максимальную ширину компоненты[0].components[6]: указанный компонент превышает максимальную ширину в RequestHandler.execute (/home/runner/System-Bot/node_modules/discord.js/src/rest/RequestHandler.js:350:13) в processTicksAndRejections (узел: внутренний/процесс/task_queues:96:5) в асинхронном RequestHandler.push (/home/runner/System-Bot/node_modules/discord.js/src/rest/RequestHandler.js:51:14) в асинхронном TextChannel.send (/home/runner/System-Bot/node_modules/discord.js/src/structures/interfaces/TextBasedChannel.js:175:15) { метод: 'пост', путь: '/каналы/947233067129516093/сообщения', код: 50035, httpСтатус: 400, данные запроса: { json: { содержание: не определено, тс: ложь, одноразовый номер: не определено, встраивает: [ { название: ноль, тип: «богатый», описание: «Выбрать роль», URL: ноль, метка времени: 0, цвет: ноль, поля: [], миниатюра: ноль, изображение: ноль, автор: ноль, нижний колонтитул: ноль } ], компоненты: [ { компоненты: [ [Объект Object], [Объект Object], [Объект Object], [Объект] ], Тип 1 } ], имя пользователя: не определено, avatar_url: не определено, разрешенные_упоминания: не определено, флаги: неопределенные, message_reference: не определено, вложения: неопределенные, sticker_ids: не определено }, файлы: [] } }

Может стоит прочитать документацию...?!? discordjs.guide/взаимодействия/…: «ВНИМАНИЕ: у вас может быть максимум пять строк ActionRow для каждого сообщения и пять кнопок в строке действий».

CBroe 21.03.2022 13:41

Отвечает ли это на ваш вопрос? Discord JS, дискорд-кнопки; Как прикрепить к сообщению более 5 кнопок?

Zsolt Meszaros 21.03.2022 13:42
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
2
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Согласно discord.js, у вас может быть не более пяти кнопок в MessageActionRow, поэтому все, что вам нужно сделать, это удалить последние две MessageButtons, чтобы устранить ошибку. Но если вы все же хотите, чтобы отображались все кнопки, вы можете добавить еще один MessageActionRow в свой код с двумя последними кнопками и отправить их вместе, чтобы ваш код выглядел так:

client.on("messageCreate", async message => {
if (message.author.bot || !message.guild) return;
if (message.content.startsWith(prefix + "get-roles")) {
    let first_roles_notifications = new Discord.MessageActionRow()
    .addComponents(
        new Discord.MessageButton()
        .setCustomId("notification_1")
        .setLabel("All Notifications")
        .setStyle("PRIMARY"),
        new Discord.MessageButton()
        .setCustomId("notification_2")
        .setLabel("YouTube Uploads")
        .setStyle("PRIMARY"),
        new Discord.MessageButton()
        .setCustomId("notification_3")
        .setLabel("Twitter Uploads")
        .setStyle("PRIMARY"),
        new Discord.MessageButton()
        .setCustomId("notification_4")
        .setLabel("Server News")
        .setStyle("PRIMARY"),
        new Discord.MessageButton()
        .setCustomId("notification_5")
        .setLabel("Server Updates")
        .setStyle("PRIMARY"),
    )
    let second_roles_notifications = new Discord.MessageActionRow()
    .addComponents(
        new Discord.MessageButton()
        .setCustomId("notification_6")
        .setLabel("Anime News")
        .setStyle("PRIMARY"),
        new Discord.MessageButton()
        .setCustomId("notification_7")
        .setLabel("Anime Episodes")
        .setStyle("PRIMARY"),
    )
    let embed = new Discord.MessageEmbed()
    .setDescription("Select role")
    let msg = await message.channel.send({ embeds: [embed], components: [first_roles_notifications, second_roles_notifications] })
    let iFilter = i => i.user.id === message.author.id;
    let collector = msg.createMessageComponentCollector({ filter: iFilter, time: 3600000 })

    collector.on("collect", async r => {
        if (r.customId === "notification_1") {
            let role_1 = message.guild.roles.cache.get(config.roles.all_notifications)
            if (message.member.roles.cache ?.has(role_1.id)) {
                message.member.roles.remove(role_1.id)
                r.reply({ content: `Removed The ${role_1} Role!`, ephemeral: true })
            } else {
                message.member.roles.add(role_1.id)
                r.reply({ content: `Added The ${role_1} Role!`, ephemeral: true })
            }
        } else if (r.customId === "notification_2") {
            let role_2 = message.guild.roles.cache.get(config.roles.youTube_uploads)
            if (message.member.roles.cache ?.has(role_2.id)) {
                message.member.roles.remove(role_2.id)
                r.reply({ content: `Removed The ${role_2} Role!`, ephemeral: true })
            } else {
                message.member.roles.add(role_2.id)
                r.reply({ content: `Added The ${role_2} Role!`, ephemeral: true })
            }
        } else if (r.customId === "notification_3") {
            let role_3 = message.guild.roles.cache.get(config.roles.twitter_uploads)
            if (message.member.roles.cache ?.has(role_3.id)) {
                message.member.roles.remove(role_3.id)
                r.reply({ content: `Removed The ${role_3} Role!`, ephemeral: true })
            } else {
                message.member.roles.add(role_3.id)
                r.reply({ content: `Added The ${role_3} Role!`, ephemeral: true })
            }
        } else if (r.customId === "notification_4") {
            let role_4 = message.guild.roles.cache.get(config.roles.server_news)
            if (message.member.roles.cache ?.has(role_4.id)) {
                message.member.roles.remove(role_2.id)
                r.reply({ content: `Removed The ${role_2} Role!`, ephemeral: true })
            } else {
                message.member.roles.add(role_4.id)
                r.reply({ content: `Added The ${role_4} Role!`, ephemeral: true })
            }
        }  else if (r.customId === "notification_5") {
            let role_5 = message.guild.roles.cache.get(config.roles.server_updates)
            if (message.member.roles.cache ?.has(role_5.id)) {
                message.member.roles.remove(role_5.id)
                r.reply({ content: `Removed The ${role_5} Role!`, ephemeral: true })
            } else {
                message.member.roles.add(role_5.id)
                r.reply({ content: `Added The ${role_5} Role!`, ephemeral: true })
            }
        } else if (r.customId === "notification_6") {
            let role_6 = message.guild.roles.cache.get(config.roles.anime_news)
            if (message.member.roles.cache ?.has(role_6.id)) {
                message.member.roles.remove(role_6.id)
                r.reply({ content: `Removed The ${role_6} Role!`, ephemeral: true })
            } else {
                message.member.roles.add(role_6.id)
                r.reply({ content: `Added The ${role_6} Role!`, ephemeral: true })
            }
        } else if (r.customId === "notification_7") {
            let role_7 = message.guild.roles.cache.get(config.roles.anime_episodes)
            if (message.member.roles.cache ?.has(role_7.id)) {
                message.member.roles.remove(role_7.id)
                r.reply({ content: `Removed The ${role_7} Role!`, ephemeral: true })
            } else {
                message.member.roles.add(role_7.id)
                r.reply({ content: `Added The ${role_7} Role!`, ephemeral: true })
            }
        }
    })
}

Другие вопросы по теме