@@ -71,23 +71,35 @@ final admin = ChatGroup(
7171 ChatCommand (
7272 "perform-nickname-pooping" ,
7373 "Perform pooping of usernames in current guild" ,
74- id ('perform-nickname-pooping' , (ChatContext context, [bool dryRun = true , int batchSize = 100 ]) async {
74+ id ('perform-nickname-pooping' , (ChatContext context, [int batchSize = 100 ]) async {
7575 final poopModule = Injector .appInstance.get <PoopNameModule >();
7676
77- var nickNamesToRemove = < String > [];
77+ final membersToPoop = < Member > [];
7878 for (final disallowedChar in poopCharacters) {
7979 await for (final member in searchMembers (disallowedChar, batchSize, context.guild! )) {
80- final (performed, nick) = await poopModule.poopMember (member, dryRun: dryRun );
81- if (performed && (nick ?? '' ).isNotEmpty ) {
82- nickNamesToRemove .add (nick ! );
80+ final shouldBePooped = await poopModule.poopMember (member, dryRun: true );
81+ if (shouldBePooped ) {
82+ membersToPoop .add (member );
8383 }
8484 }
8585 }
8686
87- final outPutMessageHeader = "Pooping nicknames ${dryRun ? "[DRY RUN]" : "" }" ;
88- final messageBuilder = await createMessageBuilder (nickNamesToRemove, outPutMessageHeader);
87+ final multiSelectResult = await context.getMultiSelection (
88+ membersToPoop,
89+ MessageBuilder (content: 'Performing members pooping...' ),
90+ toSelectMenuOption: (value) =>
91+ SelectMenuOptionBuilder (label: poopModule.getMemberNameForPooping (value)! , value: value.id.toString ()),
92+ );
93+
94+ for (final member in multiSelectResult) {
95+ poopModule.poopMember (member, dryRun: false );
96+ }
8997
90- await context.respond (messageBuilder);
98+ await context.respond (
99+ MessageBuilder (
100+ content: 'Pooped members: `${multiSelectResult .map ((value ) => poopModule .getMemberNameForPooping (value ))}`' ,
101+ ),
102+ );
91103 }),
92104 checks: [GuildCheck .all (), PermissionsCheck (Permissions .manageNicknames)],
93105 ),
0 commit comments