Примеры
Примеры использования фрагментов кода
Аргументы команды
Пример ниже объявляет переменную 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")) {
// дальнейший код
}
В кавычках вместо ROLE_ID
необходимо указать ID роли, наличие которой вы хотите проверить.