using HermesSocketLibrary.db; using HermesSocketLibrary.Requests.Messages; using HermesSocketServer.Models; using ILogger = Serilog.ILogger; namespace HermesSocketServer.Requests { public class UpdateTTSVoiceState : IRequest { public string Name => "update_tts_voice_state"; public string[] RequiredKeys => ["voice", "state"]; private Database _database; private ILogger _logger; public UpdateTTSVoiceState(Database database, ILogger logger) { _database = database; _logger = logger; } public Task Grant(Channel channel, IDictionary data) { var id = data["voice"].ToString()!; var state = data["state"].ToString() == "True"; var voiceState = new TTSVoiceState() { Id = id, UserId = channel.Id, Enabled = state, }; var result = channel.VoiceStates.Set(id, voiceState); if (result) { _logger.Information($"Updated voice state on channel [voice id: {id}][state: {state}][channel: {channel.Id}]"); return Task.FromResult(RequestResult.Successful(voiceState)); } return Task.FromResult(RequestResult.Failed("Something went wrong when updating the database.")); } } }