@@ -6,63 +6,76 @@ const { Routes } = require("discord-api-types/v9");
6
6
const clientId = process . env . BOT_ID ;
7
7
const guildId = process . env . GUILD_ID ;
8
8
const token = process . env . DISCORD_BOT_TOKEN ;
9
- const { findPrivateCoursesFromDb, findPublicCoursesFromDb, findLockedCoursesFromDb, findUnlockedCoursesFromDb, findCoursesFromDb } = require ( "../../db/services/courseService" ) ;
9
+ const {
10
+ findPrivateCoursesFromDb,
11
+ findPublicCoursesFromDb,
12
+ findLockedCoursesFromDb,
13
+ findUnlockedCoursesFromDb,
14
+ findCoursesFromDb,
15
+ } = require ( "../../db/services/courseService" ) ;
10
16
const { logError } = require ( "./logger" ) ;
11
17
12
18
const parseCourseData = ( courseData ) => {
13
- const choices = courseData
14
- . map ( ( c ) => {
15
- const regExp = / [ ^ 0 - 9 ] * / ;
16
- const fullname = c . fullName . charAt ( 0 ) . toUpperCase ( ) + c . fullName . slice ( 1 ) ;
17
- const matches = regExp . exec ( c . code ) ?. [ 0 ] ;
18
- const code = matches ? matches . toUpperCase ( ) + c . code . slice ( matches . length ) : c . code ;
19
- return (
20
- {
21
- name : `${ code } - ${ fullname } - ${ c . name } ` ,
22
- value : c . name ,
23
- }
24
- ) ;
25
- } ) ;
19
+ const choices = courseData . map ( ( c ) => {
20
+ const regExp = / [ ^ 0 - 9 ] * / ;
21
+ const fullname = c . fullName . charAt ( 0 ) . toUpperCase ( ) + c . fullName . slice ( 1 ) ;
22
+ const matches = regExp . exec ( c . code ) ?. [ 0 ] ;
23
+ const code = matches
24
+ ? matches . toUpperCase ( ) + c . code . slice ( matches . length )
25
+ : c . code ;
26
+ return {
27
+ name : `${ code } - ${ fullname } - ${ c . name } ` ,
28
+ value : c . name ,
29
+ } ;
30
+ } ) ;
26
31
return choices ;
27
32
} ;
28
33
29
34
const addOptions = async ( command , obj , courseData ) => {
30
35
const parsedChoices = parseCourseData ( courseData ) ;
31
- parsedChoices . forEach ( ( ch ) => obj . data . options [ 0 ] . addChoice ( ch . name , ch . value ) ) ;
36
+ parsedChoices . forEach ( ( ch ) => {
37
+ try {
38
+ obj . data . options [ 0 ] . addChoice ( ch . name , ch . value ) ;
39
+ } catch ( e ) { }
40
+ } ) ;
41
+
32
42
const options = obj . data . options ;
33
- await command . edit ( {
34
- options : options ,
35
- } )
43
+ await command
44
+ . edit ( {
45
+ options : options ,
46
+ } )
36
47
. catch ( console . error ) ;
37
48
} ;
38
49
39
50
const updateDynamicChoices = async ( client , commandNames , Course ) => {
40
- const loadedCommands = await client . guilds . cache . get ( guildId ) ?. commands . fetch ( ) ;
41
- const filteredCommands = await loadedCommands . filter ( ( command ) => commandNames . includes ( command . name ) ) ;
51
+ const loadedCommands = await client . guilds . cache
52
+ . get ( guildId )
53
+ ?. commands . fetch ( ) ;
54
+ const filteredCommands = await loadedCommands . filter ( ( command ) =>
55
+ commandNames . includes ( command . name )
56
+ ) ;
42
57
filteredCommands . map ( async ( c ) => {
43
58
const obj = {
44
59
data : new SlashCommandBuilder ( )
45
60
. setName ( c . name )
46
61
. setDescription ( c . description )
47
62
. setDefaultPermission ( ! c . role )
48
- . addStringOption ( option =>
49
- option . setName ( c . options [ 0 ] . name )
63
+ . addStringOption ( ( option ) =>
64
+ option
65
+ . setName ( c . options [ 0 ] . name )
50
66
. setDescription ( c . options [ 0 ] . description )
51
- . setRequired ( true ) ) ,
67
+ . setRequired ( true )
68
+ ) ,
52
69
} ;
53
70
if ( obj . data . name === "join" || obj . data . name === "hide_course" ) {
54
71
await addOptions ( c , obj , await findPublicCoursesFromDb ( "code" , Course ) ) ;
55
- }
56
- else if ( obj . data . name === "leave" ) {
72
+ } else if ( obj . data . name === "leave" ) {
57
73
await addOptions ( c , obj , await findCoursesFromDb ( "code" , Course ) ) ;
58
- }
59
- else if ( obj . data . name === "unhide_course" ) {
74
+ } else if ( obj . data . name === "unhide_course" ) {
60
75
await addOptions ( c , obj , await findPrivateCoursesFromDb ( "code" , Course ) ) ;
61
- }
62
- else if ( obj . data . name === "lock_chat" ) {
76
+ } else if ( obj . data . name === "lock_chat" ) {
63
77
await addOptions ( c , obj , await findUnlockedCoursesFromDb ( "code" , Course ) ) ;
64
- }
65
- else if ( obj . data . name === "unlock_chat" ) {
78
+ } else if ( obj . data . name === "unlock_chat" ) {
66
79
await addOptions ( c , obj , await findLockedCoursesFromDb ( "code" , Course ) ) ;
67
80
}
68
81
} ) ;
@@ -73,13 +86,11 @@ const deployCommands = async (commands) => {
73
86
74
87
( async ( ) => {
75
88
try {
76
- await rest . put (
77
- Routes . applicationGuildCommands ( clientId , guildId ) ,
78
- { body : commands } ,
79
- ) ;
89
+ await rest . put ( Routes . applicationGuildCommands ( clientId , guildId ) , {
90
+ body : commands ,
91
+ } ) ;
80
92
console . log ( "Successfully registered application commands." ) ;
81
- }
82
- catch ( error ) {
93
+ } catch ( error ) {
83
94
logError ( error ) ;
84
95
console . error ( error ) ;
85
96
}
@@ -90,18 +101,20 @@ const loadCommands = (client) => {
90
101
const commands = [ ] ;
91
102
client . commands = new Collection ( ) ;
92
103
const slashCommands = new Collection ( ) ;
93
- const commandFolders = fs . readdirSync ( "./src/discordBot/commands/" , { withFileTypes : true } )
94
- . filter ( dirent => dirent . isDirectory ( ) )
95
- . map ( dirent => dirent . name ) ;
104
+ const commandFolders = fs
105
+ . readdirSync ( "./src/discordBot/commands/" , { withFileTypes : true } )
106
+ . filter ( ( dirent ) => dirent . isDirectory ( ) )
107
+ . map ( ( dirent ) => dirent . name ) ;
96
108
97
109
for ( const folder of commandFolders ) {
98
- const slashCommandFiles = fs . readdirSync ( `./src/discordBot/commands/${ folder } ` ) . filter ( file => file . endsWith ( ".js" ) ) ;
110
+ const slashCommandFiles = fs
111
+ . readdirSync ( `./src/discordBot/commands/${ folder } ` )
112
+ . filter ( ( file ) => file . endsWith ( ".js" ) ) ;
99
113
for ( const file of slashCommandFiles ) {
100
114
const command = require ( `../commands/${ folder } /${ file } ` ) ;
101
115
if ( command . prefix ) {
102
116
client . commands . set ( command . name , command ) ;
103
- }
104
- else {
117
+ } else {
105
118
slashCommands . set ( command . data . name , command ) ;
106
119
commands . push ( command . data . toJSON ( ) ) ;
107
120
}
@@ -115,10 +128,21 @@ const loadCommands = (client) => {
115
128
const setUpCommands = async ( client , Course ) => {
116
129
const commands = loadCommands ( client ) ;
117
130
if ( process . env . NODE_ENV === "production" ) await deployCommands ( commands ) ;
118
- await updateDynamicChoices ( client , [ "join" , "leave" , "hide_course" , "unhide_course" , "lock_chat" , "unlock_chat" ] , Course ) ;
131
+ await updateDynamicChoices (
132
+ client ,
133
+ [
134
+ "join" ,
135
+ "leave" ,
136
+ "hide_course" ,
137
+ "unhide_course" ,
138
+ "lock_chat" ,
139
+ "unlock_chat" ,
140
+ ] ,
141
+ Course
142
+ ) ;
119
143
} ;
120
144
121
145
module . exports = {
122
146
setUpCommands,
123
147
updateDynamicChoices,
124
- } ;
148
+ } ;
0 commit comments