Search in sources :

Example 16 with GuildWrapper

use of stream.flarebot.flarebot.objects.GuildWrapper in project FlareBot by FlareBot.

the class FutureAction method execute.

public void execute() {
    GuildWrapper gw = FlareBotManager.instance().getGuild(String.valueOf(guildId));
    if (gw == null || gw.getGuild() == null)
        return;
    switch(action) {
        case TEMP_MUTE:
            if (gw.getGuild().getTextChannelById(channelId) != null) {
                ModlogHandler.getInstance().handleAction(gw, gw.getGuild().getTextChannelById(channelId), null, GuildUtils.getUser(String.valueOf(target), String.valueOf(guildId), true), ModAction.UNMUTE, "Temporary mute expired, was muted for " + FormatUtils.formatJodaTime(delay));
            } else
                gw.getModeration().unmuteUser(gw, gw.getGuild().getMemberById(target));
            break;
        case TEMP_BAN:
            if (gw.getGuild().getTextChannelById(channelId) != null) {
                ModlogHandler.getInstance().handleAction(gw, gw.getGuild().getTextChannelById(channelId), null, GuildUtils.getUser(String.valueOf(target), String.valueOf(guildId), true), ModAction.UNBAN, "Temporary ban expired, was banned for " + FormatUtils.formatJodaTime(delay));
            } else
                gw.getGuild().getController().unban(String.valueOf(target)).queue();
            break;
        case REMINDER:
            if (Getters.getChannelById(channelId) != null)
                Getters.getChannelById(channelId).sendMessage(Getters.getUserById(responsible).getAsMention() + " You asked me to remind you " + FormatUtils.formatJodaTime(delay).toLowerCase() + " ago about: `" + content.replaceAll("`", "'") + "`").queue();
            break;
        case DM_REMINDER:
            MessageUtils.sendPM(Getters.getChannelById(channelId), Getters.getUserById(responsible), Getters.getUserById(responsible).getAsMention() + " You asked me to remind you " + FormatUtils.formatJodaTime(delay).toLowerCase() + " ago about: `" + content.replaceAll("`", "'") + "`");
            break;
        default:
            break;
    }
    delete();
}
Also used : GuildWrapper(stream.flarebot.flarebot.objects.GuildWrapper)

Example 17 with GuildWrapper

use of stream.flarebot.flarebot.objects.GuildWrapper in project FlareBot by FlareBot.

the class MigrationHandler method migrateSinglePermissionForGuild.

public int migrateSinglePermissionForGuild(String oldPermission, String newPermission, Guild guild) {
    int i = 0;
    GuildWrapper wrapper = null;
    try {
        wrapper = FlareBotManager.instance().getGuildNoCache(guild.getId());
        Pattern oldPerm = // Make sure it is exact permission
        Pattern.compile("\\b" + oldPermission.replaceAll("\\.", "\\.") + "\\b");
        for (Group g : wrapper.getPermissions().getGroups()) {
            for (final Iterator<String> it = g.getPermissions().iterator(); it.hasNext(); ) {
                String perm = it.next();
                if (oldPerm.matcher(perm).find()) {
                    it.remove();
                    g.getPermissions().add(perm.replace(oldPermission, newPermission));
                    i++;
                }
            }
        }
    } catch (Exception e) {
        FlareBot.LOGGER.error("Migration failed", e);
    }
    FlareBotManager.instance().saveGuild(guild.getId(), wrapper, System.currentTimeMillis());
    return i;
}
Also used : GuildWrapper(stream.flarebot.flarebot.objects.GuildWrapper) Pattern(java.util.regex.Pattern) Group(stream.flarebot.flarebot.permissions.Group)

Example 18 with GuildWrapper

use of stream.flarebot.flarebot.objects.GuildWrapper in project FlareBot by FlareBot.

the class ModlogEvents method onEvent.

