#javascript #github #heroku #discord.js
Вопрос:
Я получаю это сообщение об ошибке на heroku, и я думаю, что я получаю его из-за Procfile.
В данный момент я использую Worker, но пытаюсь понять, как получить доступ к heroku и к тому, и к другому index.js и ping.js. Если только я не читаю сообщение об ошибке совершенно неправильно, и это может быть другой проблемой. Любая помощь будет признательна!
ИЗМЕНИТЬ: Вот мой код для index.js
const Discord = require('discord.js'); const music = require('@koenie06/discord.js-music'); const fs = require('fs'); const { dir } = require('console'); const bot = new Discord.Client({ shards: "auto", intents: [ Discord.Intents.FLAGS.GUILDS, Discord.Intents.FLAGS.GUILD_MESSAGES, Discord.Intents.FLAGS.GUILD_MESSAGE_REACTIONS, Discord.Intents.FLAGS.DIRECT_MESSAGES, Discord.Intents.FLAGS.GUILD_VOICE_STATES ] }); bot.commands = new Discord.Collection(); bot.aliases = new Discord.Collection(); //Command handler and aliases fs.readdirSync('./commands/').forEach(dir =gt; { //in the commands folder, we gonna check for the category fs.readdir(`./commands/${dir}`, (err, files) =gt; { //console log error(catch error) if(err)throw err; //checking if the files ends with .js if its a javascript file var jsFiles = files.filter(f =gt; f.split('.').pop() === 'js'); //if there is no commands in the file it will return if(jsFiles.length lt;= 0) { console.log("Can't find any commands"); return; } jsFiles.forEach(file =gt; { //console the loaded commands var fileGet = require(`./commands/${dir}/${file}`); console.log(`[COMMAND HANDLER] - File ${file} was loaded`); //gonna let the commands run try { bot.commands.set(fileGet.help.name, fileGet); // it search in the commands folder if there is any aliases fileGet.help.aliases.forEach(alias =gt; { bot.aliases.set(alias, fileGet.help.name); }) } catch(err) { //catch error in console return console.log(err); } }) }) }) /** * ECHO STUFF */ //slash command to echo bot.on('ready', async () =gt; { bot.user.setPresence({ activities: [{ name: "Tedi", type: "WATCHING"}] }); console.log("bye"); const data = { name: 'echo', description: 'Echo your text', options: [{ name: 'text', type: 'STRING', description: 'The user input', required: true, }], }; const command = await bot.guilds.cache.get('872986148681703444')?.commands.create(data); }) bot.on('messageCreate', async message =gt; { if(message.author.bot || message.channel.type == 'DM') return let prefix = '~' let messageArray = message.content.split(' '); let cmd = messsageArray[0]; let args = messageArray.slice(1); //it will make the cmd work with his original name and his aliases let commands = bot.commands.get(cmd.slice(prefix.length)) || bot.commands.get(bot.aliases.get(cmd.slice(prefix.length))); if(commands) { if(!message.content.startsWith(prefix)) return commands.run(bot, message, args, prefix); } }) //interactionCreate for echo slash command bot.on('interactionCreate', async interaction =gt; { /** * isButton() used to check if its a button * isCommand() used to check if its a slash command * isSelectMenu() used to check if its a dropdown menu * isMessageComponent() */ if(interaction.isCommand()) { if(interaction.commandName === 'echo') { const text = interaction.options.getString('text'); await interaction.reply({ content: text, ephemeral: false}); //if ephemeral if true, it would make the slash command private } } }) bot.login(process.env.token);
Вот мой ping.js
const Discord = require("discord.js"); module.exports.run = async (Client, message, args, prefix) =gt; { message.channel.send("pong") } module.exports.help = { name: "ping", aliases: ["p"] }
Комментарии:
1. Скорее всего, это не проблема heroku, но это поможет нам решить вашу проблему, если вы опубликуете код затронутого файла.
Ответ №1:
Эта ошибка не из-за Heroku, это в основном потому, что в вашем обработчике команд есть файл, у которого при обработке нет имени, как, например, в этом коде здесь:
const Discord = require("discord.js"); module.exports.run = async (Client, message, args, prefix) =gt; { message.channel.send("pong") } module.exports.help = { // here the name isn't included aliases: ["p"] } // so just check if you have a file without a name while handling it and put a name, and if you don't want aliases make it `aliases: []`
Этот обработчик команд должен быть похож на эту
папку команд команды gt; Подпапка, например, Модерация gt;gt; kick.jsgt;gt;
Вот как это работает, также спасибо, что посмотрели мои видео, я ультрах 🙂