Search in sources :

Example 6 with Item

use of de.kaktushose.levelbot.shop.data.items.Item in project Levelbot by Kaktushose.

the class AddItemCommand method generateEmbeds.

private void generateEmbeds(String mention) {
    shopOverview = embedCache.getEmbed("shopOverview").injectValue("user", mention).toEmbedBuilder();
    for (ItemCategory itemCategory : ItemCategory.values()) {
        EmbedBuilder specificShop = embedCache.getEmbed("specificShop").toEmbedBuilder();
        List<Item> items = levelService.getItemsByCategoryId(itemCategory.id);
        for (int i = 0; i < items.size(); i++) {
            Item item = items.get(i);
            if (!item.isVisible()) {
                continue;
            }
            specificShop.addField(String.format("%s: %s", EmoteType.getNumber(i + 1).unicode, item.getName()), String.format("Preis: %s :moneybag:\nDauer: %d Tage", item.getPrice(), TimeUnit.MILLISECONDS.toDays(item.getDuration())), false);
        }
        specificShops.put(itemCategory, specificShop);
    }
}
Also used : Item(de.kaktushose.levelbot.shop.data.items.Item) EmbedBuilder(net.dv8tion.jda.api.EmbedBuilder)

Example 7 with Item

use of de.kaktushose.levelbot.shop.data.items.Item in project Levelbot by Kaktushose.

the class RemoveItemCommand method onRemoveItem.

@Command(name = "Item entfernen", usage = "{prefix}remove <member>", desc = "Entfernt ein Item aus dem Besitz eines Benutzers", category = "Moderation")
public void onRemoveItem(CommandEvent event, Member member) {
    List<Item> items = shopService.getItems(member.getIdLong());
    AtomicInteger counter = new AtomicInteger(1);
    List<String> emotes = new ArrayList<>();
    EmbedBuilder builder = embedCache.getEmbed("removeItem").injectValue("user", member.getAsMention()).toEmbedBuilder();
    items.forEach(item -> {
        String emote = EmoteType.getNumber(counter.getAndIncrement()).unicode;
        emotes.add(emote);
        builder.addField(emote + ": " + item.getName(), "", false);
    });
    event.reply(builder, chooseMessage -> {
        emotes.forEach(emote -> chooseMessage.addReaction(emote).queue());
        ReactionWaiter reactionWaiter = new ReactionWaiter(chooseMessage, event.getMember(), emotes);
        reactionWaiter.onEvent(reactionEvent -> {
            Item forRemoval;
            switch(reactionEvent.getEmote()) {
                case NumberEmojis.ONE:
                    forRemoval = items.get(0);
                    break;
                case NumberEmojis.TWO:
                    forRemoval = items.get(1);
                    break;
                case NumberEmojis.THREE:
                    forRemoval = items.get(2);
                    break;
                case NumberEmojis.FOUR:
                    forRemoval = items.get(3);
                    break;
                case NumberEmojis.FIVE:
                    forRemoval = items.get(4);
                    break;
                default:
                    return;
            }
            shopService.removeItem(member.getIdLong(), forRemoval.getItemId());
            reactionWaiter.stopWaiting(false);
            chooseMessage.delete().queue();
            event.reply(embedCache.getEmbed("removeItemSuccess").injectValue("user", member.getAsMention()));
        });
    });
}
Also used : Item(de.kaktushose.levelbot.shop.data.items.Item) EmbedBuilder(net.dv8tion.jda.api.EmbedBuilder) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) ArrayList(java.util.ArrayList) ReactionWaiter(de.kaktushose.discord.reactionwaiter.ReactionWaiter) Command(com.github.kaktushose.jda.commands.annotations.Command)

Example 8 with Item

use of de.kaktushose.levelbot.shop.data.items.Item in project Levelbot by Kaktushose.

the class Levelbot method addItemRole.

public void addItemRole(long userId, int itemId) {
    Item item = levelService.getItem(itemId);
    if (item.getRoleId() == -1) {
        return;
    }
    guild.addRoleToMember(userId, guild.getRoleById(item.getRoleId())).queue();
}
Also used : Item(de.kaktushose.levelbot.shop.data.items.Item)

Example 9 with Item

use of de.kaktushose.levelbot.shop.data.items.Item in project Levelbot by Kaktushose.

the class Levelbot method sendItemExpiredInformation.

