Added /twitter (twitterbot)

This commit is contained in:
Jerom van der Sar 2013-03-19 11:06:31 +01:00
parent 8939b7e728
commit d020293a26
4 changed files with 190 additions and 6 deletions

View File

@ -64,3 +64,8 @@ auto_protect_radius: 25.0
host_sender_names: host_sender_names:
- rcon - rcon
- remotebukkit - remotebukkit
# TwitterBot - Used to allow superadmins to verify themselves using twitter
twitterbot_enabled: false
twitterbot_url: 'http://tftwitter.darthcraft.net/'
twitterbot_secret: ''

View File

@ -1,22 +1,128 @@
package me.StevenLawson.TotalFreedomMod.Commands; package me.StevenLawson.TotalFreedomMod.Commands;
import me.StevenLawson.TotalFreedomMod.TFM_TwitterHandler;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
import org.bukkit.ChatColor;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
public class Command_twitter @CommandPermissions(level = AdminLevel.SUPER, source = SourceType.ONLY_IN_GAME, ignore_permissions = false)
public class Command_twitter extends TFM_Command
{ {
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.ONLY_IN_GAME, ignore_permissions = false) @Override
public class Command_cmdlist extends TFM_Command public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
{ {
@Override if (!TotalFreedomMod.twitterbotEnabled)
public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
{ {
if (args.length < 1) { TFM_Util.playerMsg(sender, "TwitterBot has been disabled in config.", ChatColor.RED);
return true;
}
if (args.length < 1)
{
return false;
}
TFM_TwitterHandler twitterbot = TFM_TwitterHandler.getInstance(plugin);
if ("set".equals(args[0]))
{
if (args.length != 2) {
return false; return false;
} }
if(args[1].startsWith("@"))
{
TFM_Util.playerMsg(sender, "Please do not prefix your twitter username with '@'");
return true;
}
String reply = twitterbot.setTwitter(sender.getName(), args[1]);
if ("ok".equals(reply))
{
TFM_Util.playerMsg(sender, "Your twitter handle has been set to: " + ChatColor.AQUA + "@" + args[1] + ChatColor.GRAY + ".");
}
else if ("disabled".equals(reply))
{
TFM_Util.playerMsg(sender, "TwitterBot has been temporarily disabled,, please wait until it get re-enabled", ChatColor.RED);
}
else if ("failed".equals(reply))
{
TFM_Util.playerMsg(sender, "There was a problem querying the database, please let a developer know.", ChatColor.RED);
}
else if ("false".equals(reply))
{
TFM_Util.playerMsg(sender, "There was a problem with the database, please let a developer know.", ChatColor.RED);
}
else if ("cannotauth".equals(reply))
{
TFM_Util.playerMsg(sender, "The database password is incorrect, please let a developer know.", ChatColor.RED);
}
else
{
TFM_Util.playerMsg(sender, "An unknown error occurred, please contact a developer", ChatColor.RED);
TFM_Util.playerMsg(sender, "Response code: " + reply);
}
return true; return true;
} }
if (args.length != 1)
{
return false;
}
if ("info".equals(args[0]))
{
String reply = twitterbot.getTwitter(sender.getName());
TFM_Util.playerMsg(sender, "-- Twitter Information --", ChatColor.BLUE);
TFM_Util.playerMsg(sender, "Using this feature, you can re-super yourself using twitter.");
TFM_Util.playerMsg(sender, "You can set your twitter handle using " + ChatColor.AQUA + "/twitter set [twittername]");
TFM_Util.playerMsg (sender, "Then, you can verify yourself by tweeting " + ChatColor.AQUA + "@TFUpdates #superme");
if ("notfound".equals(reply)) {
TFM_Util.playerMsg(sender, "You currently have " + ChatColor.RED + "no" + ChatColor.BLUE + " Twitter handle set.", ChatColor.BLUE);
}
else if ("disabled".equals(reply))
{
TFM_Util.playerMsg(sender, "TwitterBot has been temporarily disabled, please wait until re-enabled", ChatColor.RED);
}
else if ("failed".equals(reply))
{
TFM_Util.playerMsg(sender, "There was a problem querying the database, please let a developer know.", ChatColor.RED);
}
else if ("false".equals(reply))
{
TFM_Util.playerMsg(sender, "There was a problem with the database, please let a developer know.", ChatColor.RED);
}
else if ("cannotauth".equals(reply))
{
TFM_Util.playerMsg(sender, "The database password is incorrect, please let a developer know.", ChatColor.RED);
}
else
{
TFM_Util.playerMsg(sender, "Your current twitter handle: " + ChatColor.AQUA + "@" + reply + ChatColor.BLUE + ".", ChatColor.BLUE);
}
return true;
}
if ("enable".equals(args[0]) || "disable".equals(args[0]))
{
if (!sender.getName().equalsIgnoreCase("DarthSalamon"))
{
sender.sendMessage(TotalFreedomMod.MSG_NO_PERMS);
return true;
}
TFM_Util.adminAction(sender.getName(), ("enable".equals(args[0]) ? "Ena" : "Disa") + "bling Twitterbot", true);
String reply = twitterbot.setEnabled(args[0] + "d");
TFM_Util.playerMsg(sender, "Reply: " + reply);
return true;
}
// Command not recognised
return false;
} }
} }

