using Serilog; using TwitchChatTTS.Chat.Groups; namespace TwitchChatTTS.Hermes.Socket.Requests { public class DeleteGroupChatterAck : IRequestAck { public string Name => "delete_group_chatter"; private readonly IChatterGroupManager _groups; private readonly ILogger _logger; public DeleteGroupChatterAck(IChatterGroupManager groups, ILogger logger) { _groups = groups; _logger = logger; } public void Acknowledge(string requestId, string? json, IDictionary? requestData) { if (requestData == null) { _logger.Warning("Request data is null."); return; } if (!long.TryParse(requestData["chatter"].ToString(), out var chatterId)) { _logger.Warning($"Chatter Id is invalid [chatter id: {chatterId}]"); return; } var groupId = requestData["group"].ToString(); if (string.IsNullOrWhiteSpace(groupId)) { _logger.Warning($"Group Id is invalid [group id: {groupId}]"); return; } var group = _groups.Get(groupId); if (group == null) { _logger.Warning($"Group id does not exist [group id: {groupId}]"); return; } _logger.Debug($"Deleting chatter from group [group id: {group.Id}][chatter id: {chatterId}][group name: {group.Name}][group priority: {group.Priority}]"); _groups.Remove(chatterId, groupId); _logger.Information($"Chatter has been deleted from group [group id: {group.Id}][chatter id: {chatterId}]"); } } }