diff --git a/Content.Client/_Miracle/Nya/NyaCheckSystem.cs b/Content.Client/_Miracle/Nya/NyaCheckSystem.cs index 5c4e1723f8..ad6d348a53 100644 --- a/Content.Client/_Miracle/Nya/NyaCheckSystem.cs +++ b/Content.Client/_Miracle/Nya/NyaCheckSystem.cs @@ -25,8 +25,7 @@ public sealed class NyaCheckClientSystem : EntitySystem "Content.Shared.Database", "Robust.Client", "Robust.Shared", - "Robust.Server", - "Content.Anticheat", + "Robust.Server" ]; public override void Initialize() @@ -66,7 +65,7 @@ public sealed class NyaCheckClientSystem : EntitySystem private bool FoundExtraTypesIReflection([NotNullWhen(true)] out string? offender) { offender = null; - string[] typenames = ["SubverterPatch", "MarseyPatch", "MarseyEntry", "Sedition"]; + string[] typenames = ["SubverterPatch", "MarseyPatch", "MarseyEntry", "Sedition", "Ware"]; var types = _reflection.FindAllTypes(); @@ -168,9 +167,11 @@ public sealed class NyaCheckClientSystem : EntitySystem string[] keywords = [ "aimbot", + "visuals", "esp", "noslip", "exploit", + "fun" ]; offend = null; diff --git a/Content.Server/_Miracle/Nya/ExpectedReplySystem.cs b/Content.Server/_Miracle/Nya/ExpectedReplySystem.cs index eebbffc5c5..aa3aa8d2e5 100644 --- a/Content.Server/_Miracle/Nya/ExpectedReplySystem.cs +++ b/Content.Server/_Miracle/Nya/ExpectedReplySystem.cs @@ -40,7 +40,7 @@ public sealed class ExpectedReplySystem : EntitySystem { if (_pendingReplies.ContainsKey(e.Session)) { - var warningMsg = $"Игрок отключился во время ожидания ответа!"; + var warningMsg = $"Игрок отключился во время ожидания ответа! Nya должен был получить: {_pendingReplies[e.Session].Request.ExpectedReplyType}."; SendSuspiciousActivityAlert(e.Session, warningMsg, 80); _pendingReplies.Remove(e.Session); } @@ -114,7 +114,7 @@ public sealed class ExpectedReplySystem : EntitySystem private void HandleTimeout(ICommonSession player) { - var warningMsg = $"Не получен ответ в течение {ReplyTimeoutSeconds} секунд"; + var warningMsg = $"Не получен ответ в течение {ReplyTimeoutSeconds} секунд. Будьте бдительны с этим игроком! Nya советует использовать nyagrab!"; SendSuspiciousActivityAlert(player, warningMsg, 65); } diff --git a/Content.Server/_Miracle/Nya/NyaCheckSystem.cs b/Content.Server/_Miracle/Nya/NyaCheckSystem.cs index 86caf404bc..bffd796283 100644 --- a/Content.Server/_Miracle/Nya/NyaCheckSystem.cs +++ b/Content.Server/_Miracle/Nya/NyaCheckSystem.cs @@ -16,7 +16,6 @@ public sealed class CheatCheckSystem : EntitySystem [Dependency] private readonly IChatManager _chatManager = default!; [Dependency] private readonly IConfigurationManager _configuration = default!; - private readonly HttpClient _httpClient = new(); private string _webhookUrl = ""; @@ -76,7 +75,44 @@ public sealed class CheatCheckSystem : EntitySystem detections.Add(("UI вмешательство", $"Неразрешенное окно: {ev.WindowOffender}", 65)); if (detections.Count == 0) + { + var cleanMsg = $"✅ **Античит завершил проверку**\n\n" + + $"**Игрок:** {args.SenderSession.Name}\n" + + $"**IP:** {args.SenderSession.Channel.RemoteEndPoint}\n" + + $"**Результат:** Нарушений не выявлено"; + + var cleanEmbed = new + { + title = "✅ Проверка завершена", + description = cleanMsg, + color = 0x00FF00, // Зеленый + timestamp = DateTime.UtcNow.ToString("o") + }; + + var cleanPayload = new + { + embeds = new[] { cleanEmbed } + }; + + var json = JsonSerializer.Serialize(cleanPayload); + var content = new StringContent(json, Encoding.UTF8, "application/json"); + + try + { + await _httpClient.PostAsync(_webhookUrl, content); + } + catch (Exception e) + { + Log.Error($"Failed to send Discord webhook: {e}"); + } + + var cleanInGameMsg = $"[Anticheat] Проверка завершена\n" + + $"Игрок: {args.SenderSession.Name}\n" + + $"Результат: Нарушений не выявлено"; + + _chatManager.SendAdminAnnouncement(cleanInGameMsg); return; + } var maxSeverity = detections.Max(d => d.Severity); var avgSeverity = detections.Average(d => d.Severity); @@ -113,12 +149,12 @@ public sealed class CheatCheckSystem : EntitySystem embeds = new[] { embed } }; - var json = JsonSerializer.Serialize(payload); - var content = new StringContent(json, Encoding.UTF8, "application/json"); + var jsonA = JsonSerializer.Serialize(payload); + var contentA = new StringContent(jsonA, Encoding.UTF8, "application/json"); try { - await _httpClient.PostAsync(_webhookUrl, content); + await _httpClient.PostAsync(_webhookUrl, contentA); } catch (Exception e) {