Не работает проверка DiscordJS
Задача состоит в том, чтобы выдавать предупреждения пользователям на сервере в дискорде
module.exports.run = async (bot,message,args) => {
if(!message.member.hasPermission('KICK_MEMBERS')) return message.channel.send('У вас нет прав');
let wUser = message.guild.member(message.mentions.users.first()) || message.guild.members.get(args[0]);
}
module.exports.help = {
name: 'warn'
}
но ничего не происходит, а в консоль выводится ошибка:
1) message.guild.members.get is not a function
2) message.guild.members.get is not a function
Полный код:
const Discord = require('discord.js');
const fs = require('fs');
const profile = require('../profile.json');
module.exports.run = async (bot,message,args) => {
try{
function send(msg){message.channel.send(msg)}
if(!message.member.hasPermission('KICK_MEMBERS')) return message.channel.send('У вас нет прав');
let wUser = message.guild.member(message.mentions.users.first()) || message.guild.members.get(args[0]);
if(!args[0]){return send('Пользователь не указан')};
if(!wUser){return send('Пользователь не найден')}
profile[wUser.id].warns++;
fs.writeFile('./profile.json',JSON.stringify(profile), (err) => {
if(err){console.log(err)}
})
if(profile[wUser.id].warns >=3){
message.guild.member(wUser).kick('Увы');
}
let embed = new Discord.RichEmbed()
.setDescription('Предупреждение')
.addField('Администратор', message.author.username)
.addField('Выдал предупреждение',`${wUser.user.username}`)
.addField('Кол-во предупреждений',`${profile[wUser.id].warns}/3`)
message.channel.send(embed);
}catch(err){
console.log(`${err.name}\n2.${err.message}\n3.${err.stack}`)
}
}
module.exports.help = {
name: 'warn'
}
Ответы (2 шт):
Автор решения: wilddip
→ Ссылка
Измените message.guild.members.get(args[0]) на message.guild.members.resolve(args[0]). Также, рекомендую периодически ознакамливаться с документацией
Полный код:
const Discord = require('discord.js');
const fs = require('fs');
const profile = require('../profile.json');
module.exports.run = async (bot,message,args) => {
try{
function send(msg){message.channel.send(msg)}
if(!message.member.hasPermission('KICK_MEMBERS')) return message.channel.send('У вас нет прав');
let wUser = message.guild.member(message.mentions.users.first()) || message.guild.members.resolve(args[0]);
if(!args[0]){return send('Пользователь не указан')};
if(!wUser){return send('Пользователь не найден')}
profile[wUser.id].warns++;
fs.writeFile('./profile.json',JSON.stringify(profile), (err) => {
if(err){console.log(err)}
})
if(profile[wUser.id].warns >=3){
message.guild.member(wUser).kick('Увы');
}
let embed = new Discord.RichEmbed()
.setDescription('Предупреждение')
.addField('Администратор', message.author.username)
.addField('Выдал предупреждение',`${wUser.user.username}`)
.addField('Кол-во предупреждений',`${profile[wUser.id].warns}/3`)
message.channel.send(embed);
}catch(err){
console.log(`${err.name}\n2.${err.message}\n3.${err.stack}`)
}
}
module.exports.help = {
name: 'warn'
}
Автор решения: Ahegao
→ Ссылка
Все участники сервера хранятся в кеше: guild.members.cache.get(). На 5 января 2021 работает!