@Override
public void onEvent(Event event) {
    if (!(event instanceof GenericGuildEvent) && !(event instanceof GenericRoleEvent) && !(event instanceof GenericTextChannelEvent) && !(event instanceof GenericVoiceChannelEvent) && !(event instanceof GenericMessageEvent))
        return;
    Guild g = null;
    if (event instanceof GenericGuildEvent && ((GenericGuildEvent) event).getGuild() != null)
        g = ((GenericGuildEvent) event).getGuild();
    else if (event instanceof GenericRoleEvent && ((GenericRoleEvent) event).getGuild() != null)
        g = ((GenericRoleEvent) event).getGuild();
    else if (event instanceof GenericTextChannelEvent && ((GenericTextChannelEvent) event).getGuild() != null)
        g = ((GenericTextChannelEvent) event).getGuild();
    else if (event instanceof GenericVoiceChannelEvent && ((GenericVoiceChannelEvent) event).getGuild() != null)
        g = ((GenericVoiceChannelEvent) event).getGuild();
    else if (event instanceof GenericMessageEvent && ((GenericMessageEvent) event).getGuild() != null)
        g = ((GenericMessageEvent) event).getGuild();
    if (g == null)
        return;
    GuildWrapper guildWrapper = FlareBotManager.instance().getGuild(g.getId());
    if (guildWrapper == null)
        return;
    // GUILD
    if (event instanceof GuildBanEvent)
        onGuildBan((GuildBanEvent) event, guildWrapper);
    else if (event instanceof GuildMemberJoinEvent)
        onGuildMemberJoin((GuildMemberJoinEvent) event, guildWrapper);
    else if (event instanceof GuildMemberLeaveEvent)
        onGuildMemberLeave((GuildMemberLeaveEvent) event, guildWrapper);
    else if (event instanceof GuildVoiceJoinEvent)
        onGuildVoiceJoin((GuildVoiceJoinEvent) event, guildWrapper);
    else if (event instanceof GuildVoiceLeaveEvent)
        onGuildVoiceLeave((GuildVoiceLeaveEvent) event, guildWrapper);
    else // ROLES
    if (event instanceof RoleCreateEvent)
        onRoleCreate((RoleCreateEvent) event, guildWrapper);
    else if (event instanceof RoleDeleteEvent)
        onRoleDelete((RoleDeleteEvent) event, guildWrapper);
    else if (event instanceof GenericRoleUpdateEvent)
        onGenericRoleUpdate((GenericRoleUpdateEvent) event, guildWrapper);
    else if (event instanceof GuildMemberRoleAddEvent)
        onGuildMemberRoleAdd((GuildMemberRoleAddEvent) event, guildWrapper);
    else if (event instanceof GuildMemberRoleRemoveEvent)
        onGuildMemberRoleRemove((GuildMemberRoleRemoveEvent) event, guildWrapper);
    else // CHANNEL
    if (event instanceof TextChannelCreateEvent)
        onTextChannelCreate((TextChannelCreateEvent) event, guildWrapper);
    else if (event instanceof VoiceChannelCreateEvent)
        onVoiceChannelCreate((VoiceChannelCreateEvent) event, guildWrapper);
    else if (event instanceof TextChannelDeleteEvent)
        onTextChannelDelete((TextChannelDeleteEvent) event, guildWrapper);
    else if (event instanceof VoiceChannelDeleteEvent)
        onVoiceChannelDelete((VoiceChannelDeleteEvent) event, guildWrapper);
    else /*else if (event instanceof GuildMessageReceivedEvent)
            onGuildMessageReceived((GuildMessageReceivedEvent) event, guildWrapper);*/
    if (event instanceof MessageUpdateEvent)
        onMessageUpdate((MessageUpdateEvent) event, guildWrapper);
    else if (event instanceof MessageDeleteEvent)
        onMessageDelete((MessageDeleteEvent) event, guildWrapper);
    else // GUILD
    if (event instanceof GuildUpdateExplicitContentLevelEvent)
        onGuildUpdateExplicitContentLevel((GuildUpdateExplicitContentLevelEvent) event, guildWrapper);
    else if (event instanceof GuildMemberNickChangeEvent)
        onGuildMemberNickChange((GuildMemberNickChangeEvent) event, guildWrapper);
    else if (event instanceof GenericGuildUpdateEvent)
        onGenericGuildUpdate((GenericGuildUpdateEvent) event, guildWrapper);
    else if (event instanceof GuildVoiceMoveEvent)
        onGuildVoiceMove((GuildVoiceMoveEvent) event, guildWrapper);
}
Also used : GuildVoiceLeaveEvent(net.dv8tion.jda.core.events.guild.voice.GuildVoiceLeaveEvent) VoiceChannelCreateEvent(net.dv8tion.jda.core.events.channel.voice.VoiceChannelCreateEvent) GenericVoiceChannelEvent(net.dv8tion.jda.core.events.channel.voice.GenericVoiceChannelEvent) MessageUpdateEvent(net.dv8tion.jda.core.events.message.MessageUpdateEvent) Guild(net.dv8tion.jda.core.entities.Guild) GenericMessageEvent(net.dv8tion.jda.core.events.message.GenericMessageEvent) TextChannelDeleteEvent(net.dv8tion.jda.core.events.channel.text.TextChannelDeleteEvent) GuildVoiceMoveEvent(net.dv8tion.jda.core.events.guild.voice.GuildVoiceMoveEvent) GuildWrapper(stream.flarebot.flarebot.objects.GuildWrapper) GenericRoleEvent(net.dv8tion.jda.core.events.role.GenericRoleEvent) RoleDeleteEvent(net.dv8tion.jda.core.events.role.RoleDeleteEvent) GenericGuildEvent(net.dv8tion.jda.core.events.guild.GenericGuildEvent) GenericRoleUpdateEvent(net.dv8tion.jda.core.events.role.update.GenericRoleUpdateEvent) GenericGuildUpdateEvent(net.dv8tion.jda.core.events.guild.update.GenericGuildUpdateEvent) TextChannelCreateEvent(net.dv8tion.jda.core.events.channel.text.TextChannelCreateEvent) GuildUpdateExplicitContentLevelEvent(net.dv8tion.jda.core.events.guild.update.GuildUpdateExplicitContentLevelEvent) VoiceChannelDeleteEvent(net.dv8tion.jda.core.events.channel.voice.VoiceChannelDeleteEvent) RoleCreateEvent(net.dv8tion.jda.core.events.role.RoleCreateEvent) GuildBanEvent(net.dv8tion.jda.core.events.guild.GuildBanEvent) GuildVoiceJoinEvent(net.dv8tion.jda.core.events.guild.voice.GuildVoiceJoinEvent) GenericTextChannelEvent(net.dv8tion.jda.core.events.channel.text.GenericTextChannelEvent) MessageDeleteEvent(net.dv8tion.jda.core.events.message.MessageDeleteEvent)

