В моем боте я получаю ошибку:
UnhandledPromiseRejectionWarning: ReferenceError: имя не определено
Проблема возникает, когда я не в голосовом канале и набираю команду !ph
.
Командный тег для роли помощников (@helpers
) и роли персонала (@staff
) и эта работа, когда я нахожусь в голосовом канале.
Ошибка в if(commandfile) commandfile.run(bot, message, args);
в основной конфигурации.
Код для команды !ph
.
const Discord = require("discord.js");
const client = new Discord.Client();
module.exports.run = async (bot, message, args) => {
let target = message.mentions.users.first() || message.author;
let room = message.member.voiceChannel.name;
if (!room) {
return message.channel.send("<@&587662170548994076>" + " <@&594077199859187723> " + "**!צריך את עזרתכם** " + target + " ** :name_badge: המשתמש לא נמצא בשום חדר**\n");
} else {
return message.channel.send("<@&587662170548994076> <@&594077199859187723> " + target + " **!צריך את עזרתכם** \n" + " `` " + room + " `` " + "**המשתמש נמצא בחדר :bell:**");
}
}
module.exports.help = {
name: "ph"
}
код для бота:
const botconfig = require("./botconfig.json");
const Discord = require("discord.js");
const fs = require("fs");
const bot = new Discord.Client({disableEveryone: true});
bot.commands = new Discord.Collection();
let xp = require("./xp.json");
let purple = botconfig.purple;
fs.readdir("./commands/", (err, files) => {
if (err) console.log(err);
let jsfile = files.filter(f => f.split(".").pop() === "js")
if (jsfile.length <= 0) {
console.log("Couldn't find commands.");
return;
}
jsfile.forEach((f, i) => {
let props = require(`./commands/${f}`);
console.log(`${f} loaded!`)
bot.commands.set(props.help.name, props);
});
})
bot.on("ready", async () => {
console.log(`${bot.user.username} is online!`);
bot.user.setGame("PeDiXOL Server!");
});
bot.on("message", async message => {
if (message.author.bot) return;
if (message.channel.type === "dm") return;
let prefix = botconfig.prefix;
let messageArray = message.content.split(" ");
let cmd = messageArray[0];
let args = messageArray.slice(1)
let commandfile = bot.commands.get(cmd.slice(prefix.length));
if (commandfile) commandfile.run(bot, message, args);
let xpAdd = Math.floor(Math.random() * 7) + 8
console.log(xpAdd)
if (!xp[message.author.id]) {
xp[message.author.id] = {
xp: 0,
level: 1
};
}
let curxp = xp[message.author.id].xp;
let curlvl = xp[message.author.id].level;
let nxtLvl = xp[message.author.id].level * 300;
xp[message.author.id].xp = curxp + xpAdd;
if (nxtLvl <= xp[message.author.id].xp) {
xp[message.author.id].level = curlvl + 1;
let lvlup = new Discord.RichEmbed()
.setTitle("Level Up!")
.setColor(purple)
.addField("New Level", curlvl + 1);
message.channel.send(lvlup).then(msg => {
msg.delete(5000)
});
}
fs.writeFile("./xp.json", JSON.stringify(xp), (err) => {
if (err) console.log(err)
});
});
bot.login(botconfig.token);
Это необходимо для вывода, когда вы не находитесь в голосовом канале, что-то, что помечает помощников и персонал и говорит, что вы не находитесь в голосовом канале.
Когда вы находитесь в голосовом канале, выведите the username needs help
, отметьте сотрудников и помощников и произнесите имя голосового канала, к которому подключен пользователь.