sodoff-mmo/src/CommandHandlers/ChatMessageHandler.cs
2024-04-07 15:42:36 +02:00

49 lines
1.8 KiB
C#

using sodoffmmo.Attributes;
using sodoffmmo.Core;
using sodoffmmo.Data;
using sodoffmmo.Management;
namespace sodoffmmo.CommandHandlers;
[ExtensionCommandHandler("SCM")]
class ChatMessageHandler : CommandHandler {
public override Task Handle(Client client, NetworkObject receivedObject) {
string message = receivedObject.Get<NetworkObject>("p").Get<string>("chm");
if (ManagementCommandProcessor.ProcessCommand(message, client))
return Task.CompletedTask;
if (client.TempMuted) {
ClientMuted(client);
return Task.CompletedTask;
}
if (!Configuration.ServerConfiguration.EnableChat && !client.Room.AllowChatOverride) {
ChatDisabled(client);
} else {
Chat(client, message);
}
return Task.CompletedTask;
}
public void ChatDisabled(Client client) {
client.Send(Utils.BuildServerSideMessage("Unfortunately, chat has been disabled by server administrators", "Server"));
}
public void ClientMuted(Client client) {
client.Send(Utils.BuildServerSideMessage("You have been muted by the moderators", "Server"));
}
public void Chat(Client client, string message) {
if (Configuration.ServerConfiguration.Authentication && client.PlayerData.DiplayName == "placeholder")
return;
client.Room.Send(Utils.BuildChatMessage(client.PlayerData.Uid, message, client.PlayerData.DiplayName), client);
NetworkObject cmd = new();
NetworkObject data = new();
data.Add("arr", new string[] { "SCA", "-1", "1", message, "", "1" });
cmd.Add("c", "SCA");
cmd.Add("p", data);
NetworkPacket packet = NetworkObject.WrapObject(1, 13, cmd).Serialize();
client.Send(packet);
}
}