Example 19 with GuildWrapper

use of stream.flarebot.flarebot.objects.GuildWrapper in project FlareBot by FlareBot.

the class SkipCommand method onCommand.

@Override
public void onCommand(User sender, GuildWrapper guild, TextChannel channel, Message message, String[] args, Member member) {
    boolean songMessage = message.getAuthor().getIdLong() == Getters.getSelfUser().getIdLong();
    PlayerManager musicManager = FlareBot.instance().getMusicManager();
    if (!channel.getGuild().getAudioManager().isConnected() || musicManager.getPlayer(channel.getGuild().getId()).getPlayingTrack() == null) {
        channel.sendMessage("I am not playing anything!").queue();
        return;
    }
    if (member.getVoiceState().inVoiceChannel() && !channel.getGuild().getSelfMember().getVoiceState().getChannel().getId().equals(member.getVoiceState().getChannel().getId()) && !getPermissions(channel).hasPermission(member, Permission.SKIP_FORCE)) {
        channel.sendMessage("You must be in the channel in order to skip songs!").queue();
        return;
    }
    Track currentTrack = musicManager.getPlayer(guild.getGuildId()).getPlayingTrack();
    if (args.length == 0 && currentTrack.getMeta().get("requester").equals(sender.getId())) {
        channel.sendMessage("Skipped your own song!").queue();
        musicManager.getPlayer(guild.getGuildId()).skip();
        if (songMessage)
            SongCommand.updateSongMessage(sender, message, channel);
        return;
    }
    if (args.length != 1) {
        if (!channel.getGuild().getMember(sender).getVoiceState().inVoiceChannel() || channel.getGuild().getMember(sender).getVoiceState().getChannel().getIdLong() != channel.getGuild().getSelfMember().getVoiceState().getChannel().getIdLong()) {
            MessageUtils.sendErrorMessage("You cannot skip if you aren't listening to it!", channel);
            return;
        }
        if (VoteUtil.contains(skipUUID, guild.getGuild()))
            MessageUtils.sendWarningMessage("There is already a vote to skip current song! Vote with `{%}skip yes | no`", channel, sender);
        else {
            VoteGroup group = new VoteGroup("Skip current song", skipUUID);
            List<User> users = new ArrayList<>();
            for (Member inChannelMember : channel.getGuild().getSelfMember().getVoiceState().getChannel().getMembers()) {
                if (channel.getGuild().getSelfMember().getUser().getIdLong() != inChannelMember.getUser().getIdLong()) {
                    users.add(inChannelMember.getUser());
                }
            }
            group.limitUsers(users);
            VoteUtil.sendVoteMessage(skipUUID, (vote) -> {
                if (vote.equals(VoteGroup.Vote.NONE) || vote.equals(VoteGroup.Vote.NO)) {
                    MessageUtils.sendMessage("Results are in: Keep!", channel);
                } else {
                    MessageUtils.sendMessage("Skipping!", channel);
                    if (songMessage)
                        SongCommand.updateSongMessage(sender, message, channel);
                    musicManager.getPlayer(guild.getGuildId()).skip();
                }
            }, group, TimeUnit.MINUTES.toMillis(1), channel, sender, ButtonGroupConstants.VOTE_SKIP, new ButtonGroup.Button("\u23ED", (owner, user, message1) -> {
                if (getPermissions(channel).hasPermission(channel.getGuild().getMember(user), Permission.SKIP_FORCE)) {
                    musicManager.getPlayer(channel.getGuild().getId()).skip();
                    if (songMessage) {
                        SongCommand.updateSongMessage(user, message1, channel);
                    }
                    musicManager.getPlayer(guild.getGuildId()).skip();
                    VoteUtil.remove(skipUUID, guild.getGuild());
                } else {
                    channel.sendMessage("You are missing the permission `" + Permission.SKIP_FORCE + "` which is required for use of this button!").queue();
                }
            }));
        }
    } else {
        if (args[0].equalsIgnoreCase("force")) {
            if (getPermissions(channel).hasPermission(member, Permission.SKIP_FORCE)) {
                if (songMessage)
                    SongCommand.updateSongMessage(sender, message, channel);
                VoteUtil.remove(skipUUID, guild.getGuild());
                musicManager.getPlayer(guild.getGuildId()).skip();
            } else {
                channel.sendMessage("You are missing the permission `" + Permission.SKIP_FORCE + "` which is required for use of this command!").queue();
            }
            return;
        } else if (args[0].equalsIgnoreCase("cancel")) {
            if (getPermissions(channel).hasPermission(member, Permission.SKIP_CANCEL)) {
                VoteUtil.remove(skipUUID, channel.getGuild());
            } else
                channel.sendMessage("You are missing the permission `" + Permission.SKIP_CANCEL + "` which is required for use of this command!").queue();
            return;
        }
        if (!channel.getGuild().getMember(sender).getVoiceState().inVoiceChannel() || channel.getGuild().getMember(sender).getVoiceState().getChannel().getIdLong() != channel.getGuild().getSelfMember().getVoiceState().getChannel().getIdLong()) {
            MessageUtils.sendWarningMessage("You cannot vote to skip if you aren't listening to it!", channel);
            return;
        }
        VoteGroup.Vote vote = VoteGroup.Vote.parseVote(args[0]);
        if (vote != null) {
            if (!VoteUtil.contains(skipUUID, guild.getGuild()))
                MessageUtils.sendWarningMessage("Their is no vote currently running!", channel, sender);
            else
                VoteUtil.getVoteGroup(skipUUID, guild.getGuild()).addVote(vote, sender);
        } else
            MessageUtils.sendUsage(this, channel, sender, args);
    }
}
Also used : stream.flarebot.flarebot.commands(stream.flarebot.flarebot.commands) ButtonGroup(stream.flarebot.flarebot.util.objects.ButtonGroup) Track(com.arsenarsen.lavaplayerbridge.player.Track) Member(net.dv8tion.jda.core.entities.Member) TextChannel(net.dv8tion.jda.core.entities.TextChannel) FlareBot(stream.flarebot.flarebot.FlareBot) PlayerManager(com.arsenarsen.lavaplayerbridge.PlayerManager) UUID(java.util.UUID) GuildWrapper(stream.flarebot.flarebot.objects.GuildWrapper) Message(net.dv8tion.jda.core.entities.Message) Getters(stream.flarebot.flarebot.Getters) ButtonGroupConstants(stream.flarebot.flarebot.util.buttons.ButtonGroupConstants) VoteGroup(stream.flarebot.flarebot.util.votes.VoteGroup) VoteUtil(stream.flarebot.flarebot.util.votes.VoteUtil) ArrayList(java.util.ArrayList) TimeUnit(java.util.concurrent.TimeUnit) List(java.util.List) Permission(stream.flarebot.flarebot.permissions.Permission) User(net.dv8tion.jda.core.entities.User) MessageUtils(stream.flarebot.flarebot.util.MessageUtils) User(net.dv8tion.jda.core.entities.User) PlayerManager(com.arsenarsen.lavaplayerbridge.PlayerManager) ButtonGroup(stream.flarebot.flarebot.util.objects.ButtonGroup) ArrayList(java.util.ArrayList) Member(net.dv8tion.jda.core.entities.Member) Track(com.arsenarsen.lavaplayerbridge.player.Track) VoteGroup(stream.flarebot.flarebot.util.votes.VoteGroup)

