Fixed command permissions. Moved to using Twitch's EventSub via websockets. Cleaned some code up. Added detection for subscription messages (no TTS), message deletion, full or partial chat clear. Removes messages from TTS queue if applicable. Added command aliases for static parameters. Word filters use compiled regex if possible. Fixed TTS voice deletion.
This commit is contained in:
@ -1,6 +1,6 @@
|
||||
using Serilog;
|
||||
using TwitchChatTTS.Hermes.Socket;
|
||||
using TwitchLib.Client.Models;
|
||||
using TwitchChatTTS.Twitch.Socket.Messages;
|
||||
using static TwitchChatTTS.Chat.Commands.TTSCommands;
|
||||
|
||||
namespace TwitchChatTTS.Chat.Commands
|
||||
@ -28,41 +28,30 @@ namespace TwitchChatTTS.Chat.Commands
|
||||
b.CreateVoiceNameParameter("voiceName", false)
|
||||
.CreateCommand(new AddTTSVoiceCommand(_user, _logger));
|
||||
})
|
||||
.CreateStaticInputParameter("del", b =>
|
||||
{
|
||||
b.CreateVoiceNameParameter("voiceName", true)
|
||||
.CreateCommand(new DeleteTTSVoiceCommand(_user, _logger));
|
||||
})
|
||||
.AddAlias("insert", "add")
|
||||
.CreateStaticInputParameter("delete", b =>
|
||||
{
|
||||
b.CreateVoiceNameParameter("voiceName", true)
|
||||
.CreateCommand(new DeleteTTSVoiceCommand(_user, _logger));
|
||||
})
|
||||
.CreateStaticInputParameter("remove", b =>
|
||||
{
|
||||
b.CreateVoiceNameParameter("voiceName", true)
|
||||
.CreateCommand(new DeleteTTSVoiceCommand(_user, _logger));
|
||||
})
|
||||
.AddAlias("del", "delete")
|
||||
.AddAlias("remove", "delete")
|
||||
.CreateStaticInputParameter("enable", b =>
|
||||
{
|
||||
b.CreateVoiceNameParameter("voiceName", false)
|
||||
.CreateCommand(new SetTTSVoiceStateCommand(true, _user, _logger));
|
||||
})
|
||||
.CreateStaticInputParameter("on", b =>
|
||||
{
|
||||
b.CreateVoiceNameParameter("voiceName", false)
|
||||
.CreateCommand(new SetTTSVoiceStateCommand(true, _user, _logger));
|
||||
})
|
||||
.AddAlias("on", "enable")
|
||||
.AddAlias("enabled", "enable")
|
||||
.AddAlias("true", "enable")
|
||||
.CreateStaticInputParameter("disable", b =>
|
||||
{
|
||||
b.CreateVoiceNameParameter("voiceName", true)
|
||||
.CreateCommand(new SetTTSVoiceStateCommand(false, _user, _logger));
|
||||
})
|
||||
.CreateStaticInputParameter("off", b =>
|
||||
{
|
||||
b.CreateVoiceNameParameter("voiceName", true)
|
||||
.CreateCommand(new SetTTSVoiceStateCommand(false, _user, _logger));
|
||||
});
|
||||
.AddAlias("off", "disable")
|
||||
.AddAlias("disabled", "disable")
|
||||
.AddAlias("false", "disable");
|
||||
});
|
||||
}
|
||||
|
||||
@ -80,12 +69,7 @@ namespace TwitchChatTTS.Chat.Commands
|
||||
_logger = logger;
|
||||
}
|
||||
|
||||
public bool CheckDefaultPermissions(ChatMessage message)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public async Task Execute(IDictionary<string, string> values, ChatMessage message, HermesSocketClient client)
|
||||
public async Task Execute(IDictionary<string, string> values, ChannelChatMessage message, HermesSocketClient client)
|
||||
{
|
||||
if (_user == null || _user.VoicesAvailable == null)
|
||||
return;
|
||||
@ -95,12 +79,12 @@ namespace TwitchChatTTS.Chat.Commands
|
||||
var exists = _user.VoicesAvailable.Any(v => v.Value.ToLower() == voiceNameLower);
|
||||
if (exists)
|
||||
{
|
||||
_logger.Warning($"Voice already exists [voice: {voiceName}][id: {message.UserId}]");
|
||||
_logger.Warning($"Voice already exists [voice: {voiceName}][id: {message.ChatterUserId}]");
|
||||
return;
|
||||
}
|
||||
|
||||
await client.CreateTTSVoice(voiceName);
|
||||
_logger.Information($"Added a new TTS voice by {message.Username} [voice: {voiceName}][id: {message.UserId}]");
|
||||
_logger.Information($"Added a new TTS voice [voice: {voiceName}][creator: {message.ChatterUserLogin}][creator id: {message.ChatterUserId}]");
|
||||
}
|
||||
}
|
||||
|
||||
@ -117,16 +101,11 @@ namespace TwitchChatTTS.Chat.Commands
|
||||
_logger = logger;
|
||||
}
|
||||
|
||||
public bool CheckDefaultPermissions(ChatMessage message)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public async Task Execute(IDictionary<string, string> values, ChatMessage message, HermesSocketClient client)
|
||||
public async Task Execute(IDictionary<string, string> values, ChannelChatMessage message, HermesSocketClient client)
|
||||
{
|
||||
if (_user == null || _user.VoicesAvailable == null)
|
||||
{
|
||||
_logger.Debug($"Voices available are not loaded [chatter: {message.Username}][chatter id: {message.UserId}]");
|
||||
_logger.Warning($"Voices available are not loaded [chatter: {message.ChatterUserLogin}][chatter id: {message.ChatterUserId}]");
|
||||
return;
|
||||
}
|
||||
|
||||
@ -135,13 +114,18 @@ namespace TwitchChatTTS.Chat.Commands
|
||||
var exists = _user.VoicesAvailable.Any(v => v.Value.ToLower() == voiceNameLower);
|
||||
if (!exists)
|
||||
{
|
||||
_logger.Debug($"Voice does not exist [voice: {voiceName}][chatter: {message.Username}][chatter id: {message.UserId}]");
|
||||
_logger.Warning($"Voice does not exist [voice: {voiceName}][chatter: {message.ChatterUserLogin}][chatter id: {message.ChatterUserId}]");
|
||||
return;
|
||||
}
|
||||
|
||||
var voiceId = _user.VoicesAvailable.FirstOrDefault(v => v.Value.ToLower() == voiceNameLower).Key;
|
||||
if (voiceId == null) {
|
||||
_logger.Warning($"Could not find the identifier for the tts voice [voice name: {voiceName}]");
|
||||
return;
|
||||
}
|
||||
|
||||
var voiceId = _user.VoicesAvailable.FirstOrDefault(v => v.Value.ToLower() == voiceName).Key;
|
||||
await client.DeleteTTSVoice(voiceId);
|
||||
_logger.Information($"Deleted a TTS voice [voice: {voiceName}][chatter: {message.Username}][chatter id: {message.UserId}]");
|
||||
_logger.Information($"Deleted a TTS voice [voice: {voiceName}][chatter: {message.ChatterUserLogin}][chatter id: {message.ChatterUserId}]");
|
||||
}
|
||||
}
|
||||
|
||||
@ -160,12 +144,7 @@ namespace TwitchChatTTS.Chat.Commands
|
||||
_logger = logger;
|
||||
}
|
||||
|
||||
public bool CheckDefaultPermissions(ChatMessage message)
|
||||
{
|
||||
return message.IsModerator || message.IsBroadcaster;
|
||||
}
|
||||
|
||||
public async Task Execute(IDictionary<string, string> values, ChatMessage message, HermesSocketClient client)
|
||||
public async Task Execute(IDictionary<string, string> values, ChannelChatMessage message, HermesSocketClient client)
|
||||
{
|
||||
if (_user == null || _user.VoicesAvailable == null)
|
||||
return;
|
||||
@ -175,7 +154,7 @@ namespace TwitchChatTTS.Chat.Commands
|
||||
var voiceId = _user.VoicesAvailable.FirstOrDefault(v => v.Value.ToLower() == voiceNameLower).Key;
|
||||
|
||||
await client.UpdateTTSVoiceState(voiceId, _state);
|
||||
_logger.Information($"Changed state for TTS voice [voice: {voiceName}][state: {_state}][invoker: {message.Username}][id: {message.UserId}]");
|
||||
_logger.Information($"Changed state for TTS voice [voice: {voiceName}][state: {_state}][invoker: {message.ChatterUserLogin}][id: {message.ChatterUserId}]");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user