Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
59 changes: 59 additions & 0 deletions MinecraftClient/ChatBots/Auto Respond.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace MinecraftClient.ChatBots
{
class Auto_Respond : ChatBot
{
private String[] respondon = new String[0];
private String[] torespond = new String[0];

private static string[] FromFile(string file)
{
if (File.Exists(file))
{
//Read all lines from file, remove lines with no text, convert to lowercase,
//remove duplicate entries, convert to a string array, and return the result.
return File.ReadAllLines(file)
.Where(line => !String.IsNullOrWhiteSpace(line))
.Select(line => line.ToLower())
.Distinct().ToArray();
}
else
{
LogToConsole("File not found: " + file);
return new string[0];
}
}

//Initalize the bot
public override void Initialize()
{
respondon = FromFile(Settings.Respond_MatchesFile);
torespond = FromFile(Settings.Respond_RespondFile);
ConsoleIO.WriteLine("Auto Respond Bot Sucessfully loaded!");
}

public override void GetText(string text)
{
//Remove colour codes
text = getVerbatim(text).ToLower();
//Check text to see if bot should respond
foreach (string alert in respondon.Where(alert => text.Contains(alert)))
{
//Find what to respond with
for (int x = 0; x < respondon.Length; x++)
{
if (respondon[x].ToString().Contains(alert))
{
//Respond
SendText(torespond[x].ToString());
}
}
}
}
}
}
7 changes: 4 additions & 3 deletions MinecraftClient/McTcpClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ public class McTcpClient : IMinecraftComHandler
private static List<string> cmd_names = new List<string>();
private static Dictionary<string, Command> cmds = new Dictionary<string, Command>();
private List<ChatBot> bots = new List<ChatBot>();
private readonly Dictionary<Guid, string> onlinePlayers = new Dictionary<Guid,string>();
private readonly Dictionary<Guid, string> onlinePlayers = new Dictionary<Guid, string>();
private static List<ChatBots.Script> scripts_on_hold = new List<ChatBots.Script>();
public void BotLoad(ChatBot b) { b.SetHandler(this); bots.Add(b); b.Initialize(); Settings.SingleCommand = ""; }
public void BotUnLoad(ChatBot b) { bots.RemoveAll(item => object.ReferenceEquals(item, b)); }
Expand All @@ -39,7 +39,7 @@ public class McTcpClient : IMinecraftComHandler
public string getUsername() { return username; }
public string getUserUUID() { return uuid; }
public string getSessionID() { return sessionid; }

TcpClient client;
IMinecraftCom handler;
Thread cmdprompt;
Expand Down Expand Up @@ -106,6 +106,7 @@ private void StartClient(string user, string uuid, string sessionID, string serv
if (Settings.AutoRelog_Enabled) { BotLoad(new ChatBots.AutoRelog(Settings.AutoRelog_Delay, Settings.AutoRelog_Retries)); }
if (Settings.ScriptScheduler_Enabled) { BotLoad(new ChatBots.ScriptScheduler(Settings.expandVars(Settings.ScriptScheduler_TasksFile))); }
if (Settings.RemoteCtrl_Enabled) { BotLoad(new ChatBots.RemoteControl()); }
if (Settings.Respond_Enabled) { BotLoad(new ChatBots.Auto_Respond()); }
}

try
Expand Down Expand Up @@ -454,7 +455,7 @@ public void OnPlayerJoin(Guid uuid, string name)
onlinePlayers[uuid] = name;
}
}

/// <summary>
/// Triggered when a player has left the game
/// </summary>
Expand Down
1 change: 1 addition & 0 deletions MinecraftClient/MinecraftClient.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@
<Compile Include="AutoTimeout.cs" />
<Compile Include="ChatBots\Alerts.cs" />
<Compile Include="ChatBots\AntiAFK.cs" />
<Compile Include="ChatBots\Auto Respond.cs" />
<Compile Include="ChatBots\AutoRelog.cs" />
<Compile Include="ChatBots\ChatLog.cs" />
<Compile Include="ChatBots\HangmanGame.cs" />
Expand Down
36 changes: 29 additions & 7 deletions MinecraftClient/Settings.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ public static class Settings
public static string Password = "";
public static string ServerIP = "";
public static ushort ServerPort = 25565;
public static string ServerVersion = "";
public static string ServerVersion = "";
public static string SingleCommand = "";
public static string ConsoleTitle = "";