Example 20 with GuildWrapper

use of stream.flarebot.flarebot.objects.GuildWrapper in project FlareBot by FlareBot.

the class SongCommand method onCommand.

@Override
public void onCommand(User sender, GuildWrapper guild, TextChannel channel, Message message, String[] args, Member member) {
    PlayerManager manager = FlareBot.instance().getMusicManager();
    if (manager.getPlayer(channel.getGuild().getId()).getPlayingTrack() != null) {
        Track track = manager.getPlayer(channel.getGuild().getId()).getPlayingTrack();
        EmbedBuilder eb = MessageUtils.getEmbed(sender).addField("Current Song", getLink(track), false).setThumbnail("https://img.youtube.com/vi/" + track.getTrack().getIdentifier() + "/hqdefault.jpg");
        if (track.getTrack().getInfo().isStream)
            eb.addField("Amount Played", "Issa livestream ;)", false);
        else
            eb.addField("Amount Played", GeneralUtils.getProgressBar(track), true).addField("Time", String.format("%s / %s", FormatUtils.formatDuration(track.getTrack().getPosition()), FormatUtils.formatDuration(track.getTrack().getDuration())), false);
        ButtonGroup buttonGroup = new ButtonGroup(sender.getIdLong(), ButtonGroupConstants.SONG);
        buttonGroup.addButton(new ButtonGroup.Button("\u23EF", (owner, user, message1) -> {
            if (manager.hasPlayer(guild.getGuildId())) {
                if (manager.getPlayer(guild.getGuild().getId()).getPaused()) {
                    if (getPermissions(channel).hasPermission(guild.getGuild().getMember(user), Permission.RESUME_COMMAND)) {
                        manager.getPlayer(guild.getGuild().getId()).play();
                    }
                } else {
                    if (getPermissions(channel).hasPermission(guild.getGuild().getMember(user), Permission.PAUSE_COMMAND)) {
                        manager.getPlayer(guild.getGuild().getId()).setPaused(true);
                    }
                }
            }
        }));
        buttonGroup.addButton(new ButtonGroup.Button("\u23F9", (owner, user, message1) -> {
            if (manager.hasPlayer(guild.getGuildId()) && getPermissions(channel).hasPermission(guild.getGuild().getMember(user), Permission.STOP_COMMAND)) {
                manager.getPlayer(guild.getGuildId()).stop();
            }
        }));
        buttonGroup.addButton(new ButtonGroup.Button("\u23ED", (owner, user, message1) -> {
            if (getPermissions(channel).hasPermission(guild.getGuild().getMember(user), Permission.SKIP_COMMAND)) {
                Command cmd = FlareBot.getCommandManager().getCommand("skip", user);
                if (cmd != null)
                    cmd.onCommand(user, guild, channel, message1, new String[0], guild.getGuild().getMember(user));
            }
        }));
        buttonGroup.addButton(new ButtonGroup.Button("\uD83D\uDD01", (ownerID, user, message1) -> {
            updateSongMessage(user, message1, message1.getTextChannel());
        }));
        ButtonUtil.sendButtonedMessage(channel, eb.build(), buttonGroup);
    } else {
        channel.sendMessage(MessageUtils.getEmbed(sender).addField("Current song", "**No song playing right now!**", false).build()).queue();
    }
}
Also used : YouTubeExtractor(stream.flarebot.flarebot.music.extractors.YouTubeExtractor) ButtonGroup(stream.flarebot.flarebot.util.objects.ButtonGroup) Track(com.arsenarsen.lavaplayerbridge.player.Track) Member(net.dv8tion.jda.core.entities.Member) TextChannel(net.dv8tion.jda.core.entities.TextChannel) ButtonUtil(stream.flarebot.flarebot.util.buttons.ButtonUtil) FlareBot(stream.flarebot.flarebot.FlareBot) PlayerManager(com.arsenarsen.lavaplayerbridge.PlayerManager) GuildWrapper(stream.flarebot.flarebot.objects.GuildWrapper) GeneralUtils(stream.flarebot.flarebot.util.general.GeneralUtils) Message(net.dv8tion.jda.core.entities.Message) EmbedBuilder(net.dv8tion.jda.core.EmbedBuilder) ButtonGroupConstants(stream.flarebot.flarebot.util.buttons.ButtonGroupConstants) FormatUtils(stream.flarebot.flarebot.util.general.FormatUtils) Permission(stream.flarebot.flarebot.permissions.Permission) User(net.dv8tion.jda.core.entities.User) Command(stream.flarebot.flarebot.commands.Command) MessageUtils(stream.flarebot.flarebot.util.MessageUtils) CommandType(stream.flarebot.flarebot.commands.CommandType) EmbedBuilder(net.dv8tion.jda.core.EmbedBuilder) PlayerManager(com.arsenarsen.lavaplayerbridge.PlayerManager) ButtonGroup(stream.flarebot.flarebot.util.objects.ButtonGroup) Command(stream.flarebot.flarebot.commands.Command) Track(com.arsenarsen.lavaplayerbridge.player.Track)