View File

@ -0,0 +1,67 @@
package me.StevenLawson.TotalFreedomMod;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import org.apache.commons.lang.exception.ExceptionUtils;
public class TFM_TwitterHandler {
private TotalFreedomMod plugin;
private TFM_TwitterHandler(TotalFreedomMod plugin)
{
this.plugin = plugin;
}
public String getTwitter(String player)
{
return request("action=gettwitter&player=" + player);
}
public String setTwitter(String player, String twitter)
{
if (twitter.startsWith("@"))
{
twitter = twitter.replaceAll("@", "");
}
return request("action=settwitter&player=" + player + "&twitter=" + twitter);
}
public String delTwitter(String player) {
return request("action=deltwitter&player=" + player);
}
public String isEnabled() {
return request("action=getstatus");
}
public String setEnabled(String status) {
return request("action=setstatus&status=" + status);
}
private String request(String queryString) {
String line = "failed";
try
{
URL getUrl = new URL(TotalFreedomMod.twitterbotUrl + "?auth=" + TotalFreedomMod.twitterbotSecret + "&" + queryString);
URLConnection urlConnection = getUrl.openConnection();
// Read the response
BufferedReader in = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
line = in.readLine();
in.close();
}
catch (Exception ex)
{
TFM_Log.severe(ExceptionUtils.getFullStackTrace(ex));
}
return line;
}
public static TFM_TwitterHandler getInstance(TotalFreedomMod plugin) {
return new TFM_TwitterHandler(plugin);
}
}

View File

@ -221,6 +221,9 @@ public class TotalFreedomMod extends JavaPlugin
public static boolean autoProtectSpawnpoints = true; public static boolean autoProtectSpawnpoints = true;
public static double autoProtectRadius = 25.0D; public static double autoProtectRadius = 25.0D;
public static List<String> host_sender_names = Arrays.asList("rcon", "remotebukkit"); public static List<String> host_sender_names = Arrays.asList("rcon", "remotebukkit");
public static boolean twitterbotEnabled = false;
public static String twitterbotUrl = "http://tftwitter.darthcraft.net/";
public static String twitterbotSecret = "";
public static void loadMainConfig() public static void loadMainConfig()
{ {
@ -262,6 +265,9 @@ public class TotalFreedomMod extends JavaPlugin
autoProtectSpawnpoints = config.getBoolean("auto_protect_spawnpoints", autoProtectSpawnpoints); autoProtectSpawnpoints = config.getBoolean("auto_protect_spawnpoints", autoProtectSpawnpoints);
autoProtectRadius = config.getDouble("auto_protect_radius", autoProtectRadius); autoProtectRadius = config.getDouble("auto_protect_radius", autoProtectRadius);
host_sender_names = config.getStringList("host_sender_names"); host_sender_names = config.getStringList("host_sender_names");
twitterbotEnabled = config.getBoolean("twitterbot_enabled");
twitterbotUrl = config.getString("twitterbot_url");
twitterbotSecret = config.getString("twitterbot_secret");
} }
catch (Exception ex) catch (Exception ex)
{ {