I am making a Discord bot command handler, and I keep getting this error:
(await PG(`${process.cwd()}/Commands/*/*js`)).map(async (file) => {
^
TypeError: [] is not a function
Here is my code:
const { Perms } = require('../Validation/Permissions');
const { Client } = require('discord.js')
const { promisify } = require("util")
const { glob } = require('glob');
const PG = promisify(glob)
const Ascii = require('ascii-table')
/**
* @param {Client} client
*/
module.exports = async (client) => {
const Table = new Ascii('Command Loaded')
CommandsArray = []
(await PG(`${process.cwd()}/Commands/*/*js`)).map(async (file) => {
const command = require(file);
if (!command.name)
return Table.addRow(file.split("/")[7], 'FAILED', 'Missing a name.')
if (!command.description)
return Table.addRow(command.name, 'FAILED', 'Missing the description.')
if (command.permission) {
if (Perms.includes(command.permission))
command.defaultPermission = false;
else
return Table.addRow(command.name,'FAILED','Permission is invalid')
}
client.commands.set(command.name, command);
CommandsArray.push(command);
await Table.addRow(command.name, 'SUCCESSFUL');
})
console.log(Table.toString())
// Permissions check //
client.on('ready', async() => {
const MainGuild = await client.guilds.cache.get('940180806696058910');
MainGuild.commands.set(CommandsArray).then(async (command) => {
const Roles = (commandName) => {
const cmdPerms = CommandsArray.find((c) => c.name === commandName).permission
if (!cmdPerms) return null;
return MainGuild.roles.cache.filter((r) => r.permissions.has(cmdPerms))
}
const fullPermissions = command.reduce((accumulator, r) => {
const roles = Roles(r.name);
if (!roles) return accumulator;
const permissions = roles.reduce((a, r) => {
return [...a,{id: r.id, type: 'ROLE', permission: true}]
}, [])
return [...accumulator, {id: r.id, permissions}]
}, [])
await MainGuild.commands.permissions.set({ fullPermissions });
})
})
}
I’ve done some googling, but I was unable to find anything related to just [], type error usually appears when there is a spelling mistake in your code. I have gone through my code numerous times and have been completely unable to find any mistakes, I just cannot figure this out.
I would really appreciate some help, thank you!