CLre/CLre_server/Tweaks/Chat/ModeratorCommands.cs

111 lines
No EOL
4.5 KiB
C#

using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using ExitGames.Client.Photon.Chat;
namespace CLre_server.Tweaks.Chat
{
public static class ModeratorCommands
{
[ChatCommand("KICK", "kick ([\\w\\d\\-_]+)")]
public static void KickInButt(Match messageMatch, ChatClient connection, string sender)
{
if (!API.MainServer.Moderator.Instance.IsModerator(sender))
{
connection.PublishMessage(ChatListener.ChatName, "Ban failure: You're not a mod :(");
return;
}
string target = messageMatch.Groups[1].Value;
#if DEBUG
API.Utility.Logging.MetaLog($"/kick {target}");
#endif
if (API.MainServer.Moderator.Instance.DisconnectPlayerById(target))
{
connection.PublishMessage(ChatListener.ChatName, $"Adios {target}");
}
else if (API.MainServer.Moderator.Instance.DisconnectPlayerByName(target))
{
connection.PublishMessage(ChatListener.ChatName, $"Bye bye {target}");
}
else
{
connection.PublishMessage(ChatListener.ChatName, "Kick failure: User not found :(");
}
}
[ChatCommand("BAN", "ban ([\\w\\d\\-_]+)")]
public static void BanishIdiot(Match messageMatch, ChatClient connection, string sender)
{
if (!API.MainServer.Moderator.Instance.IsModerator(sender))
{
connection.PublishMessage(ChatListener.ChatName, "Ban failure: You're not a mod :(");
return;
}
string target = messageMatch.Groups[1].Value;
#if DEBUG
API.Utility.Logging.MetaLog($"/ban {target}");
#endif
if (API.MainServer.Moderator.Instance.BanPlayerById(target))
{
connection.PublishMessage(ChatListener.ChatName, $"And {target} is no more!");
}
else if (API.MainServer.Moderator.Instance.BanPlayerByName(target))
{
connection.PublishMessage(ChatListener.ChatName, $"And {target} was never seen again...");
}
else
{
connection.PublishMessage(ChatListener.ChatName, $"Ban warning: {target} was added to ban list but was not connected to this server...");
}
}
[ChatCommand("(SH)OPIFY", "(mod|op) ([\\w\\d\\-_]+)")]
public static void GoPro(Match messageMatch, ChatClient connection, string sender)
{
if (!API.MainServer.Moderator.Instance.IsModerator(sender))
{
connection.PublishMessage(ChatListener.ChatName, "Op failure: You're not a mod :(");
return;
}
string target = messageMatch.Groups[2].Value;
#if DEBUG
API.Utility.Logging.MetaLog($"/op {target}");
#endif
List<string> moderators = new List<string>(CLre.Config.moderators);
moderators.Add(target);
CLre.Config.moderators = moderators.ToArray();
connection.PublishMessage(ChatListener.ChatName, $"Promoted {target} to moderator");
}
[ChatCommand("De(SH)OPIFY", "(demod|deop) ([\\w\\d\\-_]+)")]
public static void AntiProton(Match messageMatch, ChatClient connection, string sender)
{
if (!API.MainServer.Moderator.Instance.IsModerator(sender))
{
connection.PublishMessage(ChatListener.ChatName, "DeOp failure: You're not a mod :(");
return;
}
string target = messageMatch.Groups[2].Value;
#if DEBUG
API.Utility.Logging.MetaLog($"/deop {target}");
#endif
List<string> moderators = new List<string>(CLre.Config.moderators);
if (moderators.Remove(target))
{
CLre.Config.moderators = moderators.ToArray();
connection.PublishMessage(ChatListener.ChatName, $"Demoted {target} to regular user");
}
connection.PublishMessage(ChatListener.ChatName, "DeOp failure: User not found :(");
}
[ChatCommand("ECHO", "echo (.+)$")]
public static void EchoEchoEcho(Match messageMatch, ChatClient connection, string sender)
{
string target = messageMatch.Groups[1].Value;
#if DEBUG
API.Utility.Logging.MetaLog($"/echo {target}");
#endif
connection.PublishMessage(ChatListener.ChatName, target);
}
}
}