@@ -35,12 +35,6 @@ private async Task Client_Ready()
35
35
Program . AdminChecker . SetAdminChannel ( adminChannels . First ( ) ) ;
36
36
Program . RoleDriver = new RoleDriver ( client , log , replacement ) ;
37
37
38
- if ( Program . Config . DeleteCommandsAtStartup > 0 )
39
- {
40
- log . Log ( "Deleting all application commands..." ) ;
41
- await guild . DeleteApplicationCommandsAsync ( ) ;
42
- }
43
-
44
38
var builders = commands . Select ( c =>
45
39
{
46
40
var msg = $ "Building command '{ c . Name } ' with options: ";
@@ -60,17 +54,34 @@ private async Task Client_Ready()
60
54
61
55
try
62
56
{
63
- log . Log ( "Creating application commands..." ) ;
64
- foreach ( var builder in builders )
57
+ log . Log ( "Building application commands..." ) ;
58
+ var commands = builders . Select ( b => b . Build ( ) ) . ToArray ( ) ;
59
+
60
+ log . Log ( "Submitting application commands..." ) ;
61
+ var response = await guild . BulkOverwriteApplicationCommandAsync ( commands ) ;
62
+
63
+ log . Log ( "Commands in response:" ) ;
64
+ foreach ( var cmd in response )
65
65
{
66
- await guild . CreateApplicationCommandAsync ( builder . Build ( ) ) ;
66
+ log . Log ( $ " { cmd . Name } ( { cmd . Description } ) [ { DescribOptions ( cmd . Options ) } ]" ) ;
67
67
}
68
68
}
69
69
catch ( HttpException exception )
70
70
{
71
71
var json = JsonConvert . SerializeObject ( exception . Errors , Formatting . Indented ) ;
72
72
log . Error ( json ) ;
73
73
}
74
+ log . Log ( "Initialized." ) ;
75
+ }
76
+
77
+ private string DescribOptions ( IReadOnlyCollection < SocketApplicationCommandOption > options )
78
+ {
79
+ return string . Join ( "," , options . Select ( DescribeOption ) . ToArray ( ) ) ;
80
+ }
81
+
82
+ private string DescribeOption ( SocketApplicationCommandOption option )
83
+ {
84
+ return $ "({ option . Name } [{ DescribOptions ( option . Options ) } ])";
74
85
}
75
86
76
87
private async Task SlashCommandHandler ( SocketSlashCommand command )
0 commit comments