UpdateBanlistUserListener.java (3109B)
1 package com.wimdupont.sxcybot.listeners.admin.banlist; 2 3 import com.wimdupont.sxcybot.exceptions.EntityNotFoundException; 4 import com.wimdupont.sxcybot.listeners.EventWaiter; 5 import com.wimdupont.sxcybot.listeners.PrivateListener; 6 import com.wimdupont.sxcybot.repository.guild.dao.User; 7 import com.wimdupont.sxcybot.services.guild.UserService; 8 import com.wimdupont.sxcybot.util.JdaUtil; 9 import net.dv8tion.jda.api.EmbedBuilder; 10 import net.dv8tion.jda.api.entities.channel.concrete.PrivateChannel; 11 import net.dv8tion.jda.api.events.message.MessageReceivedEvent; 12 import org.springframework.stereotype.Component; 13 14 import java.awt.Color; 15 16 @Component 17 public class UpdateBanlistUserListener implements PrivateListener { 18 19 private final EventWaiter eventWaiter; 20 private final UserService userService; 21 22 public UpdateBanlistUserListener(EventWaiter eventWaiter, 23 UserService userService) { 24 this.eventWaiter = eventWaiter; 25 this.userService = userService; 26 } 27 28 @Override 29 public void process(MessageReceivedEvent privateMessageReceivedEvent, MessageReceivedEvent event) { 30 PrivateChannel privateChannel = privateMessageReceivedEvent.getChannel().asPrivateChannel(); 31 privateChannel.sendMessage("Name of the user you want to update (\"showlist\" to show all names in banlist).").queue(); 32 eventWaiter.waitForPrivateChannelEvent(nameReceiver -> { 33 if (nameReceiver.getMessage().getContentRaw().equalsIgnoreCase("showlist")) { 34 EmbedBuilder embedBuilder = new EmbedBuilder(); 35 embedBuilder.setColor(Color.red); 36 embedBuilder.setTitle("Banned users:"); 37 userService.findAllBanned().stream().map(User::getName).toList().forEach(f -> 38 embedBuilder.addField(f, "", false)); 39 privateChannel.sendMessageEmbeds(embedBuilder.build()).queue(); 40 this.process(privateMessageReceivedEvent, event); 41 return; 42 } 43 try { 44 User userToUpdate = userService.findByName(nameReceiver.getMessage().getContentRaw()); 45 privateChannel.sendMessage(String.format("Type the new description for the ban of %s.", nameReceiver.getMessage().getContentRaw())).queue(); 46 eventWaiter.waitForPrivateChannelEvent(descriptionReceiver -> { 47 userToUpdate.setDescription(descriptionReceiver.getMessage().getContentRaw()); 48 userToUpdate.setLastModifiedBy(JdaUtil.getName(event).orElse(null)); 49 User saved = userService.save(userToUpdate); 50 privateChannel.sendMessage(saved + " edited.").queue(); 51 event.getChannel().sendMessage(String.format("Banned user %s has been edited by %s.", saved.getName(), JdaUtil.getUser(event))).queue(); 52 }, privateMessageReceivedEvent, privateChannel); 53 } catch (EntityNotFoundException e) { 54 privateChannel.sendMessage(e.getMessage()).queue(); 55 } 56 }, event, privateChannel); 57 } 58 }