static bool CheckCommand(Client c, string query)
{
string[] args = ParseArguments(query);
string command = args[0].ToLower();
if (command[0] == '/')
{
command = command.Substring(1, command.Length - 1);
if (AdminCommands.Contains(command) && (c == null /*This is only null if typed directly into the console.*/ || c.Value.Rank == (byte)SpecialRank.Admin))
{
//TODO: Find a better way to do this.
switch (command)
{
case "kick":
if (args.Length == 2)
{
if (KickUser(args[1]))
return true;
}
break;
case "ban":
if (BanUser(args[1], args.Length == 3 && args[2] == 1.ToString() ? 1 : 0))
return true;
break;
case "unban":
if (args.Length == 2)
{
if (UnbanUser(args[1]))
return true;
}
break;
case "globalmsg":
if (args.Length == 2)
{
byte[] data = Packer.Serialize((byte)ServerPacket.GlobalMsg, args[1]);
GlobalBroadcast(data);
return true;
}
break;
case "setlevel":
if (args.Length == 3)
{
if (SetUserRank(args[1], args[2]))
return true;
}
break;
case "globalmute":
if (args.Length == 2 && args[1] != c.Value.Username)
{
MuteUser(c, args[1], true);
return true;
}
break;
case "globalunmute":
if (args.Length == 2 && args[1] != c.Value.Username)
{
UnmuteUser(c, args[1], true);
return true;
}
break;
case "updatemotd":
MOTD = GetMOTD();
return true;
case "shutdown":
UpdateAndSaveUsers(true);
Environment.Exit(0);
break;
case "cls":
ClearChat();
break;
}
}
if (UserCommands.Contains(command))
{
switch (command)
{
case "mute":
if (args.Length == 2 && args[1] != c.Value.Username)
{
MuteUser(c, args[1], false);
return true;
}
break;
case "unmute":
if (args.Length == 2 && args[1] != c.Value.Username)
{
UnmuteUser(c, args[1], false);
return true;
}
break;
}
}
}
return false;
}