Search in sources :

Example 6 with Channel

use of org.pircbotx.Channel in project downlords-faf-client by FAForever.

the class ChatUser method fromIrcUser.

public static ChatUser fromIrcUser(User user, Color color) {
    String username = user.getNick() != null ? user.getNick() : user.getLogin();
    Set<String> moderatorInChannels = new HashSet<>();
    for (Channel channel : user.getChannels()) {
        ImmutableSortedSet<UserLevel> userLevels = user.getUserLevels(channel);
        for (UserLevel userLevel : userLevels) {
            switch(userLevel) {
                case OP:
                case HALFOP:
                case SUPEROP:
                case OWNER:
                    moderatorInChannels.add(channel.getName());
                    break;
                default:
            }
        }
    }
    return new ChatUser(username, moderatorInChannels, color);
}
Also used : UserLevel(org.pircbotx.UserLevel) Channel(org.pircbotx.Channel) HashSet(java.util.HashSet)

Example 7 with Channel

use of org.pircbotx.Channel in project LanteaBot by PC-Logix.

the class TimedBans method initHook.

@Override
protected void initHook() {
    command_timed = new Command("timed", Permissions.MOD) {

        @Override
        public CommandChainStateObject onExecuteSuccess(Command command, String nick, String target, GenericMessageEvent event, String params) {
            Helper.sendMessage(target, trySubCommandsMessage(params), nick);
            return new CommandChainStateObject();
        }
    };
    command_ban = new Command("ban", new CommandArgumentParser(1, new CommandArgument(ArgumentTypes.STRING, "Nick"), new CommandArgument(ArgumentTypes.STRING, "Time"), new CommandArgument(ArgumentTypes.STRING, "Reason"))) {

        @Override
        public CommandChainStateObject onExecuteSuccess(Command command, String nick, String target, GenericMessageEvent event, ArrayList<String> params) throws Exception {
            String subject = this.argumentParser.getArgument("Nick");
            String time = this.argumentParser.getArgument("Time");
            if (time == null)
                time = "1h";
            String reason = this.argumentParser.getArgument("Reason");
            if (reason == null)
                reason = "";
            String result = setTimedEvent("ban", nick, target, subject, time, reason, null);
            if (result != null)
                Helper.sendMessage(target, result, nick);
            return new CommandChainStateObject();
        }
    };
    command_ban.setHelpText("Issue a timed ban.");
    command_quiet = new Command("quiet", new CommandArgumentParser(1, new CommandArgument(ArgumentTypes.STRING, "Nick"), new CommandArgument(ArgumentTypes.STRING, "Time"), new CommandArgument(ArgumentTypes.STRING, "Reason"))) {

        @Override
        public CommandChainStateObject onExecuteSuccess(Command command, String nick, String target, GenericMessageEvent event, ArrayList<String> params) throws Exception {
            String time = this.argumentParser.getArgument("Time");
            if (time == null)
                time = "1h";
            String reason = this.argumentParser.getArgument("Reason");
            if (reason == null)
                reason = "";
            String result = setTimedEvent("quiet", nick, target, this.argumentParser.getArgument("Nick"), time, reason, null);
            if (result != null)
                Helper.sendMessage(target, result, nick);
            return new CommandChainStateObject();
        }
    };
    command_quiet.setHelpText("Issue a timed quiet.");
    command_list = new Command("list") {

        @Override
        public CommandChainStateObject onExecuteSuccess(Command command, String nick, String target, GenericMessageEvent event, String params) throws Exception {
            PreparedStatement getTimedBans = Database.getPreparedStatement("getTimedBansForChannel");
            getTimedBans.setString(1, target);
            ResultSet results = getTimedBans.executeQuery();
            int count = 0;
            while (results.next()) {
                count++;
                // IRCBot.getInstance();
                if (results.getString(7).equals("ban")) {
                    Date date = new Date(results.getLong(4));
                    DateFormat format = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
                    format.setTimeZone(TimeZone.getTimeZone("Etc/UTC"));
                    String formatted = format.format(date);
                    Helper.sendMessage(target, "Timed ban of " + results.getString(2) + " Expires at " + formatted + " UTC. Placed by: " + results.getString(5));
                } else {
                    Date date = new Date(results.getLong(4));
                    DateFormat format = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
                    format.setTimeZone(TimeZone.getTimeZone("Etc/UTC"));
                    String formatted = format.format(date);
                    Helper.sendMessage(target, "Timed quiet of " + results.getString(2) + " Expires at " + formatted + " UTC. Placed by: " + results.getString(5));
                }
            }
            if (count == 0)
                Helper.sendMessage(target, "There are no bans or quiets at the moment. Why not add a few?");
            return new CommandChainStateObject();
        }
    };
    command_list.setHelpText("List timed bans and quiets.");
    command_timed.registerSubCommand(command_ban);
    command_timed.registerSubCommand(command_quiet);
    command_timed.registerSubCommand(command_list);
    command_quiet.registerSubCommand(command_list);
    command_ban.registerSubCommand(command_list);
    command_timed.registerAlias("tquiet", "quiet");
    command_timed.registerAlias("tempquiet", "quiet");
    command_timed.registerAlias("timedquiet", "quiet");
    command_timed.registerAlias("tban", "ban");
    command_timed.registerAlias("tempban", "ban");
    command_timed.registerAlias("timedban", "ban");
    command_timed.registerAlias("tlist", "list");
    IRCBot.registerCommand(command_timed);
    Database.addStatement("CREATE TABLE IF NOT EXISTS TimedBans(channel, username, hostmask, expires, placedby, reason, type)");
    Database.addUpdateQuery(1, "ALTER TABLE TimedBans ADD type");
    Database.addPreparedStatement("addTimedBan", "INSERT INTO TimedBans(channel, username, hostmask, expires, placedby, reason, type) VALUES (?,?,?,?,?,?,?);");
    Database.addPreparedStatement("getTimedBans", "SELECT channel, username, hostmask, expires, placedby, reason, type FROM TimedBans WHERE expires <= ?;");
    Database.addPreparedStatement("getTimedBansForChannel", "SELECT channel, username, hostmask, expires, placedby, reason, type FROM TimedBans WHERE channel <= ?;");
    Database.addPreparedStatement("delTimedBan", "DELETE FROM TimedBans WHERE expires = ? AND username = ? AND channel = ? AND type = ?;");
    ScheduledExecutorService ses = Executors.newSingleThreadScheduledExecutor();
    ses.scheduleAtFixedRate(new Runnable() {

        @Override
        public void run() {
            try {
                IRCBot.getInstance();
                if (IRCBot.bot != null) {
                    long epoch = System.currentTimeMillis();
                    PreparedStatement getTimedBans = Database.getPreparedStatement("getTimedBans");
                    getTimedBans.setLong(1, epoch);
                    ResultSet results = getTimedBans.executeQuery();
                    if (results.next()) {
                        IRCBot.getInstance();
                        for (Channel chan : IRCBot.bot.getUserBot().getChannels()) {
                            if (chan.getName().equals(results.getString(1))) {
                                if (results.getString(7).equals("ban")) {
                                    Helper.sendMessage("chanserv", "unban " + results.getString(1) + " " + results.getString(3));
                                } else {
                                    Helper.sendMessage("chanserv", "unquiet " + results.getString(1) + " " + results.getString(3));
                                }
                                PreparedStatement delTimedBan = Database.getPreparedStatement("delTimedBan");
                                delTimedBan.setLong(1, results.getLong(4));
                                delTimedBan.setString(2, results.getString(2));
                                delTimedBan.setString(3, results.getString(1));
                                delTimedBan.setString(4, results.getString(7));
                                delTimedBan.execute();
                            }
                        }
                    }
                }
                return;
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }, 0, 1, TimeUnit.SECONDS);
}
Also used : ScheduledExecutorService(java.util.concurrent.ScheduledExecutorService) CommandArgument(pcl.lc.irc.entryClasses.CommandArgument) Channel(org.pircbotx.Channel) CommandArgumentParser(pcl.lc.irc.entryClasses.CommandArgumentParser) PreparedStatement(java.sql.PreparedStatement) GenericMessageEvent(org.pircbotx.hooks.types.GenericMessageEvent) Date(java.util.Date) Command(pcl.lc.irc.entryClasses.Command) SimpleDateFormat(java.text.SimpleDateFormat) DateFormat(java.text.DateFormat) ResultSet(java.sql.ResultSet) CommandChainStateObject(pcl.lc.utils.CommandChainStateObject) SimpleDateFormat(java.text.SimpleDateFormat)

Example 8 with Channel

use of org.pircbotx.Channel in project LanteaBot by PC-Logix.

the class Announcements method initHook.

@Override
protected void initHook() {
    initCommands();
    local_command_announce.registerSubCommand(local_command_add);
    local_command_announce.registerSubCommand(local_command_list);
    local_command_announce.registerSubCommand(local_command_remove);
    local_command_announce.registerSubCommand(local_command_reload);
    IRCBot.registerCommand(local_command_announce);
    Database.addStatement("CREATE TABLE IF NOT EXISTS Announcements(channel, schedule, lastran, title, message)");
    Database.addPreparedStatement("addAnnounce", "INSERT INTO Announcements(channel, schedule, message) VALUES (?,?,?);");
    Database.addPreparedStatement("getAnnounce", "SELECT schedule, title, message FROM Announcements WHERE channel = ?;");
    Database.addPreparedStatement("getAllAnnounce", "SELECT schedule, title, message, channel FROM Announcements;");
    Database.addPreparedStatement("delAnnounce", "DELETE FROM Announcements WHERE title = ? AND channel = ?;");
    Database.addUpdateQuery(8, "ALTER TABLE Announcements ADD lastran INTEGER DEFAULT 0 NULL");
    ScheduledExecutorService ses = Executors.newSingleThreadScheduledExecutor();
    ses.scheduleAtFixedRate(new Runnable() {

        @Override
        public void run() {
            try {
                if (IRCBot.bot != null) {
                    long epoch = System.currentTimeMillis();
                    PreparedStatement getAllAnnounce = Database.getPreparedStatement("getAllAnnounce");
                    // getTimedBans.setString(1, epoch);
                    ResultSet results = getAllAnnounce.executeQuery();
                    if (results.next()) {
                        IRCBot.getInstance();
                        for (Channel chan : IRCBot.bot.getUserBot().getChannels()) {
                            if (chan.getName().equals(results.getString(1))) {
                                PreparedStatement getAnnounce = Database.getPreparedStatement("getAnnounce");
                                getAnnounce.setString(1, chan.getName());
                                ResultSet res = getAnnounce.executeQuery();
                            }
                        }
                    }
                }
                return;
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }, 0, 1, TimeUnit.SECONDS);
}
Also used : ScheduledExecutorService(java.util.concurrent.ScheduledExecutorService) Channel(org.pircbotx.Channel) ResultSet(java.sql.ResultSet) PreparedStatement(java.sql.PreparedStatement)

Aggregations

Channel (org.pircbotx.Channel)8 PreparedStatement (java.sql.PreparedStatement)2 ResultSet (java.sql.ResultSet)2 ScheduledExecutorService (java.util.concurrent.ScheduledExecutorService)2 DateFormat (java.text.DateFormat)1 SimpleDateFormat (java.text.SimpleDateFormat)1 Date (java.util.Date)1 HashSet (java.util.HashSet)1 TranslatableText (net.minecraft.text.TranslatableText)1 User (org.pircbotx.User)1 UserLevel (org.pircbotx.UserLevel)1 GenericChannelUserEvent (org.pircbotx.hooks.types.GenericChannelUserEvent)1 GenericMessageEvent (org.pircbotx.hooks.types.GenericMessageEvent)1 Command (pcl.lc.irc.entryClasses.Command)1 CommandArgument (pcl.lc.irc.entryClasses.CommandArgument)1 CommandArgumentParser (pcl.lc.irc.entryClasses.CommandArgumentParser)1 CommandChainStateObject (pcl.lc.utils.CommandChainStateObject)1