Перейти к основному содержимому

Примеры

Примеры использования фрагментов кода

Аргументы команды

Пример ниже объявляет переменную reason и присваивает ей значение аргумента причина. Если значение аргумента не указано, то вернёт undefined.

let reason = command.options.find(i => i.name === 'причина')

// теперь можно использовать эту переменную где угодно
reason.name // название аргумента
reason.value // значение аргумента

Мы также можем получить объект user, если установленный тип аргумента ПОЛЬЗОВАТЕЛЬ.

let user = command.options.find(i => i.name === 'пользователь')

user.user.username // имя пользователя
user.value // идентификатор пользователя

Обратите внимание, что в примере идёт обращение к свойству user, а не к value. Свойство value в данном случае будет иметь значение идентификатора упомянутого пользователя.

Со всеми свойствами объекта command можно ознакомиться здесь.

Хранение значений

Мы можем хранить какие-нибудь значения для их дальнейшего использования с помощью функции setValue и getValue.

Например можно сохранить дату последнего использования команды:

// объявляем переменную и присваеваем
// ей значение текущей временной метки
const now = Date.now()

// сохраняем значение переменной 'now' в хранилище

setValue(`${command.id}.${member.user.id}.lastUse`, now)

// получаем сохраненные данные
// если ключа не существует, то вернёт undefined

const lastUse = await getValue(`${command.id}.${member.user.id}.lastUse`)

В примере выше мы использовали шаблонные строки для ключей хранилища. Рекомендуется указывать уникальный ключ для разных значений, в противном случае данные будут перезаписаны. В примере выше в ключе значения присутствует идентификатор пользователя. Если команду использует другой пользователь, то для него будут другие данные в хранилище.

Случайное значение

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

// создаём функцию 'choose' с помощью
// ключевого слова 'function'
function choose(...args) {
// случайное число от 0 до количества введенных аргументов
const randomNum = Math.floor(Math.random() * args.length)
// возвращаем значение через ключевое слово 'return'
return args[randomNum]
}

// вызываем её и передаём аргументы через запятую
// функция вернёт случайный введенный в неё аргумент
const randomValue = choose('какое-нибудь', 'случайное', 'значение')

Проверка разрешений

У объекта member есть свойство permissions и оно является массивом разрешений участника.

// здесь мы проверяем есть ли право
// администратора у текущего пользователя
// вернёт true, если есть право администратора и false, если права нет
if (member.permissions.includes('ADMINISTRATOR')) {
// дальнейший код
}

Проверка наличия роли

к сведению

Проверку наличия роли можно выполнить только для автора команды, т.е. участника, вызвавшего её.

Проверка наличия определённой роли у участника в пользовательских командах делается аналогично вышеописанной проверке разрешений.

// здесь мы проверяем наличие конкретной роли
// у пользователя, вызвавшего команду
// вместо ROLE_ID должен быть указан ID роли на сервере
if (member.roles.map((role) => role.id).includes("ROLE_ID")) {
// дальнейший код
}
warning

В кавычках вместо ROLE_ID необходимо указать ID роли, наличие которой вы хотите проверить.