sxcybot

OSRS oriented Discord Bot
git clone git://git.wimdupont.com/sxcybot.git
Log | Files | Refs | README | LICENSE

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 }