Expand Down Expand Up @@ -88,12 +88,17 @@ public static class Settings
public static bool RemoteCtrl_AutoTpaccept = true;
public static bool RemoteCtrl_AutoTpaccept_Everyone = false;

//Auto Respond
public static bool Respond_Enabled = false;
public static string Respond_MatchesFile = "detect.txt";
public static string Respond_RespondFile = "respond.txt";

//Custom app variables and Minecraft accounts
private static Dictionary<string, string> AppVars = new Dictionary<string, string>();
private static Dictionary<string, KeyValuePair<string, string>> Accounts = new Dictionary<string, KeyValuePair<string, string>>();
private static Dictionary<string, KeyValuePair<string, ushort>> Servers = new Dictionary<string, KeyValuePair<string, ushort>>();

private enum ParseMode { Default, Main, AppVars, Proxy, AntiAFK, Hangman, Alerts, ChatLog, AutoRelog, ScriptScheduler, RemoteControl };
private enum ParseMode { Default, Main, AppVars, Proxy, AntiAFK, Hangman, Alerts, ChatLog, AutoRelog, ScriptScheduler, RemoteControl, Auto_Respond };

/// <summary>
/// Load settings from the give INI file
Expand Down Expand Up @@ -127,6 +132,7 @@ public static void LoadSettings(string settingsfile)
case "remotecontrol": pMode = ParseMode.RemoteControl; break;
case "proxy": pMode = ParseMode.Proxy; break;
case "appvars": pMode = ParseMode.AppVars; break;
case "auto respond": pMode = ParseMode.Auto_Respond; break;
default: pMode = ParseMode.Default; break;
}
}
Expand Down Expand Up @@ -201,7 +207,7 @@ public static void LoadSettings(string settingsfile)
Servers[server_data[0]]
= new KeyValuePair<string, ushort>(ServerIP, ServerPort);
}

//Restore current server info
ServerIP = server_host_temp;
ServerPort = server_port_temp;
Expand Down Expand Up @@ -284,7 +290,7 @@ public static void LoadSettings(string settingsfile)
argValue = argValue.ToLower();
if (argValue == "http") { proxyType = Proxy.ProxyHandler.Type.HTTP; }
else if (argValue == "socks4") { proxyType = Proxy.ProxyHandler.Type.SOCKS4; }
else if (argValue == "socks4a"){ proxyType = Proxy.ProxyHandler.Type.SOCKS4a;}
else if (argValue == "socks4a") { proxyType = Proxy.ProxyHandler.Type.SOCKS4a; }
else if (argValue == "socks5") { proxyType = Proxy.ProxyHandler.Type.SOCKS5; }
break;
case "server":
Expand All @@ -308,6 +314,15 @@ public static void LoadSettings(string settingsfile)
case ParseMode.AppVars:
setVar(argName, argValue);
break;

case ParseMode.Auto_Respond:
switch (argName.ToLower())
{
case "enabled": Respond_Enabled = str2bool(argValue); break;
case "matchfile": Respond_MatchesFile = argValue; break;
case "respondfile": Respond_RespondFile = argValue; break;
}
break;
}
}
}
Expand Down Expand Up @@ -402,7 +417,14 @@ public static void WriteDefaultSettings(string settingsfile)
+ "[RemoteControl]\r\n"
+ "enabled=false\r\n"
+ "autotpaccept=true\r\n"
+ "tpaccepteveryone=false\r\n", Encoding.UTF8);
+ "tpaccepteveryone=false\r\n"
+ "\r\n"
+ "[Auto Respond]\r\n"
+ "enabled=false\r\n"
+ "matchfile=detect.txt\r\n"
+ "respondfile=respond.txt\r\n"
+ "#To use the bot, place the text to detect in the matchfile file and the text to respond with in the respondfile\r\n"
+ "#Each line in each file is relevant to the same line in the other document, for example if the bot detects the text in line 1 of the first file, it will respond with line 1 of the second file.\r\n", Encoding.UTF8);
}

public static int str2int(string str) { try { return Convert.ToInt32(str); } catch { return 0; } }
Expand Down Expand Up @@ -436,7 +458,7 @@ public static bool setServerIP(string server)
string[] sip = server.Split(':');
string host = sip[0];
ushort port = 25565;

if (sip.Length > 1)
{
try
Expand All @@ -458,7 +480,7 @@ public static bool setServerIP(string server)
ServerPort = Servers[server].Value;
return true;
}

return false;
}

Expand Down