mirror of
https://github.com/ReVanced/revanced-bots.git
synced 2026-01-18 16:53:57 +00:00
- Migrated to a new command framework which looks better and works better - Fixed commands not being bundled correctly - Added message (prefix) commands with argument validation - Added a new CommandErrorType, for invalid arguments - `/eval` is now a bit safer - Corrected colors for the coinflip embed - `/stop` now works even when the bot is not connected to the API
34 lines
1.3 KiB
TypeScript
34 lines
1.3 KiB
TypeScript
import { readdirSync, writeFileSync } from 'fs'
|
|
import { join, sep as pathSep, relative } from 'path'
|
|
import { sep as posixPathSep } from 'path/posix'
|
|
|
|
export const listAllFilesRecursive = (dir: string): string[] =>
|
|
readdirSync(dir, { recursive: true, withFileTypes: true })
|
|
.filter(x => x.isFile())
|
|
.map(x => join(x.parentPath, x.name).replaceAll(pathSep, posixPathSep))
|
|
|
|
export const generateCommandsIndex = (dirPath: string) =>
|
|
generateIndexes(dirPath, (x, i) => `export { default as C${i} } from './${x}'`)
|
|
|
|
export const generateEventsIndex = (dirPath: string) => generateIndexes(dirPath)
|
|
|
|
const generateIndexes = async (
|
|
dirPath: string,
|
|
customMap?: (path: string, index: number) => string,
|
|
pathFilter?: (path: string) => boolean,
|
|
) => {
|
|
const files = listAllFilesRecursive(dirPath)
|
|
.filter(x => x.endsWith('.ts') && !x.endsWith('index.ts') && (pathFilter ? pathFilter(x) : true))
|
|
.map(x => relative(dirPath, x).replaceAll(pathSep, posixPathSep))
|
|
|
|
writeFileSync(
|
|
join(dirPath, 'index.ts'),
|
|
`// AUTO-GENERATED BY A SCRIPT, DON'T TOUCH\n\n${files
|
|
.map((c, i) => {
|
|
const path = c.split('.').at(-2)!
|
|
return customMap ? customMap(path, i) : `import './${path}'`
|
|
})
|
|
.join('\n')}`,
|
|
)
|
|
}
|