ChatManager.RateLimit.cs 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. using Content.Shared.CCVar;
  2. using Content.Shared.Database;
  3. using Content.Shared.Players.RateLimiting;
  4. using Robust.Shared.Player;
  5. namespace Content.Server.Chat.Managers;
  6. internal sealed partial class ChatManager
  7. {
  8. private const string RateLimitKey = "Chat";
  9. private void RegisterRateLimits()
  10. {
  11. _rateLimitManager.Register(RateLimitKey,
  12. new RateLimitRegistration(CCVars.ChatRateLimitPeriod,
  13. CCVars.ChatRateLimitCount,
  14. RateLimitPlayerLimited,
  15. CCVars.ChatRateLimitAnnounceAdminsDelay,
  16. RateLimitAlertAdmins,
  17. LogType.ChatRateLimited)
  18. );
  19. }
  20. private void RateLimitPlayerLimited(ICommonSession player)
  21. {
  22. DispatchServerMessage(player, Loc.GetString("chat-manager-rate-limited"), suppressLog: true);
  23. }
  24. private void RateLimitAlertAdmins(ICommonSession player)
  25. {
  26. SendAdminAlert(Loc.GetString("chat-manager-rate-limit-admin-announcement", ("player", player.Name)));
  27. }
  28. public RateLimitStatus HandleRateLimit(ICommonSession player)
  29. {
  30. return _rateLimitManager.CountAction(player, RateLimitKey);
  31. }
  32. }