1
0

IChatManager.cs 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. using System.Diagnostics.CodeAnalysis;
  2. using Content.Shared.Administration;
  3. using Content.Shared.Chat;
  4. using Content.Shared.Players.RateLimiting;
  5. using Robust.Shared.Network;
  6. using Robust.Shared.Player;
  7. namespace Content.Server.Chat.Managers
  8. {
  9. public interface IChatManager : ISharedChatManager
  10. {
  11. /// <summary>
  12. /// Dispatch a server announcement to every connected player.
  13. /// </summary>
  14. /// <param name="message"></param>
  15. /// <param name="colorOverride">Override the color of the message being sent.</param>
  16. void DispatchServerAnnouncement(string message, Color? colorOverride = null);
  17. void DispatchServerMessage(ICommonSession player, string message, bool suppressLog = false);
  18. void TrySendOOCMessage(ICommonSession player, string message, OOCChatType type);
  19. void SendHookOOC(string sender, string message);
  20. void SendHookAdmin(string sender, string message);
  21. void SendAdminAnnouncement(string message, AdminFlags? flagBlacklist = null, AdminFlags? flagWhitelist = null);
  22. void SendAdminAnnouncementMessage(ICommonSession player, string message, bool suppressLog = true);
  23. void ChatMessageToOne(ChatChannel channel, string message, string wrappedMessage, EntityUid source, bool hideChat,
  24. INetChannel client, Color? colorOverride = null, bool recordReplay = false, string? audioPath = null, float audioVolume = 0, NetUserId? author = null);
  25. void ChatMessageToMany(ChatChannel channel, string message, string wrappedMessage, EntityUid source, bool hideChat, bool recordReplay,
  26. IEnumerable<INetChannel> clients, Color? colorOverride = null, string? audioPath = null, float audioVolume = 0, NetUserId? author = null);
  27. void ChatMessageToManyFiltered(Filter filter, ChatChannel channel, string message, string wrappedMessage, EntityUid source, bool hideChat, bool recordReplay, Color? colorOverride, string? audioPath = null, float audioVolume = 0);
  28. void ChatMessageToAll(ChatChannel channel, string message, string wrappedMessage, EntityUid source, bool hideChat, bool recordReplay, Color? colorOverride = null, string? audioPath = null, float audioVolume = 0, NetUserId? author = null);
  29. bool MessageCharacterLimit(ICommonSession player, string message);
  30. void DeleteMessagesBy(NetUserId uid);
  31. [return: NotNullIfNotNull(nameof(author))]
  32. ChatUser? EnsurePlayer(NetUserId? author);
  33. /// <summary>
  34. /// Called when a player sends a chat message to handle rate limits.
  35. /// Will update counts and do necessary actions if breached.
  36. /// </summary>
  37. /// <param name="player">The player sending a chat message.</param>
  38. /// <returns>False if the player has violated rate limits and should be blocked from sending further messages.</returns>
  39. RateLimitStatus HandleRateLimit(ICommonSession player);
  40. }
  41. }