@K1tekat

Как сделать команду по выдаче роли в ds.js на время?

Я хочу найти как сделать данную команду, много что посмотрел, но не нашел нужного. Прошу вас помочь с решением данной проблемы, просто я новичек и не так много знаю про это
Нашел данный код, но он не работает
if (array[0] == '!role') {
    let member = msg.mentions.members.first() || msg.guild.members.cache.get(array[1])
    let role = msg.guild.roles.cache.get('937251550840111105');
    if (!member) {
        return msg.reply('Пользователь не найден!');
    }

    if (!role) {
        return msg.reply('Роль не найдена!');
    }

    member.roles
        .add(role)
        .then(() => {
            msg.reply('done');
        })
        .catch((err) => {
            msg.reply('failed');
        });
}
  • Вопрос задан
  • 363 просмотра
Решения вопроса 1
Alexandre888
@Alexandre888 Куратор тега Боты
Javascript-разработчик
если вы не в состоянии прочитать код, который копипастите, я настоятельно рекомендую прочитать хотя бы несколько глав из learn.javascript.ru.
в этом коде нету ничего, что было бы связано с удалением роли у пользователя - тем более по истечению какого-то времени.

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

присвоим пользователю роль, по истечению определенного времени - удалим её у него:
let member = message.mentions.members.first() || message.guild.members.cache.get(array[1])

let role = message.guild.roles.cache.find(r => r.name === "название_роли"); // или message.guild.roles.cache.get("ID_роли"), если вы хотите обнаружить роль по её ID.

member.roles.add(role).then((Member) => {
    setTimeout(() => {
        Member.roles.remove(role)
    }, 2000);
})
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы