Задать вопрос
  • Как сделать красивую архивацию канала discord (python)?

    Alexandre888
    @Alexandre888 Куратор тега Discord
    Fazzis, составьте нормальное описание вопроса, без непонятных терминов по типу "транскрипт" и прочих неоднозначностей.
    прикрепите скрины, если требуется.
  • Как убрать текст: Hey there! Now that a command has been ran, you should be able to get your Active Developer badge on?

    Alexandre888
    @Alexandre888 Куратор тега Discord
    Ropb4ik,
    когда делаешь команду через @bot.slash_command, бот отвечает типо что бы получить бейдж активного разработчика, хотя он у меня уже есть, а так у меня команды написано через @bot.command()


    эта информация никак не проясняет суть вопроса.
    чтобы решить проблему, нужно видеть код и подробное описание — что и в каком место работает не так, как нужно.
    у вас 0 информации в описании и размытая проблема.
  • Почему не работает callback функция внутри slice()?

    Alexandre888
    @Alexandre888
    Михаил Оловянников, что slice, что indexOf- это строковые методы, они возвращают определенные значения.

    исходя из этого, логично, что если, например, в console.log() вставить str.indexOf(...) или str.slice(...), то что-то появится в консоли.

    также мы можем вставить один метод в другой:
    str.slice(какой_то_метод_возвращающий_значение(), другой_какой_нибудь_метод_возвращающий_значение())


    языком допускаются такие конструкции, здесь нет ничего необычного или нетривиального.

    стрелочную функцию тоже можно засунуть в .slice() (с условием, что она что-то вернёт), но в этом попросту нету смысла, если функция выполняет одно простое действие.

    к примеру, смысл был бы от такого выражения:

    str.slice(0, (() => {
    какие-то сложные действия
    сложные математические вычисления
    длинный код
    .
    .
    .
    и в конце обязательно возврат вычисленного значения
    
    return вычисленное значение;
    })());


    и нужно постоянно смотреть, что именно ожидают методы в качестве своих аргументов.
    если зайти на MDN Web Docs: https://developer.mozilla.org/en-US/docs/Web/JavaS...

    ...можно увидеть описание метода .slice(), к примеру, и там написано в секции "Parameters", что ожидает метод slice.
  • Как сделать похожее сообщение об ошибке в discord?

    Alexandre888
    @Alexandre888
    обычный embed с заголовком "Invalid parameter" и с описанием "Unrecognized argument(s): `какой-то текст`"

    в чем конкретно сложность заключается?
  • Как исправить ошибку при проверке наличия роли у юзера?

    Alexandre888
    @Alexandre888 Куратор тега discord.js
    userRoles === '',`${HaveOrNotAdmRole.id}`

    а что это вообще за конструкция? что вы ожидали получить от этого выражения?
    в правой части вы воспользовались оператором "запятая", который выполняет все выражения, но возвращает результат только последнего.

    это значит, что из выражение1, выражение2, выражение3, выражениеN, вернётся только последнее - выражениеN

    поэтому в вашем случае пустая строка '' игнорируется, и возвращается только `${HaveOrNotAdmRole.id}`

    после этого сравнение выглядит так: userRoles === `${HaveOrNotAdmRole.id}`

    userRolesмассив, `${HaveOrNotAdmRole.id}`строка.
    при строгом сравнении === не происходит преобразование типов к одному, такое сравнение как у вас ВСЕГДА вернёт false, сам if НИКОГДА не сработает, вы сравниваете яблоко с табуреткой

    даже если исправить ошибку, толку от такой конструкции 0.
  • Как сделать слеш команду в Discord.js боте?

    Alexandre888
    @Alexandre888 Куратор тега discord.js
    ни один разумный человек не будет писать полный код на 100+ строк под заказ бесплатно, тем более для незнакомого юзера на q&a сайте.
    c какой целью ты публикуешь эти "вопросы"?

    существует документация по discord.js, существует руководство с примерами, бери оттуда информацию и пиши код - если что-то не будет работать, публикуй вопрос с попытками.
  • Как сделать автомодерацию в дискорде на node.js?

    Alexandre888
    @Alexandre888 Куратор тега discord.js
    если вы планируете получить готовый код, лучшим вариантом для вас будет freelance.habr.com, вы выбрали не тот сайт.
  • Как сделать так, чтобы на кнопку могли нажимать только два участника: interaction.user и участник, выбранный через options.getUser?

    Alexandre888
    @Alexandre888 Куратор тега discord.js
    поскольку я не мог сделать так,чтобы доступ был только у двух участников.

    прикрепите код, который не работал.
  • Как зайти на Heroku с России?

    Alexandre888
    @Alexandre888 Куратор тега Discord
    klimov-sergey, нормальный платный сервис, подходящий вам по бюджету.
    цены везде разные, нужно выбирать исходя из ваших задач и нужд.

    конкретно для discord-бота очень хорошим вариантом будет Oxide Hosting, там адекватные цены и есть отдельные планы для дискорд ботов.
  • Как найти канал в категории?

    Alexandre888
    @Alexandre888 Куратор тега discord.js
    anubis465,
    `|${interaction.user.username}`

    здесь вы используете знак вертикальной черты ( | ), который можно набрать на клавиатуре — этот символ в названии канала использоваться не может.

    на скрине же используется символ, скопированный из интернета ( ┃ ).
    |и имеют разный юникод, поэтому бот не может найти канал.

    можно ещё записать как `\u2503${interaction.user.username}`
  • Как найти канал в категории?

    Alexandre888
    @Alexandre888 Куратор тега discord.js
    anubis465,
    channel.name === `|${interaction.user.username}`

    символ | не может быть в названии канала.
  • Как найти канал в категории?

    Alexandre888
    @Alexandre888 Куратор тега discord.js
    anubis465, значит либо вы указываете неверное название категории, либо неверное название канала, либо канала с таким названием в категории нету.

    название категории должно быть строго такого же регистра, как и в разделе "Редактировать категорию".
    название канала - все в нижнем регистре
  • Как найти канал в категории?

    Alexandre888
    @Alexandre888 Куратор тега discord.js
    anubis465, код, который я только что прислал, полностью исправен.
    если канал есть - возвращается TextChannel, если нет - возвращается undefined.

    про "создание канала" в вопросе речи не было, тут уже с вашей стороны проблемы.
  • Как найти канал в категории?

    Alexandre888
    @Alexandre888 Куратор тега discord.js
    anubis465, всегда указывайте в описании вопроса версию в будущем.
    для V13 следующим образом будет:
    let channel = interaction.guild.channels.cache
        .find(channel => channel.name === "категория" && channel.type === "GUILD_CATEGORY")
        ?.children
        .find(channel => channel.name === "канал")

    в v13 .children - это коллекция, и ChannelType.Category ещё нету.
  • Как найти канал в категории?

    Alexandre888
    @Alexandre888 Куратор тега discord.js
    anubis465, не GUILD_CATEGORY, а ChannelType.GuildCategory, внимательнее прочтите мой ответ
    не ?.children, а ?.children.cache
  • Как найти канал в категории?

    Alexandre888
    @Alexandre888 Куратор тега discord.js
    anubis465, покажите весь код
  • Как выдать роль по кнопке определенному пользователю?

    Alexandre888
    @Alexandre888 Куратор тега discord.js
    Кирюшка,

    Сама ошибка:
    ReferenceError: ComponentType is not defined


    именно по этому нужно было начинать с изучения языка, а не с изучения библиотеки и написания бота, вы не понимаете даже основ и не можете исправить простейшую ошибку.

    ComponentType не может сам себя объявить в коде, его нужно было импортировать из библиотеки, в самом начале кода
    const { ComponentType, все остальное } = require("discord.js")


    это то же самое, что и с переменными (я надеюсь, что вы хотя бы с ними успели познакомиться):
    console.log(test) // ReferenceError: test is not defined (компилятор не понимает, что такое test, потому что он не был объявлен в коде)
    
    let test = 55;
    console.log(test) // 55 (всё нормально, переменная test существует)


    касательно ошибки взаимодействия - бот должен в обязательном порядке отреагировать на нажатие на кнопку, иначе ошибка так и будет появляться.
    конкретным фрагментом кода я вам пока что не могу помочь, т.к не знаю, как вы хотите, чтобы бот отреагировал на нажатие.
  • Как выдать роль по кнопке определенному пользователю?

    Alexandre888
    @Alexandre888 Куратор тега discord.js
    Кирюшка,
    - const member = interaction.options.getMember(target);
    + const member = interaction.options.getMember("target");
    
    - const role = interaction.options.getRole('1075876710832152616');
    + const role = interaction.guild.roles.cache.get("1075876710832152616")


    т.к вы хотите получить роль, которая никак не связана со слэш-командой, и пользователь не передает её при вводе слэш-команды, просто ищите её с помощью .get(), как показано выше
  • Как выдать роль по кнопке определенному пользователю?

    Alexandre888
    @Alexandre888 Куратор тега discord.js
    Кирюшка, во-первых, вы неправильно указываете customId.
    customId - это универсальный идентификатор кнопки, который вы ей присваиваете при ее создании.

    const row = new ActionRowBuilder()
        .addComponents(
            new ButtonBuilder()
            .setCustomId('row_0_button_0') // ***
            .setLabel('Забанить')
            .setEmoji(``)
            .setStyle(ButtonStyle.Danger),
            new ButtonBuilder()
            .setCustomId('row_0_button_1') // ***
            .setLabel('Разбанить')
            .setEmoji(``)
            .setStyle(ButtonStyle.Success),
            new ButtonBuilder()
            .setCustomId('row_0_button_4') // ***
            .setLabel('Мут')
            .setEmoji(``)
            .setStyle(ButtonStyle.Danger),
            new ButtonBuilder()
            .setCustomId('row_0_button_5') // ***
            .setLabel('Размут')
            .setEmoji(``)
            .setStyle(ButtonStyle.Success),
        );

    там, где я отметил ***, вы присваиваете определенной кнопке определенный идентификатор, который называется customId.
    по этому идентификатору в дальнейшем можно определить, какая именно кнопка была нажата.
    поэтому в коллекторе вы должны указать customId одной из этих кнопок.

    у вас допустим последняя кнопка, "размут", вы присвоили ей следующий customId: row_0_button_5
    поэтому чтобы проверить, что нажата была именно кнопка "размут", в проверке нужно использовать именно этот идентификатор:
    if (i.customId === "row_0_button_5") { ... }

    во-вторых, вы неправильно получаете роль, в getRole() нужно передавать название параметра в слэш-команде, в который записывается указанная пользователем роль.
    то же самое и с getMember() - вы должны передавать название параметра.