// Path: app/src/main/java/ultimategdbot/Strings.java
// public final class Strings {
// 
//     public static final String GENERAL = "GeneralStrings";
//     public static final String GD = "GDStrings";
// 
//     private Strings() {
//         throw new AssertionError();
//     }
// }
// 
// Path: app/src/main/java/ultimategdbot/service/EmojiService.java
// @RdiService
// public final class EmojiService {
// 
//     private final EmojiManager emojiManager;
// 
//     private EmojiService(EmojiManager emojiManager) {
//         this.emojiManager = emojiManager;
//     }
// 
//     @RdiFactory
//     public static Mono<EmojiService> create(ConfigContainer configContainer, GatewayDiscordClient gateway) {
//         var emojiManager = EmojiManager.create(
//                 configContainer.get(UltimateGDBotConfig.class).emojiGuildIds()
//                         .stream()
//                         .map(Snowflake::of)
//                         .collect(Collectors.toSet()));
//         return emojiManager.loadFromGateway(gateway)
//                 .thenReturn(emojiManager)
//                 .map(EmojiService::new);
//     }
// 
//     public String get(String name) {
//         try {
//             return emojiManager.get(name).asFormat();
//         } catch (NoSuchElementException e) {
//             throw new NoSuchElementException("Emoji '" + name + "' not found. Make sure the emoji is uploaded in a " +
//                     "server that the bot has access to, with the ID of that server listed in `config.json`. After " +
//                     "adding the emoji, restart the bot.");
//         }
//     }
// 
//     public EmojiManager getEmojiManager() {
//         return emojiManager;
//     }
// }


import botrino.api.util.DurationUtils;
import botrino.api.util.MatcherFunction;
import botrino.interaction.InteractionErrorHandler;
import botrino.interaction.InteractionFailedException;
import botrino.interaction.context.InteractionContext;
import botrino.interaction.cooldown.CooldownException;
import botrino.interaction.privilege.PrivilegeException;
import com.github.alex1304.rdi.finder.annotation.RdiFactory;
import com.github.alex1304.rdi.finder.annotation.RdiService;
import discord4j.core.event.domain.interaction.ApplicationCommandInteractionEvent;
import discord4j.core.event.domain.interaction.ChatInputInteractionEvent;
import discord4j.core.event.domain.interaction.ComponentInteractionEvent;
import discord4j.core.object.command.ApplicationCommandInteractionOption;
import discord4j.core.object.command.ApplicationCommandInteractionOptionValue;
import discord4j.core.object.command.ApplicationCommandOption;
import discord4j.core.object.entity.ApplicationInfo;
import discord4j.core.object.entity.User;
import jdash.client.exception.GDClientException;
import reactor.core.publisher.Mono;
import reactor.core.publisher.Sinks;
import reactor.retry.RetryExhaustedException;
import reactor.util.Logger;
import reactor.util.Loggers;
import ultimategdbot.Strings;
import ultimategdbot.exception.*;
import ultimategdbot.service.EmojiService;
import java.util.List;
import java.util.concurrent.TimeoutException;
import static java.util.stream.Collectors.joining;
package ultimategdbot.framework;




@RdiService
public class UGDBErrorHandler implements InteractionErrorHandler {

    private static final Logger LOGGER = Loggers.getLogger(UGDBErrorHandler.class);

    private final EmojiService emoji;
    private final ApplicationInfo applicationInfo;

    @RdiFactory
// Path: app/src/main/java/ultimategdbot/Strings.java
// public final class Strings {
// 
//     public static final String GENERAL = "GeneralStrings";
//     public static final String GD = "GDStrings";
// 
//     private Strings() {
//         throw new AssertionError();
//     }
// }
// 
// Path: app/src/main/java/ultimategdbot/service/EmojiService.java
// @RdiService
// public final class EmojiService {
// 
//     private final EmojiManager emojiManager;
// 
//     private EmojiService(EmojiManager emojiManager) {
//         this.emojiManager = emojiManager;
//     }
// 
//     @RdiFactory
//     public static Mono<EmojiService> create(ConfigContainer configContainer, GatewayDiscordClient gateway) {
//         var emojiManager = EmojiManager.create(
//                 configContainer.get(UltimateGDBotConfig.class).emojiGuildIds()
//                         .stream()
//                         .map(Snowflake::of)
//                         .collect(Collectors.toSet()));
//         return emojiManager.loadFromGateway(gateway)
//                 .thenReturn(emojiManager)
//                 .map(EmojiService::new);
//     }
// 
//     public String get(String name) {
//         try {
//             return emojiManager.get(name).asFormat();
//         } catch (NoSuchElementException e) {
//             throw new NoSuchElementException("Emoji '" + name + "' not found. Make sure the emoji is uploaded in a " +
//                     "server that the bot has access to, with the ID of that server listed in `config.json`. After " +
//                     "adding the emoji, restart the bot.");
//         }
//     }
// 
//     public EmojiManager getEmojiManager() {
//         return emojiManager;
//     }
// }


// Path: app/src/main/java/ultimategdbot/framework/UGDBErrorHandler.java
import botrino.api.util.DurationUtils;
import botrino.api.util.MatcherFunction;
import botrino.interaction.InteractionErrorHandler;
import botrino.interaction.InteractionFailedException;
import botrino.interaction.context.InteractionContext;
import botrino.interaction.cooldown.CooldownException;
import botrino.interaction.privilege.PrivilegeException;
import com.github.alex1304.rdi.finder.annotation.RdiFactory;
import com.github.alex1304.rdi.finder.annotation.RdiService;
import discord4j.core.event.domain.interaction.ApplicationCommandInteractionEvent;
import discord4j.core.event.domain.interaction.ChatInputInteractionEvent;
import discord4j.core.event.domain.interaction.ComponentInteractionEvent;
import discord4j.core.object.command.ApplicationCommandInteractionOption;
import discord4j.core.object.command.ApplicationCommandInteractionOptionValue;
import discord4j.core.object.command.ApplicationCommandOption;
import discord4j.core.object.entity.ApplicationInfo;
import discord4j.core.object.entity.User;
import jdash.client.exception.GDClientException;
import reactor.core.publisher.Mono;
import reactor.core.publisher.Sinks;
import reactor.retry.RetryExhaustedException;
import reactor.util.Logger;
import reactor.util.Loggers;
import ultimategdbot.Strings;
import ultimategdbot.exception.*;
import ultimategdbot.service.EmojiService;
import java.util.List;
import java.util.concurrent.TimeoutException;
import static java.util.stream.Collectors.joining;

package ultimategdbot.framework;




@RdiService
public class UGDBErrorHandler implements InteractionErrorHandler {

    private static final Logger LOGGER = Loggers.getLogger(UGDBErrorHandler.class);

    private final EmojiService emoji;
    private final ApplicationInfo applicationInfo;

    @RdiFactory
    public UGDBErrorHandler(EmojiService emoji, ApplicationInfo applicationInfo) {