Aggregations

GuildWrapper (stream.flarebot.flarebot.objects.GuildWrapper)23 MessageUtils (stream.flarebot.flarebot.util.MessageUtils)11 TextChannel (net.dv8tion.jda.core.entities.TextChannel)10 CommandType (stream.flarebot.flarebot.commands.CommandType)10 Permission (stream.flarebot.flarebot.permissions.Permission)9 List (java.util.List)8 EmbedBuilder (net.dv8tion.jda.core.EmbedBuilder)8 Member (net.dv8tion.jda.core.entities.Member)8 Message (net.dv8tion.jda.core.entities.Message)8 User (net.dv8tion.jda.core.entities.User)8 Command (stream.flarebot.flarebot.commands.Command)8 Collectors (java.util.stream.Collectors)7 ArrayList (java.util.ArrayList)6 ButtonGroupConstants (stream.flarebot.flarebot.util.buttons.ButtonGroupConstants)6 Track (com.arsenarsen.lavaplayerbridge.player.Track)5 FlareBot (stream.flarebot.flarebot.FlareBot)5 GeneralUtils (stream.flarebot.flarebot.util.general.GeneralUtils)5 Color (java.awt.Color)4 Pattern (java.util.regex.Pattern)4 net.dv8tion.jda.core.entities (net.dv8tion.jda.core.entities)4