public void sendItemExpiredInformation(long userId, int itemId, long buyTime) {
    User user = jda.getUserById(userId);
    Item item = levelService.getItem(itemId);
    EmbedBuilder embed = embedCache.getEmbed("itemExpired").injectValue("item", item.getName()).injectValue("date", new SimpleDateFormat("dd.MM.yyyy HH:mm").format(new Date(buyTime))).toEmbedBuilder();
    user.openPrivateChannel().flatMap(privateChannel -> privateChannel.sendMessageEmbeds(embed.build())).queue(null, new ErrorHandler().handle(ErrorResponse.CANNOT_SEND_TO_USER, exception -> {
        TextChannel channel = getBotChannel();
        channel.sendMessage(user.getAsMention()).and(channel.sendMessageEmbeds(embed.build())).queue();
    }));
}
Also used : LoginException(javax.security.auth.login.LoginException) net.dv8tion.jda.api.entities(net.dv8tion.jda.api.entities) BotUser(de.kaktushose.levelbot.database.model.BotUser) JDA(net.dv8tion.jda.api.JDA) Date(java.util.Date) ReactionListener(de.kaktushose.discord.reactionwaiter.ReactionListener) LoggerFactory(org.slf4j.LoggerFactory) Statistics(de.kaktushose.levelbot.util.Statistics) SimpleDateFormat(java.text.SimpleDateFormat) ErrorResponse(net.dv8tion.jda.api.requests.ErrorResponse) de.kaktushose.levelbot.listener(de.kaktushose.levelbot.listener) GatewayIntent(net.dv8tion.jda.api.requests.GatewayIntent) ShopService(de.kaktushose.levelbot.shop.data.ShopService) Calendar(java.util.Calendar) CollectEvent(de.kaktushose.levelbot.database.model.CollectEvent) JDABuilder(net.dv8tion.jda.api.JDABuilder) Bootstrapper(de.kaktushose.levelbot.Bootstrapper) CacheFlag(net.dv8tion.jda.api.utils.cache.CacheFlag) ErrorHandler(net.dv8tion.jda.api.exceptions.ErrorHandler) OnlineStatus(net.dv8tion.jda.api.OnlineStatus) MemberCachePolicy(net.dv8tion.jda.api.utils.MemberCachePolicy) ShopListener(de.kaktushose.levelbot.shop.ShopListener) Logger(org.slf4j.Logger) JsonErrorMessageFactory(com.github.kaktushose.jda.commands.embeds.error.JsonErrorMessageFactory) EmbedBuilder(net.dv8tion.jda.api.EmbedBuilder) Instant(java.time.Instant) Collectors(java.util.stream.Collectors) de.kaktushose.levelbot.database.services(de.kaktushose.levelbot.database.services) File(java.io.File) TimeUnit(java.util.concurrent.TimeUnit) EmbedDTO(com.github.kaktushose.jda.commands.embeds.EmbedDTO) List(java.util.List) EmbedCache(com.github.kaktushose.jda.commands.embeds.EmbedCache) Rank(de.kaktushose.levelbot.database.model.Rank) JDACommands(com.github.kaktushose.jda.commands.JDACommands) JsonHelpMessageFactory(com.github.kaktushose.jda.commands.embeds.help.JsonHelpMessageFactory) WelcomeEmbedsCommand(de.kaktushose.levelbot.commands.moderation.WelcomeEmbedsCommand) Item(de.kaktushose.levelbot.shop.data.items.Item) ChunkingFilter(net.dv8tion.jda.api.utils.ChunkingFilter) Item(de.kaktushose.levelbot.shop.data.items.Item) ErrorHandler(net.dv8tion.jda.api.exceptions.ErrorHandler) EmbedBuilder(net.dv8tion.jda.api.EmbedBuilder) BotUser(de.kaktushose.levelbot.database.model.BotUser) SimpleDateFormat(java.text.SimpleDateFormat) Date(java.util.Date)

Aggregations

Item (de.kaktushose.levelbot.shop.data.items.Item)9 EmbedBuilder (net.dv8tion.jda.api.EmbedBuilder)5 BotUser (de.kaktushose.levelbot.database.model.BotUser)4 EmbedCache (com.github.kaktushose.jda.commands.embeds.EmbedCache)3 ReactionWaiter (de.kaktushose.discord.reactionwaiter.ReactionWaiter)3 ShopService (de.kaktushose.levelbot.shop.data.ShopService)3 TimeUnit (java.util.concurrent.TimeUnit)3 Command (com.github.kaktushose.jda.commands.annotations.Command)2 EmbedDTO (com.github.kaktushose.jda.commands.embeds.EmbedDTO)2 Levelbot (de.kaktushose.levelbot.bot.Levelbot)2 CollectEvent (de.kaktushose.levelbot.database.model.CollectEvent)2 Rank (de.kaktushose.levelbot.database.model.Rank)2 LevelService (de.kaktushose.levelbot.database.services.LevelService)2 UserService (de.kaktushose.levelbot.database.services.UserService)2 NumberEmojis (de.kaktushose.levelbot.util.NumberEmojis)2 List (java.util.List)2 Consumer (java.util.function.Consumer)2 Member (net.dv8tion.jda.api.entities.Member)2 Message (net.dv8tion.jda.api.entities.Message)2 ErrorHandler (net.dv8tion.jda.api.exceptions.ErrorHandler)2