Add znc command.

This commit is contained in:
cnaude 2016-02-25 12:28:57 -07:00
parent a2f07566af
commit 02dd637ec6
3 changed files with 117 additions and 7 deletions

View File

@ -100,6 +100,7 @@ public class CommandHandlers implements CommandExecutor {
commands.put("voice", new Voice(plugin)); commands.put("voice", new Voice(plugin));
commands.put("whois", new Whois(plugin)); commands.put("whois", new Whois(plugin));
commands.put("help", new Help(plugin)); commands.put("help", new Help(plugin));
commands.put("znc", new Znc(plugin));
commands.put("test", new Test(plugin)); commands.put("test", new Test(plugin));

View File

@ -0,0 +1,89 @@
/*
* Copyright (C) 2014 cnaude
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.cnaude.purpleirc.Commands;
import com.cnaude.purpleirc.PurpleBot;
import com.cnaude.purpleirc.PurpleIRC;
import java.util.ArrayList;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
/**
*
* @author Chris Naude
*/
public class Znc implements IRCCommandInterface {
private final PurpleIRC plugin;
private final String usage = "([bot]) [command] ([arguments])";
private final String desc = "Send a private message to an IRC user.";
private final String name = "znc";
private final String fullUsage = ChatColor.WHITE + "Usage: " + ChatColor.GOLD + "/irc " + name + " " + usage;
/**
*
* @param plugin the PurpleIRC plugin
*/
public Znc(PurpleIRC plugin) {
this.plugin = plugin;
}
/**
*
* @param sender
* @param args
*/
@Override
public void dispatch(CommandSender sender, String[] args) {
if (args.length >= 2) {
plugin.logDebug("Dispatching msg command...");
int msgIdx = 1;
java.util.List<PurpleBot> myBots = new ArrayList<>();
if (plugin.ircBots.containsKey(args[1])) {
myBots.add(plugin.ircBots.get(args[1]));
msgIdx = 2;
} else {
myBots.addAll(plugin.ircBots.values());
}
for (PurpleBot ircBot : myBots) {
String msg = "";
for (int i = msgIdx; i < args.length; i++) {
msg = msg + " " + args[i];
}
ircBot.znc(sender, msg.substring(1));
}
} else {
sender.sendMessage(fullUsage);
}
}
@Override
public String name() {
return name;
}
@Override
public String desc() {
return desc;
}
@Override
public String usage() {
return usage;
}
}

View File

@ -200,6 +200,7 @@ public final class PurpleBot {
private final List<String> tailerFiles; private final List<String> tailerFiles;
private String tailerRecipient; private String tailerRecipient;
private boolean tailerCtcp; private boolean tailerCtcp;
private CommandSender zncSender;
/** /**
* Map of player names to IRC nicks. * Map of player names to IRC nicks.
*/ */
@ -273,6 +274,7 @@ public final class PurpleBot {
this.ircPrivateMsgMap = new CaseInsensitiveMap<>(); this.ircPrivateMsgMap = new CaseInsensitiveMap<>();
this.tailers = new ArrayList<>(); this.tailers = new ArrayList<>();
this.tailerFiles = new ArrayList<>(); this.tailerFiles = new ArrayList<>();
this.zncSender = plugin.getServer().getConsoleSender();
config = new YamlConfiguration(); config = new YamlConfiguration();
goodBot = loadConfig(); goodBot = loadConfig();
if (goodBot) { if (goodBot) {
@ -669,6 +671,24 @@ public final class PurpleBot {
}); });
} }
public void znc(final CommandSender sender, final String message) {
zncSender = sender;
plugin.getServer().getScheduler().runTaskAsynchronously(plugin, new Runnable() {
@Override
public void run() {
bot.sendRaw().rawLineNow("znc " + message);
}
});
}
public void zncResponse(String message) {
if (zncSender != null) {
zncSender.sendMessage(message);
} else {
plugin.getServer().getConsoleSender().sendMessage(message);
}
}
public void asyncIdentify(final String password) { public void asyncIdentify(final String password) {
if (!this.isConnected()) { if (!this.isConnected()) {
return; return;