111 lines
No EOL
4.5 KiB
C#
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);
|
|
}
|
|
}
|
|
} |