Search in sources :

Example 1 with Report

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

the class ReportsCommand method getReportsTable.

private List<List<String>> getReportsTable(List<Report> reports) {
    List<List<String>> table = new ArrayList<>();
    for (Report report : reports) {
        ArrayList<String> row = new ArrayList<>();
        row.add(String.valueOf(report.getId()));
        User user = Getters.retrieveUserById(Long.valueOf(report.getReportedId()));
        row.add(user == null ? "Invalid User!" : MessageUtils.getTag(user));
        row.add(report.getTime().toLocalDateTime().atOffset(ZoneOffset.UTC).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + " GMT/BST");
        row.add(report.getStatus().getMessage());
        table.add(row);
    }
    return table;
}
Also used : Report(stream.flarebot.flarebot.objects.Report) ArrayList(java.util.ArrayList) ArrayList(java.util.ArrayList) List(java.util.List)

Example 2 with Report

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

the class ReportsCommand method onCommand.

@Override
public void onCommand(User sender, GuildWrapper guild, TextChannel channel, Message message, String[] args, Member member) {
    if (args.length == 0) {
        MessageUtils.sendUsage(this, channel, sender, args);
    } else {
        if (args[0].equalsIgnoreCase("list")) {
            if (args.length <= 2) {
                if (getPermissions(channel).hasPermission(member, Permission.REPORTS_LIST)) {
                    if (guild.getReportManager().getReports().isEmpty()) {
                        MessageUtils.sendInfoMessage("No Reports for this guild!", channel, sender);
                        return;
                    }
                    PagedTableBuilder tb = new PagedTableBuilder();
                    ArrayList<String> header = new ArrayList<>();
                    header.add("Id");
                    header.add("Reported");
                    header.add("Time");
                    header.add("Status");
                    tb.setColumns(header);
                    List<Report> reports = guild.getReportManager().getReports();
                    for (Report report : reports) {
                        ArrayList<String> row = new ArrayList<>();
                        row.add(String.valueOf(report.getId()));
                        row.add(MessageUtils.getTag(Getters.getUserById(String.valueOf(report.getReportedId()))));
                        row.add(report.getTime().toLocalDateTime().atOffset(ZoneOffset.UTC).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + " GMT/BST");
                        row.add(report.getStatus().getMessage());
                        tb.addRow(row);
                    }
                    tb.setRowCount(10);
                    int page = 0;
                    if (args.length == 2) {
                        page = GeneralUtils.getInt(args[1], 0);
                    }
                    PaginationUtil.sendPagedMessage(channel, tb.build(), page, sender, ButtonGroupConstants.REPORTS_LIST);
                } else {
                    MessageUtils.sendErrorMessage("You need the permission `" + Permission.REPORTS_LIST + "`", channel);
                }
            } else {
                MessageUtils.sendUsage(this, channel, sender, args);
            }
        } else if (args[0].equalsIgnoreCase("view")) {
            if (args.length == 2) {
                int id;
                try {
                    id = Integer.valueOf(args[1]);
                } catch (Exception e) {
                    MessageUtils.sendErrorMessage("Invalid report number: " + args[1] + ".", channel);
                    return;
                }
                Report report = guild.getReportManager().getReport(id);
                if (report == null) {
                    MessageUtils.sendErrorMessage("That report doesn't exist.", channel);
                    return;
                }
                if (getPermissions(channel).hasPermission(member, Permission.REPORTS_VIEW) || report.getReporterId().equals(sender.getId())) {
                    channel.sendMessage(GeneralUtils.getReportEmbed(sender, report).build()).queue();
                } else {
                    MessageUtils.sendErrorMessage("You need the permission `" + Permission.REPORTS_VIEW + "` to do this! Or you need to be the creator of the report", channel);
                }
            } else {
                MessageUtils.sendUsage(this, channel, sender, args);
            }
        } else if (args[0].equalsIgnoreCase("status")) {
            if (args.length >= 3) {
                if (getPermissions(channel).hasPermission(member, Permission.REPORTS_STATUS)) {
                    int id;
                    try {
                        id = Integer.valueOf(args[1]);
                    } catch (Exception e) {
                        MessageUtils.sendErrorMessage("Invalid report number: " + args[1] + ".", channel);
                        return;
                    }
                    ReportStatus status;
                    try {
                        status = ReportStatus.valueOf(MessageUtils.getMessage(args, 2).toUpperCase().replace(" ", "_"));
                    } catch (IllegalArgumentException e) {
                        EmbedBuilder errorBuilder = new EmbedBuilder();
                        errorBuilder.setDescription("Invalid status: `" + args[2] + "`");
                        errorBuilder.addField("Statuses", "**" + Arrays.stream(ReportStatus.values()).map(ReportStatus::getMessage).collect(Collectors.joining("**\n**")) + "**", false);
                        MessageUtils.sendErrorMessage(errorBuilder, channel);
                        return;
                    }
                    Report report = guild.getReportManager().getReport(id);
                    if (report == null) {
                        MessageUtils.sendErrorMessage("Invalid report ID!", channel);
                        return;
                    }
                    if (report.getStatus() == status) {
                        MessageUtils.sendInfoMessage("Current status is: **" + status.getMessage() + "**", channel, sender);
                    } else {
                        ReportStatus old = report.getStatus();
                        report.setStatus(status);
                        MessageUtils.sendSuccessMessage(String.format("Changed status of Report with ID: **%d** to **%s**", id, status.getMessage()), channel, sender);
                        ModlogHandler.getInstance().postToModlog(guild, ModlogEvent.REPORT_EDITED, null, sender, null, new MessageEmbed.Field("Report ID", String.valueOf(id), true), new MessageEmbed.Field("Old Status", old.getMessage(), true), new MessageEmbed.Field("New Status", report.getStatus().getMessage(), true), new MessageEmbed.Field("Responsible moderator", sender.getAsMention(), true));
                    }
                } else {
                    MessageUtils.sendErrorMessage("You need the permission `" + Permission.REPORTS_STATUS + "` to do this.", channel);
                }
            } else {
                MessageUtils.sendUsage(this, channel, sender, args);
            }
        } else {
            MessageUtils.sendUsage(this, channel, sender, args);
        }
    }
}
Also used : Report(stream.flarebot.flarebot.objects.Report) ArrayList(java.util.ArrayList) PagedTableBuilder(stream.flarebot.flarebot.util.pagination.PagedTableBuilder) EmbedBuilder(net.dv8tion.jda.core.EmbedBuilder) ReportStatus(stream.flarebot.flarebot.objects.ReportStatus)

