Skip to content

Commit ff53972

Browse files
committed
Add rich-text tag filter
1 parent 28ab567 commit ff53972

6 files changed

Lines changed: 79 additions & 22 deletions

File tree

TextChatMeow/Commands/Commands.cs

Lines changed: 44 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
1-
using CommandSystem;
1+
using UnityEngine;
2+
using CommandSystem;
23
using Exiled.API.Features;
34
using Exiled.API.Features.Items;
4-
using Exiled.API.Features.Pickups;
5-
using LogWritterMeow;
6-
using PlayerRoles;
7-
using PlayerRoles.Spectating;
5+
86
using System;
97
using System.Collections.Generic;
108
using System.Linq;
119
using System.Text;
10+
using System.Text.RegularExpressions;
1211
using System.Threading.Tasks;
13-
using UnityEngine;
12+
13+
using TextChatMeow.Commands;
1414

1515
namespace TextChatMeow
1616
{
@@ -31,9 +31,7 @@ public bool Execute(ArraySegment<string> arguments, ICommandSender sender, out s
3131
return false;
3232

3333
var str = string.Join(" ", arguments.ToArray());
34-
var message = new ProximityChatMessage(str, player);
35-
36-
MessageList.AddMessage(message);
34+
SendMessage(str, player);
3735

3836
response = $"您的消息已被发送至周围玩家:{str}";
3937
return true;
@@ -56,6 +54,14 @@ public bool CheckPermission(Player player, out string resposne)
5654
resposne = string.Empty;
5755
return true;
5856
}
57+
58+
public void SendMessage(string str, Player player)
59+
{
60+
str = MessageTools.ClearTags(str);
61+
var message = new ProximityChatMessage(str, player);
62+
63+
MessageList.AddMessage(message);
64+
}
5965
}
6066

6167
[CommandHandler(typeof(ClientCommandHandler))]
@@ -74,12 +80,8 @@ public bool Execute(ArraySegment<string> arguments, ICommandSender sender, out s
7480
if(!CheckPermission(player, out response))
7581
return false;
7682

77-
((Radio)player.Items.First(x => x.Type == ItemType.Radio)).BatteryLevel--;
78-
7983
var str = string.Join(" ", arguments.ToArray());
80-
var message = new RadioChatMessage(str, player);
81-
82-
MessageList.AddMessage(message);
84+
SendMessage(str, player);
8385

8486
response = $"您的消息已通过无线电发送:{str}";
8587
return true;
@@ -114,6 +116,16 @@ public bool CheckPermission(Player player, out string response)
114116
response = string.Empty;
115117
return true;
116118
}
119+
120+
public void SendMessage(string str, Player player)
121+
{
122+
((Radio)player.Items.First(x => x.Type == ItemType.Radio)).BatteryLevel--;
123+
124+
str = MessageTools.ClearTags(str);
125+
var message = new RadioChatMessage(str, player);
126+
127+
MessageList.AddMessage(message);
128+
}
117129
}
118130

119131
[CommandHandler(typeof(ClientCommandHandler))]
@@ -133,9 +145,7 @@ public bool Execute(ArraySegment<string> arguments, ICommandSender sender, out s
133145
return false;
134146

135147
var str = string.Join(" ", arguments.ToArray());
136-
var message = new PublicChatMessage(str, player);
137-
138-
MessageList.AddMessage(message);
148+
SendMessage(str, player);
139149

140150
response = $"您的消息已被发送至所有玩家:{str}";
141151
return true;
@@ -158,6 +168,14 @@ public bool CheckPermission(Player player, out string response)
158168
response = string.Empty;
159169
return true;
160170
}
171+
172+
public void SendMessage(string str, Player player)
173+
{
174+
str = MessageTools.ClearTags(str);
175+
var message = new PublicChatMessage(str, player);
176+
177+
MessageList.AddMessage(message);
178+
}
161179
}
162180

163181
[CommandHandler(typeof(ClientCommandHandler))]
@@ -177,9 +195,7 @@ public bool Execute(ArraySegment<string> arguments, ICommandSender sender, out s
177195
return false;
178196

179197
var str = string.Join(" ", arguments.ToArray());
180-
var message = new TeamChatMessage(str, player);
181-
182-
MessageList.AddMessage(message);
198+
SendMessage(str, player);
183199

184200
response = $"您的消息已被发送至同队伍的玩家:{str}";
185201
return true;
@@ -203,5 +219,13 @@ public bool CheckPermission(Player player, out string response)
203219
response = string.Empty;
204220
return true;
205221
}
222+
223+
public void SendMessage(string str, Player player)
224+
{
225+
str = MessageTools.ClearTags(str);
226+
var message = new TeamChatMessage(str, player);
227+
228+
MessageList.AddMessage(message);
229+
}
206230
}
207231
}

TextChatMeow/Commands/IChatCommand.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,7 @@ namespace TextChatMeow
1010
public interface IChatCommand
1111
{
1212
bool CheckPermission(Player player, out string response);
13+
14+
void SendMessage(string str, Player player);
1315
}
1416
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Text;
5+
using System.Text.RegularExpressions;
6+
using System.Threading.Tasks;
7+
8+
namespace TextChatMeow.Commands
9+
{
10+
public static class MessageTools
11+
{
12+
public static string GetChannelName(ChatMessageType type)
13+
{
14+
return Plugin.instance.Config.ChannelsName[type];
15+
}
16+
17+
public static string ClearTags(string str)
18+
{
19+
return Regex.Replace(str, @"<[^>]*>", string.Empty);
20+
}
21+
}
22+
}

TextChatMeow/MessageHandler/MessageList.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,13 @@ public static void AddMessage(ChatMessage ms)
3333
messageList.Insert(0, ms);
3434
MessageManager.UpdateAllMessage();
3535

36-
LogWritterMeow.Logger.Info(ms.text);
36+
try
37+
{
38+
LogWritterMeow.Logger.Info(ms.text);
39+
}catch(Exception ex) {
40+
41+
}
42+
3743
}
3844

3945
public static void RemoveMessage(string message)

TextChatMeow/Plugin.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424
// Bug fixing
2525
// V1.2.5
2626
// Use DateTime instead of count down. Bug fixing
27+
// V1.3.0
28+
// Use regex to clear rich-text tags.
2729

2830
namespace TextChatMeow
2931
{
@@ -33,7 +35,7 @@ internal class Plugin : Plugin<Config>
3335

3436
public override string Name => "TextChatMeow";
3537
public override string Author => "MeowServerOwner";
36-
public override Version Version => new Version(1, 2, 5);
38+
public override Version Version => new Version(1, 3, 0);
3739

3840
public override void OnEnabled()
3941
{

TextChatMeow/TextChatMeow.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -310,6 +310,7 @@
310310
</ItemGroup>
311311
<ItemGroup>
312312
<Compile Include="Commands\IChatCommand.cs" />
313+
<Compile Include="Commands\MessageTools.cs" />
313314
<Compile Include="MessageHandler\MessageHandler.cs" />
314315
<Compile Include="MessageHandler\MessageList.cs" />
315316
<Compile Include="Plugin.cs" />

0 commit comments

Comments
 (0)