@superboyvasek

Почему бот не воспринимает команды?

бот дискорд
const Discord = require('discord.js');
const fs = require('fs');
const bot = new Discord.Client();
let config = require('./botconfig.json');
let token = config.token;
let prefix = config.prefix;
let profile = require('./profile.json');
bot.commands = new Discord.Collection();

fs.readdir('./cmds', (err, files) =>{
  if (err) console.log(err);
  let jsfile = files.filter(f => f.split('.').pop() === 'js');
  if (jsfile.length <= 0) return console.log('Комманды не найдены!');
  console.log(`Loaded ${jsfile.length} commands`);
  jsfile.forEach((f, i) => {
    let props = require(`./cmds/${f}`)
    bot.commands.set(props.help.name, props)
  })
});

bot.on('ready', () => {
  console.log(`запустился бот ${bot.user.username}`);
  bot.generateInvite(["ADMINISTRATOR"]).then(link =>{
    console.log(link);
  })
});

bot.on('message', async message => {
  if(message.author.bot) return;
  if(message.channel.type == "dm") return;
  let uid = message.author.id;
  if(!profile[uid]){
    profile[uid] ={
      coins:10,
      warns:0,
      xp:0,
      lvl:0,
    };
  };
  let u = profile[uid];
  u.coins +=0.25;
  u.xp +=0.35;
  if(u.xp>= (u.lvl * 5)){
    u.xp = 0;
    u.lvl += 1;
  }
  fs.writeFile('./profile.json',JSON.stringify(profile),(err)=>{
    if(err) console.log(err);
  });
  let user = message.author.username;
  let userid = message.author.id;
  let messageArray = message.cotent.split(" ");
  let command = messageArray [0].toLowerCase();
  let args = messageArray.slice(1);
  if(!message.content.startsWith(prefix)) return;
  let cmd = bot.commands.get(command.slice(prefix.length));
  if(cmd) cmd.run(bot,message,args);
});

bot.login(token);
сам код бота почему бот не читает сообщения найдите мою ошибку
  • Вопрос задан
  • 152 просмотра
Пригласить эксперта
Ответы на вопрос 1
gohellp
@gohellp
Могу, сказать, что не увидел проверку сообщений.
к примеру:
У вас:
if(!profile[uid]){
    profile[uid] ={
      coins:10,
      warns:0,
      xp:0,
      lvl:0,
    };

Чтоб была хоть маломальская проверка:
if(message.content.toLowerCase()==="!profile[uid]"){
    profile[uid] ={
      coins:10,
      warns:0,
      xp:0,
      lvl:0,
    };

Советую, всё-таки просмотреть множество других кодов и, всё же, открыть и хорошо прочитать документацию. Иначе вы и продолжите допускать столь глупые ошибки.
Про написанный мною код: бот будет реагировать на !profile[uid] и только. Чтобы он вытягивал упоминание кого-либо надо написать так:

if(message.content.toLowerCase()==="!profile"){
let mbr = message.mentions.members.first() || message.member;
};


И далее вопрос к вам: Вы писали код, не изучая какую-либо документацию?
Просто, чтоб бот писал это:
profile[uid] ={
coins:10,
warns:0,
xp:0,
lvl:0,
нужно как минимум сказать ему "напиши" и то он будет писать это всем. Чтоб у каждого юзера были свои значения нужна уже база данных.
Надеюсь, что вы в будущем прочитаете документацию и напишите свой код идеально.

PS: toLowerCase() делает из "КАПС" это: "капс" и так удобнее пользователям взаимодействовать с ботом. У всех ж была ситуация, когда нажимаешь капслок и забываешь про это;)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы