Search in sources :

Example 1 with LevelUser

use of de.c0debase.bot.level.LevelUser in project c0debaseBot by Biospheere.

the class MessageReactionListener method onGenericGuildMessageReaction.

@Override
public void onGenericGuildMessageReaction(GenericGuildMessageReactionEvent event) {
    super.onGenericGuildMessageReaction(event);
    if (event.getUser().isBot()) {
        return;
    }
    event.getChannel().getMessageById(event.getMessageId()).queue(success -> {
        if (event.getReactionEmote().getName().equalsIgnoreCase("wastebasket") && success.getAuthor().isBot()) {
            success.delete().queue();
            return;
        }
        if (!success.getEmbeds().isEmpty() && success.getAuthor().isBot()) {
            final String emote = getReaction(event.getReactionEmote());
            if (emote == null) {
                return;
            }
            MessageEmbed messageEmbed = success.getEmbeds().get(0);
            if (messageEmbed.getFooter() != null && messageEmbed.getFooter().getText().contains("Seite")) {
                CodebaseBot.getInstance().getLeaderboardPagination().updateList(CodebaseBot.getInstance().getLevelManager().getLevelUsersSorted());
                String[] strings = messageEmbed.getFooter().getText().replace("Seite: (", "").replace(")", "").split("/");
                int max = Integer.valueOf(strings[1]);
                int current = Integer.valueOf(strings[0]);
                EmbedBuilder embedBuilder = new EmbedBuilder();
                embedBuilder.setColor(success.getGuild().getSelfMember().getColor());
                embedBuilder.setTitle("Leaderboard: " + event.getGuild().getName());
                if (max != current) {
                    if (emote.equalsIgnoreCase("arrow_right")) {
                        current++;
                    } else if (emote.equalsIgnoreCase("arrow_left") && current > 1) {
                        current--;
                    }
                } else if (emote.equalsIgnoreCase("arrow_left") && current >= 1) {
                    current--;
                }
                embedBuilder.setFooter("Seite: (" + current + "/" + max + ")", success.getGuild().getIconUrl());
                int count = 1;
                for (LevelUser levelUser : CodebaseBot.getInstance().getLeaderboardPagination().getPage(current)) {
                    Member member = success.getGuild().getMemberById(Long.valueOf(levelUser.getId()));
                    if (member != null) {
                        embedBuilder.appendDescription("`" + (current == 1 ? count : +((current - 1) * 10 + count)) + ")` " + member.getEffectiveName() + "#" + member.getUser().getDiscriminator() + " (Lvl." + levelUser.getLevel() + ")\n");
                        count++;
                    }
                }
                success.editMessage(embedBuilder.build()).queue();
            }
        }
    });
}
Also used : EmbedBuilder(net.dv8tion.jda.core.EmbedBuilder) LevelUser(de.c0debase.bot.level.LevelUser)

Example 2 with LevelUser

use of de.c0debase.bot.level.LevelUser in project c0debaseBot by Biospheere.

the class MessageReceiveListener method onMessageReceived.