Example 3 with Report

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

the class ReportCommand method onCommand.

@Override
public void onCommand(User sender, GuildWrapper guild, TextChannel channel, Message message, String[] args, Member member) {
    if (args.length >= 2) {
        User user = GuildUtils.getUser(args[0], channel.getGuild().getId());
        if (user == null) {
            MessageUtils.sendErrorMessage("Invalid user: " + args[0], channel);
            return;
        }
        Report report = new Report((guild.getReportManager().getLastId() + 1), MessageUtils.getMessage(args, 1), sender.getId(), user.getId(), new Timestamp(System.currentTimeMillis()), ReportStatus.OPEN);
        List<Message> messages = channel.getHistory().retrievePast(100).complete().stream().filter(m -> m.getAuthor().equals(user)).collect(Collectors.toList());
        if (messages.size() > 0) {
            messages = messages.subList(0, Math.min(5, messages.size() - 1));
            List<ReportMessage> reportMessages = new ArrayList<>();
            for (Message userMessage : messages) {
                reportMessages.add(new ReportMessage(userMessage.getContentDisplay(), Timestamp.valueOf(userMessage.getCreationTime().atZoneSameInstant(ZoneOffset.UTC).toLocalDateTime())));
            }
            report.setMessages(reportMessages);
        }
        guild.getReportManager().report(report);
        ModlogHandler.getInstance().postToModlog(guild, ModlogEvent.REPORT_SUBMITTED, user, null, MessageUtils.getMessage(args, 1), new MessageEmbed.Field("Reported By", MessageUtils.getTag(sender), true));
        MessageUtils.sendPM(channel, sender, GeneralUtils.getReportEmbed(sender, report).setDescription("Successfully reported the user"));
    } else {
        MessageUtils.sendUsage(this, channel, sender, args);
    }
}
Also used : ReportStatus(stream.flarebot.flarebot.objects.ReportStatus) Report(stream.flarebot.flarebot.objects.Report) net.dv8tion.jda.core.entities(net.dv8tion.jda.core.entities) Timestamp(java.sql.Timestamp) ModlogHandler(stream.flarebot.flarebot.mod.modlog.ModlogHandler) ModlogEvent(stream.flarebot.flarebot.mod.modlog.ModlogEvent) GuildWrapper(stream.flarebot.flarebot.objects.GuildWrapper) GeneralUtils(stream.flarebot.flarebot.util.general.GeneralUtils) Collectors(java.util.stream.Collectors) ArrayList(java.util.ArrayList) ReportMessage(stream.flarebot.flarebot.objects.ReportMessage) List(java.util.List) Permission(stream.flarebot.flarebot.permissions.Permission) Command(stream.flarebot.flarebot.commands.Command) MessageUtils(stream.flarebot.flarebot.util.MessageUtils) ZoneOffset(java.time.ZoneOffset) CommandType(stream.flarebot.flarebot.commands.CommandType) GuildUtils(stream.flarebot.flarebot.util.general.GuildUtils) ReportMessage(stream.flarebot.flarebot.objects.ReportMessage) Report(stream.flarebot.flarebot.objects.Report) ArrayList(java.util.ArrayList) ReportMessage(stream.flarebot.flarebot.objects.ReportMessage) Timestamp(java.sql.Timestamp)

Aggregations

ArrayList (java.util.ArrayList)3 Report (stream.flarebot.flarebot.objects.Report)3 List (java.util.List)2 ReportStatus (stream.flarebot.flarebot.objects.ReportStatus)2 Timestamp (java.sql.Timestamp)1 ZoneOffset (java.time.ZoneOffset)1 Collectors (java.util.stream.Collectors)1 EmbedBuilder (net.dv8tion.jda.core.EmbedBuilder)1 net.dv8tion.jda.core.entities (net.dv8tion.jda.core.entities)1 Command (stream.flarebot.flarebot.commands.Command)1 CommandType (stream.flarebot.flarebot.commands.CommandType)1 ModlogEvent (stream.flarebot.flarebot.mod.modlog.ModlogEvent)1 ModlogHandler (stream.flarebot.flarebot.mod.modlog.ModlogHandler)1 GuildWrapper (stream.flarebot.flarebot.objects.GuildWrapper)1 ReportMessage (stream.flarebot.flarebot.objects.ReportMessage)1 Permission (stream.flarebot.flarebot.permissions.Permission)1 MessageUtils (stream.flarebot.flarebot.util.MessageUtils)1 GeneralUtils (stream.flarebot.flarebot.util.general.GeneralUtils)1 GuildUtils (stream.flarebot.flarebot.util.general.GuildUtils)1 PagedTableBuilder (stream.flarebot.flarebot.util.pagination.PagedTableBuilder)1