2
2
3
3
import java .lang .reflect .Method ;
4
4
import java .util .EnumSet ;
5
+ import java .util .List ;
5
6
import java .util .Map ;
6
7
7
8
import de .nikos410 .discordbot .DiscordBot ;
@@ -187,13 +188,16 @@ public void command_setUsername(final IMessage message, final String newUserName
187
188
188
189
@ CommandSubscriber (command = "modules" , help = "Alle Module anzeigen" )
189
190
public void command_listModules (final IMessage message ) {
191
+ final EmbedBuilder embedBuilder = new EmbedBuilder ();
192
+
190
193
// List loaded modules
191
194
final StringBuilder loadedBuilder = new StringBuilder ();
192
195
for (final String key : bot .getLoadedModules ().keySet ()) {
193
196
loadedBuilder .append (key );
194
197
loadedBuilder .append ('\n' );
195
198
}
196
199
final String loadedModulesString = loadedBuilder .toString ().isEmpty () ? "_keine_" : loadedBuilder .toString ();
200
+ embedBuilder .appendField ("Aktivierte Module" , loadedModulesString , true );
197
201
198
202
// List unloaded modules
199
203
final StringBuilder unloadedBuilder = new StringBuilder ();
@@ -202,28 +206,51 @@ public void command_listModules(final IMessage message) {
202
206
unloadedBuilder .append ('\n' );
203
207
}
204
208
final String unloadedModulesString = unloadedBuilder .toString ().isEmpty () ? "_keine_" : unloadedBuilder .toString ();
205
-
206
- // Build embed
207
- final EmbedBuilder embedBuilder = new EmbedBuilder ();
208
- embedBuilder .appendField ("Aktivierte Module" , loadedModulesString , true );
209
209
embedBuilder .appendField ("Deaktivierte Module" , unloadedModulesString , true );
210
210
211
+ // Add failed modules, if present
212
+ final List <String > failedModules = bot .getFailedModules ();
213
+ if (!failedModules .isEmpty ()) {
214
+ final StringBuilder failedBuilder = new StringBuilder ();
215
+ for (final String module : failedModules ) {
216
+ failedBuilder .append (module );
217
+ failedBuilder .append ('\n' );
218
+ }
219
+ embedBuilder .appendField ("Folgende Module konnten nicht geladen werden:" , failedBuilder .toString (), true );
220
+ }
221
+
211
222
DiscordIO .sendEmbed (message .getChannel (), embedBuilder .build ());
212
223
}
213
224
214
225
@ CommandSubscriber (command = "loadmodule" , help = "Ein Modul aktivieren" , permissionLevel = PermissionLevel .ADMIN )
215
226
public void command_loadModule (final IMessage message , final String moduleName ) {
216
227
final boolean result = bot .activateModule (moduleName );
228
+ final List <String > failedModules = bot .getFailedModules ();
217
229
218
- if (result ) {
219
- // Method returned true, everything went fine
230
+ if (result && failedModules . isEmpty () ) {
231
+ // Method returned true and there are no failed modules , everything went fine
220
232
message .addReaction (ReactionEmoji .of ("✅" )); // :white_check_mark:
233
+ return ;
221
234
}
222
- else {
235
+
236
+ if (!result ) {
223
237
// Method returned false, module doesn't exist or is already activated
224
238
DiscordIO .sendMessage (message .getChannel (),
225
239
String .format ("Fehler! Modul `%s` ist bereits aktiviert oder existiert nicht." , moduleName ));
226
240
}
241
+
242
+ if (!failedModules .isEmpty ()) {
243
+ // At least one module could not be initialized
244
+ final StringBuilder failedBuilder = new StringBuilder ();
245
+ failedBuilder .append ("__There was a problem while reloading modules. Following modules could not be initialized:__\n " );
246
+
247
+ for (String module : failedModules ) {
248
+ failedBuilder .append (module );
249
+ failedBuilder .append ('\n' );
250
+ }
251
+
252
+ DiscordIO .sendMessage (message .getChannel (), failedBuilder .toString ());
253
+ }
227
254
}
228
255
229
256
@ CommandSubscriber (command = "unloadmodule" , help = "Ein Modul deaktivieren" , permissionLevel = PermissionLevel .ADMIN )
@@ -233,16 +260,32 @@ public void command_unloadModule(final IMessage message, final String moduleName
233
260
return ;
234
261
}
235
262
236
- final boolean result = bot .deactivateModule (moduleName );
263
+ final boolean result = bot .activateModule (moduleName );
264
+ final List <String > failedModules = bot .getFailedModules ();
237
265
238
- if (result ) {
239
- // Method returned true, everything went fine
266
+ if (result && failedModules . isEmpty () ) {
267
+ // Method returned true and there are no failed modules , everything went fine
240
268
message .addReaction (ReactionEmoji .of ("✅" )); // :white_check_mark:
269
+ return ;
241
270
}
242
- else {
243
- // Method returned false, module doesn't exist or is already deactivated
271
+
272
+ if (!result ) {
273
+ // Method returned false, module doesn't exist or is already activated
244
274
DiscordIO .sendMessage (message .getChannel (),
245
275
String .format ("Fehler! Modul `%s` ist bereits deaktiviert oder existiert nicht." , moduleName ));
246
276
}
277
+
278
+ if (!failedModules .isEmpty ()) {
279
+ // At least one module could not be initialized
280
+ final StringBuilder failedBuilder = new StringBuilder ();
281
+ failedBuilder .append ("__There was a problem while reloading modules. Following modules could not be initialized:__\n " );
282
+
283
+ for (String module : failedModules ) {
284
+ failedBuilder .append (module );
285
+ failedBuilder .append ('\n' );
286
+ }
287
+
288
+ DiscordIO .sendMessage (message .getChannel (), failedBuilder .toString ());
289
+ }
247
290
}
248
291
}
0 commit comments