@Override
public void onMessageReceived(MessageReceivedEvent event) {
    super.onMessageReceived(event);
    if (event.getAuthor().isBot()) {
        return;
    }
    if (event.isFromType(ChannelType.PRIVATE)) {
        EmbedBuilder embedBuilder = new EmbedBuilder();
        embedBuilder.setColor(Color.RED);
        embedBuilder.appendDescription("Private Nachrichten sind deaktiviert");
        event.getPrivateChannel().sendMessage(embedBuilder.build()).queue();
        return;
    }
    if (event.getMessage().getContentRaw().startsWith("!clear")) {
        CodebaseBot.getInstance().getCommandManager().execute(event.getMessage());
        return;
    }
    if (event.getTextChannel().getName().equalsIgnoreCase("projekte")) {
        event.getMessage().addReaction(EmojiManager.getForAlias("thumbsup").getUnicode()).queue();
        event.getMessage().addReaction(EmojiManager.getForAlias("thumbsdown").getUnicode()).queue();
        return;
    }
    if (event.getTextChannel().getName().equalsIgnoreCase("feedback")) {
        EmbedBuilder embedBuilder = new EmbedBuilder();
        embedBuilder.setColor(Color.GREEN);
        embedBuilder.setFooter("@" + event.getAuthor().getName() + "#" + event.getAuthor().getDiscriminator(), event.getAuthor().getEffectiveAvatarUrl());
        embedBuilder.setTitle("Feedback");
        embedBuilder.setDescription(event.getMessage().getContentDisplay());
        event.getMessage().delete().queue();
        event.getTextChannel().sendMessage(embedBuilder.build()).queue(success -> {
            success.addReaction(EmojiManager.getForAlias("thumbsup").getUnicode()).queue();
            success.addReaction(EmojiManager.getForAlias("thumbsdown").getUnicode()).queue();
        });
        return;
    }
    if (event.getMessage().getContentRaw().startsWith(event.getGuild().getSelfMember().getAsMention())) {
        event.getTextChannel().sendMessage("hi").queue();
        return;
    }
    if (event.getMessage().getTextChannel().getName().equalsIgnoreCase("bot") && event.getMessage().getContentRaw().startsWith("!")) {
        CodebaseBot.getInstance().getCommandManager().execute(event.getMessage());
    } else {
        LevelUser levelUser = CodebaseBot.getInstance().getLevelManager().getLevelUser(event.getAuthor().getId());
        float time = (System.currentTimeMillis() - levelUser.getLastMessage()) / 1000;
        if (time >= 50.0f || levelUser.getLastMessage() == 0L) {
            levelUser.setLastMessage(System.currentTimeMillis());
            if (levelUser.addXP(50)) {
                EmbedBuilder levelUpEmbed = new EmbedBuilder();
                levelUpEmbed.appendDescription(event.getAuthor().getAsMention() + " has leveled up to level " + levelUser.getLevel());
                event.getTextChannel().sendMessage(levelUpEmbed.build()).queue();
            }
        }
    }
}
Also used : EmbedBuilder(net.dv8tion.jda.core.EmbedBuilder) LevelUser(de.c0debase.bot.level.LevelUser)

Example 3 with LevelUser

use of de.c0debase.bot.level.LevelUser in project c0debaseBot by Biospheere.

the class LeaderboardCommand method execute.

@Override
public void execute(String[] args, Message msg) {
    EmbedBuilder embedBuilder = new EmbedBuilder();
    embedBuilder.setColor(msg.getGuild().getSelfMember().getColor());
    embedBuilder.setTitle("Leaderboard: " + msg.getGuild().getName());
    CodebaseBot.getInstance().getLeaderboardPagination().updateList(CodebaseBot.getInstance().getLevelManager().getLevelUsersSorted());
    int count = 1;
    for (LevelUser levelUser : CodebaseBot.getInstance().getLeaderboardPagination().getPage(1)) {
        Member member = msg.getGuild().getMemberById(Long.valueOf(levelUser.getId()));
        if (member != null) {
            embedBuilder.appendDescription("`" + count + ")` " + StringUtils.replaceCharacter(member.getEffectiveName()) + "#" + member.getUser().getDiscriminator() + " (Lvl." + levelUser.getLevel() + ")\n");
        }
        count++;
    }
    embedBuilder.setFooter("Seite: (1/" + ((CodebaseBot.getInstance().getLevelManager().getLevelUsersSorted().size() / 10) + 1) + ")", msg.getGuild().getIconUrl());
    msg.getTextChannel().sendMessage(embedBuilder.build()).queue((Message success) -> {
        success.addReaction(EmojiManager.getForAlias("arrow_left").getUnicode()).queue();
        success.addReaction(EmojiManager.getForAlias("arrow_right").getUnicode()).queue();
    });
}
Also used : EmbedBuilder(net.dv8tion.jda.core.EmbedBuilder) Message(net.dv8tion.jda.core.entities.Message) LevelUser(de.c0debase.bot.level.LevelUser) Member(net.dv8tion.jda.core.entities.Member)

Aggregations

LevelUser (de.c0debase.bot.level.LevelUser)3 EmbedBuilder (net.dv8tion.jda.core.EmbedBuilder)3 Member (net.dv8tion.jda.core.entities.Member)1 Message (net.dv8tion.jda.core.entities.Message)1