Opracowałem bot. To jest mój kod:

const Discord = require('discord.js')
const client = new Discord.Client()

client.on('ready', () => {
  console.log(`Bot ready!`)
})

const filterNum = (str) => {
  const numericalChar = new Set(["|","&","!","?",":","<","=",">","(",")","/","*","-","+",".","0","1","2","3","4","5","6","7","8","9"])
  str = str.split("").filter(char => numericalChar.has(char)).join("");
  return str;
}

client.on('message',(msg)=>{
  user = msg.author
  msg1 = msg.content
  msg1 = msg1.toLowerCase()
  msg1 = msg1.replace(new RegExp(/[àáâãäå]/g),"a")
  msg1 = msg1.replace(new RegExp(/[èéêë]/g),"e")
  msg1 = msg1.replace(new RegExp(/[ìíîï]/g),"i")
  msg1 = msg1.replace(new RegExp(/[òóôõö]/g),"o")
  msg1 = msg1.replace(new RegExp(/[ùúûü]/g),"u")
  msg1 = msg1.replace(new RegExp(/[ýÿ]/g),"y")
  try{
    if(msg.content.startsWith("/kick")){
      if(user.hasPermission(['KICK_MEMBERS', 'BAN_MEMBERS'])){
        member = msg.mentions.members.first()
        if(member.hasPermission(['KICK_MEMBERS', 'BAN_MEMBERS'])){
          msg.channel.send("No se puede kickear a un staff.")
        }else{
          member.kick().then((member) => {
            msg.channel.send("Kickeado exitosamente.")
          }).catch(() => {
            msg.channel.send("Acceso denegado.")
          })
        }
      }else{
        msg.channel.send("/kick "+user)
      }
    }
  }catch(e){
    msg.channel.send(e.message)
  }
  if(msg.content.startsWith("/calc")){
    try{
      operation=msg.content.split("/calc")[1]
      operation=filterNum(operation)
      result=eval(operation)
      msg.channel.send("```"+operation+"≡"+result+"```")
    }catch(e){
      msg.channel.send(e.message)
    }
  }
  if(!msg.content.startsWith("/calc")&&!msg.content.startsWith("/kick")&&msg.content.startsWith("/")){
    msg.reply(`
      Comando desconocido. Aquí tienes la lista de comandos:
      /kick miembro: Expulsa a un miembro de la sala.
      /calc operación: Calcula una operación matemática.
    `)
  }
})

client.login('token')

A to jest błąd:

user.haspermission nie jest funkcją

Próbowałem go zmienić na inne polecenie i nie zadziałało. Próbowałem pokazać msg.author i jest niezdefiniowany, ale dziwnie, msg.author.bot jest zdefiniowany jako boolean. To dziwne. Wygląda na problem z API discord.js. Nie mogę pokazać tokena, ponieważ ktoś może wykorzystać moje boty w jego cele, ale wszędzie.

Co mogę zrobić? Dzięki za pomoc.

0
user14462155 16 październik 2020, 14:25

1 odpowiedź

Najlepsza odpowiedź

Funkcja hasPermission() może być używana tylko na obiekcie członkowskim. Więc musisz zmienić user = msg.author do user = msg.member.

1
Worthy Alpaca 16 październik 2020, 11:43