Chat filter API changes from TwoHat/PottyMouth to Inversoft/CleanSpeak.
This commit is contained in:
parent
4d397438be
commit
fb0469adfa
@ -49,9 +49,12 @@ public class Chat extends MiniPlugin
|
|||||||
private CoreClientManager _clientManager;
|
private CoreClientManager _clientManager;
|
||||||
private PreferencesManager _preferences;
|
private PreferencesManager _preferences;
|
||||||
|
|
||||||
private String _filterUrl = "https://mp9wbhy6.pottymouthfilter.com/v1/";
|
//private String _filterUrl = "https://mp9wbhy6.pottymouthfilter.com/v1/";
|
||||||
|
//private String _filterUrl = "https://10.33.53.5:8003/content/item/filter";
|
||||||
|
private String _filterUrl = "https://10.33.53.5:8003/content/item/moderate";
|
||||||
|
private String _appId = "34018d65-466d-4a91-8e92-29ca49f022c4";
|
||||||
private String _apiKey = "oUywMpwZcIzZO5AWnfDx";
|
private String _apiKey = "oUywMpwZcIzZO5AWnfDx";
|
||||||
private String _authName = "";
|
//private String _authName = "";
|
||||||
private String _serverName;
|
private String _serverName;
|
||||||
|
|
||||||
private long _silenced = 0;
|
private long _silenced = 0;
|
||||||
@ -190,21 +193,53 @@ public class Chat extends MiniPlugin
|
|||||||
if (event.isAsynchronous())
|
if (event.isAsynchronous())
|
||||||
{
|
{
|
||||||
final Player player = event.getPlayer();
|
final Player player = event.getPlayer();
|
||||||
final String plyrname = player.toString();
|
//final String plyrname = player.toString();
|
||||||
|
final String plyrname = player.getUniqueId().toString();
|
||||||
final String msg = event.getMessage().replaceAll("[^\\x00-\\x7F]", "").trim();
|
final String msg = event.getMessage().replaceAll("[^\\x00-\\x7F]", "").trim();
|
||||||
final String filtertype = "chat";
|
//final String filtertype = "chat";
|
||||||
|
final String filtertype = "moderate";
|
||||||
final String dname = player.getPlayerListName();
|
final String dname = player.getPlayerListName();
|
||||||
|
|
||||||
|
|
||||||
JSONObject message = buildJsonChatObject(filtertype, dname, plyrname, msg, _serverName, 1);
|
JSONObject message = buildJsonChatObject(filtertype, dname, plyrname, msg, _serverName, 1);
|
||||||
String response = getResponseFromTwoHat(message, filtertype);
|
String response = getResponseFromCleanSpeak(message, filtertype);
|
||||||
|
|
||||||
if (response == null)
|
if (response == null)
|
||||||
{
|
{
|
||||||
System.out.println("[ERROR] Unable to filter chat message...thanks a lot TwoHat.");
|
System.out.println("[ERROR] Unable to filter chat message...thanks a lot CleanSpeak.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* TESTING OUTPUT - POSSIBLY USEFUL
|
||||||
|
System.out.println(message);
|
||||||
|
System.out.println(response);
|
||||||
|
System.out.println(JSONValue.parse(response));
|
||||||
|
//NullPointerException occasionally happening, JSONValue.parse(String) returns null randomly, why?
|
||||||
|
|
||||||
|
for (Object o : ((JSONObject)JSONValue.parse(response)).values())
|
||||||
|
{
|
||||||
|
System.out.println(o.toString());
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
String filteredMsg = "";
|
||||||
|
|
||||||
|
filteredMsg = ((JSONObject) JSONValue.parse(response)).get("content").toString();
|
||||||
|
if (filteredMsg.contains("parts"))
|
||||||
|
{
|
||||||
|
filteredMsg = ((JSONObject) JSONValue.parse(filteredMsg)).get("parts").toString();
|
||||||
|
filteredMsg = filteredMsg.replace('[', ' ').replace(']', ' ').trim();
|
||||||
|
filteredMsg = ((JSONObject) JSONValue.parse(filteredMsg)).get("replacement").toString();
|
||||||
|
|
||||||
|
for (Player onlinePlayer : event.getRecipients())
|
||||||
|
{
|
||||||
|
onlinePlayer.sendMessage(String.format(event.getFormat(), event.getPlayer().getDisplayName(), filteredMsg));
|
||||||
|
}
|
||||||
|
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
int risk = Integer.parseInt(((JSONObject) JSONValue.parse(response)).get("risk").toString());
|
int risk = Integer.parseInt(((JSONObject) JSONValue.parse(response)).get("risk").toString());
|
||||||
|
|
||||||
if (risk >= 5)
|
if (risk >= 5)
|
||||||
@ -232,6 +267,7 @@ public class Chat extends MiniPlugin
|
|||||||
|
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -295,6 +331,7 @@ public class Chat extends MiniPlugin
|
|||||||
switch (filtertype)
|
switch (filtertype)
|
||||||
{
|
{
|
||||||
case "chat":
|
case "chat":
|
||||||
|
/*
|
||||||
message.put("player_display_name", name);
|
message.put("player_display_name", name);
|
||||||
message.put("player", player);
|
message.put("player", player);
|
||||||
message.put("text", msg);
|
message.put("text", msg);
|
||||||
@ -302,6 +339,25 @@ public class Chat extends MiniPlugin
|
|||||||
message.put("room", server);
|
message.put("room", server);
|
||||||
message.put("language", "en");
|
message.put("language", "en");
|
||||||
message.put("rule", rule);
|
message.put("rule", rule);
|
||||||
|
*/
|
||||||
|
message.put("content", msg);
|
||||||
|
break;
|
||||||
|
case "moderate":
|
||||||
|
JSONObject content = new JSONObject();
|
||||||
|
content.put("content", msg);
|
||||||
|
content.put("type", "text");
|
||||||
|
|
||||||
|
JSONArray parts = new JSONArray();
|
||||||
|
parts.add(content);
|
||||||
|
|
||||||
|
JSONObject mainContent = new JSONObject();
|
||||||
|
mainContent.put("applicationId", _appId);
|
||||||
|
mainContent.put("createInstant", System.currentTimeMillis());
|
||||||
|
mainContent.put("parts", parts);
|
||||||
|
mainContent.put("senderDisplayName", name);
|
||||||
|
mainContent.put("senderId", player);
|
||||||
|
|
||||||
|
message.put("content", mainContent);
|
||||||
break;
|
break;
|
||||||
case "username":
|
case "username":
|
||||||
message.put("player_id", name);
|
message.put("player_id", name);
|
||||||
@ -313,12 +369,15 @@ public class Chat extends MiniPlugin
|
|||||||
return message;
|
return message;
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getResponseFromTwoHat(JSONObject message, String filtertype)
|
private String getResponseFromCleanSpeak(JSONObject message, String filtertype)
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
String authString = _authName + ":" + _apiKey;
|
String authString = _authName + ":" + _apiKey;
|
||||||
byte[] authEncBytes = Base64.encodeBase64(authString.getBytes());
|
byte[] authEncBytes = Base64.encodeBase64(authString.getBytes());
|
||||||
String authStringEnc = new String(authEncBytes);
|
String authStringEnc = new String(authEncBytes);
|
||||||
String url = _filterUrl + filtertype;
|
String url = _filterUrl + filtertype;
|
||||||
|
*/
|
||||||
|
String url = _filterUrl;
|
||||||
|
|
||||||
StringBuffer response = null;
|
StringBuffer response = null;
|
||||||
|
|
||||||
@ -335,8 +394,9 @@ public class Chat extends MiniPlugin
|
|||||||
|
|
||||||
// add request header con.setRequestMethod("POST");
|
// add request header con.setRequestMethod("POST");
|
||||||
connection.setRequestProperty("Content-Type", "application/json");
|
connection.setRequestProperty("Content-Type", "application/json");
|
||||||
connection.setRequestProperty("Authorization", "Basic " + authStringEnc);
|
//connection.setRequestProperty("Authorization", "Basic " + authStringEnc);
|
||||||
connection.setRequestProperty("Connection", "Keep-Alive");
|
connection.setRequestProperty("Connection", "Keep-Alive");
|
||||||
|
connection.addRequestProperty("Authentication", _apiKey);
|
||||||
|
|
||||||
String urlParameters = message.toString();
|
String urlParameters = message.toString();
|
||||||
|
|
||||||
@ -361,7 +421,7 @@ public class Chat extends MiniPlugin
|
|||||||
}
|
}
|
||||||
catch (Exception exception)
|
catch (Exception exception)
|
||||||
{
|
{
|
||||||
System.out.println("Error getting response from TwoHat : " + exception.getMessage());
|
System.out.println("Error getting response from CleanSpeak : " + exception.getMessage());
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user