Pangsit
@Pangsit
Пытаюсь что-то кодить так сказать

Cannot read property 'haspermissions' of undefined?

Привет!
Хочу сделать варн систему,но выдает ошибку.
Суть ошибки в том,что бот не распознает hasPermissions ,а это нужно чтобы проверить может ли человек,который дает команду боту сам банить/варнить/кикать . По крайне мере я так думал сделать,но что-то пошло не так.
spoiler
module.exports = {
  name: "warn",
  description: "Варн,если имеешь право.",
    execute(client, message, args) {
if(!message.member.haspermissions("MANAGE_MEMBERS")) return message.reply("У Вас нету прав");
  let wUser = message.guild.member(message.mentions.users.first()) || message.guild.members.get(args[0])
  if(!wUser) return message.reply("Не могу найти");
  if(wUser.hasPermission("MANAGE_MESSAGES")) return message.reply("pl");
  let reason = args.join(" ").slice(22);

  if(!warns[wUser.id]) warns[wUser.id] = {
    warns: 0
  };

  warns[wUser.id].warns++;

  fs.writeFile("./warnings.json", JSON.stringify(warns), (err) => {
    if (err) console.log(err)
  });

  let warnEmbed = new Discord.RichEmbed()
  .setDescription("Warns")
  .setAuthor(message.author.username)
  .setColor("#fc6400")
  .addField("Warned User", `<@${wUser.id}>`)
  .addField("Warned In", message.channel)
  .addField("Number of Warnings", warns[wUser.id].warns)
  .addField("Reason", reason);

  let warnchannel = message.guild.channels.find(`name`, "incidents");
  if(!warnchannel) return message.reply("Не нашел канал");

  warnchannel.send(warnEmbed);

  if(warns[wUser.id].warns == 2){
    let muterole = message.guild.roles.find(`name`, "muted");
    if(!muterole) return message.reply("Нету роли с мутом.");

    let mutetime = "10s";
    await(wUser.addRole(muterole.id));
    message.channel.send(`<@${wUser.id}> был замучен`);

    setTimeout(function(){
      wUser.removeRole(muterole.id)
      message.reply(`<@${wUser.id}> был размучен.`)
    }, ms(mutetime))
  }
  if(warns[wUser.id].warns == 3){
    message.guild.member(wUser).ban(reason);
    message.reply(`<@${wUser.id}> был забанен.`)
  }

}
}
Это код самого warn.
warnings.json как я задумывал будет просто скапливать информацию
Как я думаю,нужно после
spoiler
excute(client,messagemargs) {
добавить
spoiler
const permissions = channel.permissionsFor(message.client.user)
или что-то такое,что будет ссылаться на канал.Возможно стоило писать не
spoiler
.haspermissionsFor а permissions.has
если это что-то меняет,но я не знаю.Я запутался,помогите кто может.Спасибо
  • Вопрос задан
  • 184 просмотра
Пригласить эксперта
Ответы на вопрос 1
@Dozalex
Senior Frontend Developer
Ты пытаешься получить поле haspermissions у undefined значения. Подебаж, посмотри, где у тебя это значение становится undefined.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы