Fixed a lot of compiler warnings. Fixed 7tv connection.
This commit is contained in:
@ -14,9 +14,8 @@ namespace TwitchChatTTS.Chat.Commands
|
|||||||
public class CommandManager : ICommandManager
|
public class CommandManager : ICommandManager
|
||||||
{
|
{
|
||||||
private readonly User _user;
|
private readonly User _user;
|
||||||
private ICommandSelector _commandSelector;
|
private ICommandSelector? _commandSelector;
|
||||||
private readonly HermesSocketClient _hermes;
|
private readonly HermesSocketClient _hermes;
|
||||||
//private readonly TwitchWebsocketClient _twitch;
|
|
||||||
private readonly IGroupPermissionManager _permissionManager;
|
private readonly IGroupPermissionManager _permissionManager;
|
||||||
private readonly IUsagePolicy<long> _permissionPolicy;
|
private readonly IUsagePolicy<long> _permissionPolicy;
|
||||||
private readonly ILogger _logger;
|
private readonly ILogger _logger;
|
||||||
@ -26,7 +25,6 @@ namespace TwitchChatTTS.Chat.Commands
|
|||||||
public CommandManager(
|
public CommandManager(
|
||||||
User user,
|
User user,
|
||||||
[FromKeyedServices("hermes")] SocketClient<WebSocketMessage> hermes,
|
[FromKeyedServices("hermes")] SocketClient<WebSocketMessage> hermes,
|
||||||
//[FromKeyedServices("twitch")] SocketClient<TwitchWebsocketMessage> twitch,
|
|
||||||
IGroupPermissionManager permissionManager,
|
IGroupPermissionManager permissionManager,
|
||||||
IUsagePolicy<long> limitManager,
|
IUsagePolicy<long> limitManager,
|
||||||
ILogger logger
|
ILogger logger
|
||||||
@ -34,7 +32,6 @@ namespace TwitchChatTTS.Chat.Commands
|
|||||||
{
|
{
|
||||||
_user = user;
|
_user = user;
|
||||||
_hermes = (hermes as HermesSocketClient)!;
|
_hermes = (hermes as HermesSocketClient)!;
|
||||||
//_twitch = (twitch as TwitchWebsocketClient)!;
|
|
||||||
_permissionManager = permissionManager;
|
_permissionManager = permissionManager;
|
||||||
_permissionPolicy = limitManager;
|
_permissionPolicy = limitManager;
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
@ -43,7 +40,7 @@ namespace TwitchChatTTS.Chat.Commands
|
|||||||
|
|
||||||
public async Task<ChatCommandResult> Execute(string arg, ChannelChatMessage message, IEnumerable<string> groups)
|
public async Task<ChatCommandResult> Execute(string arg, ChannelChatMessage message, IEnumerable<string> groups)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrWhiteSpace(arg))
|
if (string.IsNullOrWhiteSpace(arg) || _commandSelector == null)
|
||||||
return ChatCommandResult.Unknown;
|
return ChatCommandResult.Unknown;
|
||||||
|
|
||||||
arg = arg.Trim();
|
arg = arg.Trim();
|
||||||
|
@ -36,20 +36,20 @@ namespace TwitchChatTTS.Chat.Emotes
|
|||||||
|
|
||||||
public class EmoteSet
|
public class EmoteSet
|
||||||
{
|
{
|
||||||
public string Id { get; set; }
|
public required string Id { get; set; }
|
||||||
public string Name { get; set; }
|
public required string Name { get; set; }
|
||||||
public int Flags { get; set; }
|
public int Flags { get; set; }
|
||||||
public bool Immutable { get; set; }
|
public bool Immutable { get; set; }
|
||||||
public bool Privileged { get; set; }
|
public bool Privileged { get; set; }
|
||||||
public IList<Emote> Emotes { get; set; }
|
public required IList<Emote> Emotes { get; set; }
|
||||||
public int EmoteCount { get; set; }
|
public int EmoteCount { get; set; }
|
||||||
public int Capacity { get; set; }
|
public int Capacity { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class Emote
|
public class Emote
|
||||||
{
|
{
|
||||||
public string Id { get; set; }
|
public required string Id { get; set; }
|
||||||
public string Name { get; set; }
|
public required string Name { get; set; }
|
||||||
public int Flags { get; set; }
|
public int Flags { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -4,6 +4,7 @@ using CommonSocketLibrary.Abstract;
|
|||||||
using CommonSocketLibrary.Common;
|
using CommonSocketLibrary.Common;
|
||||||
using HermesSocketLibrary.Socket.Data;
|
using HermesSocketLibrary.Socket.Data;
|
||||||
using Serilog;
|
using Serilog;
|
||||||
|
using TwitchChatTTS.Bus;
|
||||||
|
|
||||||
namespace TwitchChatTTS.Hermes.Socket.Handlers
|
namespace TwitchChatTTS.Hermes.Socket.Handlers
|
||||||
{
|
{
|
||||||
@ -11,13 +12,15 @@ namespace TwitchChatTTS.Hermes.Socket.Handlers
|
|||||||
{
|
{
|
||||||
private readonly User _user;
|
private readonly User _user;
|
||||||
private readonly NightbotApiClient _nightbot;
|
private readonly NightbotApiClient _nightbot;
|
||||||
|
private readonly ServiceBusCentral _bus;
|
||||||
private readonly ILogger _logger;
|
private readonly ILogger _logger;
|
||||||
public int OperationCode { get; } = 2;
|
public int OperationCode { get; } = 2;
|
||||||
|
|
||||||
public LoginAckHandler(User user, NightbotApiClient nightbot, ILogger logger)
|
public LoginAckHandler(User user, NightbotApiClient nightbot, ServiceBusCentral bus, ILogger logger)
|
||||||
{
|
{
|
||||||
_user = user;
|
_user = user;
|
||||||
_nightbot = nightbot;
|
_nightbot = nightbot;
|
||||||
|
_bus = bus;
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -51,6 +54,8 @@ namespace TwitchChatTTS.Hermes.Socket.Handlers
|
|||||||
_user.TwitchConnection = message.Connections.FirstOrDefault(c => c.Default && c.Type == "twitch");
|
_user.TwitchConnection = message.Connections.FirstOrDefault(c => c.Default && c.Type == "twitch");
|
||||||
_user.NightbotConnection = message.Connections.FirstOrDefault(c => c.Default && c.Type == "nightbot");
|
_user.NightbotConnection = message.Connections.FirstOrDefault(c => c.Default && c.Type == "nightbot");
|
||||||
|
|
||||||
|
_bus.Send(this, "twitch id", _user.TwitchUserId);
|
||||||
|
|
||||||
var filters = message.WordFilters.Where(f => f.Search != null && f.Replace != null).ToList();
|
var filters = message.WordFilters.Where(f => f.Search != null && f.Replace != null).ToList();
|
||||||
foreach (var filter in filters)
|
foreach (var filter in filters)
|
||||||
{
|
{
|
||||||
|
@ -22,19 +22,19 @@ namespace TwitchChatTTS.Hermes.Socket.Requests
|
|||||||
_logger = logger;
|
_logger = logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Acknowledge(string requestId, string json, IDictionary<string, object>? requestData)
|
public void Acknowledge(string requestId, string? json, IDictionary<string, object>? requestData)
|
||||||
{
|
{
|
||||||
var policy = JsonSerializer.Deserialize<Policy>(json, _options);
|
var policy = JsonSerializer.Deserialize<Policy>(json, _options);
|
||||||
if (policy == null)
|
if (policy == null)
|
||||||
{
|
{
|
||||||
_logger.Warning($"Policy data failed: null");
|
_logger.Warning($"Policy JSON data is null.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var group = _groups.Get(policy.GroupId.ToString());
|
var group = _groups.Get(policy.GroupId.ToString());
|
||||||
if (group == null)
|
if (group == null)
|
||||||
{
|
{
|
||||||
_logger.Warning($"Policy data failed: group id not found [group id: {policy.GroupId}][policy id: {policy.Id}]");
|
_logger.Warning($"Policy data is failed: group id not found [group id: {policy.GroupId}][policy id: {policy.Id}]");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -19,8 +19,14 @@ namespace TwitchChatTTS.Hermes.Socket.Requests
|
|||||||
_logger = logger;
|
_logger = logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Acknowledge(string requestId, string json, IDictionary<string, object>? requestData)
|
public void Acknowledge(string requestId, string? json, IDictionary<string, object>? requestData)
|
||||||
{
|
{
|
||||||
|
if (json == null)
|
||||||
|
{
|
||||||
|
_logger.Warning($"Redeemable action JSON data received is null.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
var action = JsonSerializer.Deserialize<RedeemableAction>(json, _options);
|
var action = JsonSerializer.Deserialize<RedeemableAction>(json, _options);
|
||||||
if (action == null)
|
if (action == null)
|
||||||
{
|
{
|
||||||
|
@ -19,8 +19,14 @@ namespace TwitchChatTTS.Hermes.Socket.Requests
|
|||||||
_logger = logger;
|
_logger = logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Acknowledge(string requestId, string json, IDictionary<string, object>? requestData)
|
public void Acknowledge(string requestId, string? json, IDictionary<string, object>? requestData)
|
||||||
{
|
{
|
||||||
|
if (json == null)
|
||||||
|
{
|
||||||
|
_logger.Warning($"Redemption JSON data received is null.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
var redemption = JsonSerializer.Deserialize<Redemption>(json, _options);
|
var redemption = JsonSerializer.Deserialize<Redemption>(json, _options);
|
||||||
if (redemption == null)
|
if (redemption == null)
|
||||||
{
|
{
|
||||||
|
@ -19,8 +19,14 @@ namespace TwitchChatTTS.Hermes.Socket.Requests
|
|||||||
_logger = logger;
|
_logger = logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Acknowledge(string requestId, string json, IDictionary<string, object>? requestData)
|
public void Acknowledge(string requestId, string? json, IDictionary<string, object>? requestData)
|
||||||
{
|
{
|
||||||
|
if (json == null)
|
||||||
|
{
|
||||||
|
_logger.Warning($"TTS Filter JSON data received is null.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
var filter = JsonSerializer.Deserialize<TTSWordFilter>(json, _options);
|
var filter = JsonSerializer.Deserialize<TTSWordFilter>(json, _options);
|
||||||
if (filter == null)
|
if (filter == null)
|
||||||
{
|
{
|
||||||
@ -40,7 +46,10 @@ namespace TwitchChatTTS.Hermes.Socket.Requests
|
|||||||
re.Match(string.Empty);
|
re.Match(string.Empty);
|
||||||
filter.Regex = re;
|
filter.Regex = re;
|
||||||
}
|
}
|
||||||
catch (Exception) { }
|
catch (Exception)
|
||||||
|
{
|
||||||
|
_logger.Warning($"Failed to generate a Regular Expression using '{filter.Search}' [filter id: {filter.Id}]");
|
||||||
|
}
|
||||||
|
|
||||||
_logger.Debug($"Filter data [filter id: {filter.Id}][search: {filter.Search}][replace: {filter.Replace}]");
|
_logger.Debug($"Filter data [filter id: {filter.Id}][search: {filter.Search}][replace: {filter.Replace}]");
|
||||||
_user.RegexFilters.Add(filter);
|
_user.RegexFilters.Add(filter);
|
||||||
|
@ -14,7 +14,7 @@ namespace TwitchChatTTS.Hermes.Socket.Requests
|
|||||||
_logger = logger;
|
_logger = logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Acknowledge(string requestId, string json, IDictionary<string, object>? requestData)
|
public void Acknowledge(string requestId, string? json, IDictionary<string, object>? requestData)
|
||||||
{
|
{
|
||||||
if (requestData == null)
|
if (requestData == null)
|
||||||
{
|
{
|
||||||
|
@ -14,7 +14,7 @@ namespace TwitchChatTTS.Hermes.Socket.Requests
|
|||||||
_logger = logger;
|
_logger = logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Acknowledge(string requestId, string json, IDictionary<string, object>? requestData)
|
public void Acknowledge(string requestId, string? json, IDictionary<string, object>? requestData)
|
||||||
{
|
{
|
||||||
if (requestData == null)
|
if (requestData == null)
|
||||||
{
|
{
|
||||||
|
@ -18,7 +18,7 @@ namespace TwitchChatTTS.Hermes.Socket.Requests
|
|||||||
_logger = logger;
|
_logger = logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Acknowledge(string requestId, string json, IDictionary<string, object>? requestData)
|
public void Acknowledge(string requestId, string? json, IDictionary<string, object>? requestData)
|
||||||
{
|
{
|
||||||
var data = json.Split('/');
|
var data = json.Split('/');
|
||||||
if (data.Length != 2)
|
if (data.Length != 2)
|
||||||
|
@ -15,7 +15,7 @@ namespace TwitchChatTTS.Hermes.Socket.Requests
|
|||||||
_logger = logger;
|
_logger = logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Acknowledge(string requestId, string json, IDictionary<string, object>? requestData)
|
public void Acknowledge(string requestId, string? json, IDictionary<string, object>? requestData)
|
||||||
{
|
{
|
||||||
if (requestData == null)
|
if (requestData == null)
|
||||||
{
|
{
|
||||||
|
@ -15,7 +15,7 @@ namespace TwitchChatTTS.Hermes.Socket.Requests
|
|||||||
_logger = logger;
|
_logger = logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Acknowledge(string requestId, string json, IDictionary<string, object>? requestData)
|
public void Acknowledge(string requestId, string? json, IDictionary<string, object>? requestData)
|
||||||
{
|
{
|
||||||
if (requestData == null)
|
if (requestData == null)
|
||||||
{
|
{
|
||||||
|
@ -14,7 +14,7 @@ namespace TwitchChatTTS.Hermes.Socket.Requests
|
|||||||
_logger = logger;
|
_logger = logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Acknowledge(string requestId, string json, IDictionary<string, object>? requestData)
|
public void Acknowledge(string requestId, string? json, IDictionary<string, object>? requestData)
|
||||||
{
|
{
|
||||||
if (requestData == null)
|
if (requestData == null)
|
||||||
{
|
{
|
||||||
|
@ -14,7 +14,7 @@ namespace TwitchChatTTS.Hermes.Socket.Requests
|
|||||||
_logger = logger;
|
_logger = logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Acknowledge(string requestId, string json, IDictionary<string, object>? requestData)
|
public void Acknowledge(string requestId, string? json, IDictionary<string, object>? requestData)
|
||||||
{
|
{
|
||||||
if (requestData == null)
|
if (requestData == null)
|
||||||
{
|
{
|
||||||
|
@ -17,8 +17,14 @@ namespace TwitchChatTTS.Hermes.Socket.Requests
|
|||||||
_logger = logger;
|
_logger = logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Acknowledge(string requestId, string json, IDictionary<string, object>? requestData)
|
public void Acknowledge(string requestId, string? json, IDictionary<string, object>? requestData)
|
||||||
{
|
{
|
||||||
|
if (json == null)
|
||||||
|
{
|
||||||
|
_logger.Warning("Chatters JSON is null.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
var chatters = JsonSerializer.Deserialize<IEnumerable<long>>(json, _options);
|
var chatters = JsonSerializer.Deserialize<IEnumerable<long>>(json, _options);
|
||||||
if (chatters == null)
|
if (chatters == null)
|
||||||
{
|
{
|
||||||
|
@ -29,8 +29,14 @@ namespace TwitchChatTTS.Hermes.Socket.Requests
|
|||||||
_logger = logger;
|
_logger = logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Acknowledge(string requestId, string json, IDictionary<string, object>? requestData)
|
public void Acknowledge(string requestId, string? json, IDictionary<string, object>? requestData)
|
||||||
{
|
{
|
||||||
|
if (json == null)
|
||||||
|
{
|
||||||
|
_logger.Error("Connections JSON is null.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
var connections = JsonSerializer.Deserialize<IEnumerable<Connection>>(json, _options);
|
var connections = JsonSerializer.Deserialize<IEnumerable<Connection>>(json, _options);
|
||||||
if (connections == null)
|
if (connections == null)
|
||||||
{
|
{
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
using System.Text.Json;
|
|
||||||
using Serilog;
|
using Serilog;
|
||||||
|
|
||||||
namespace TwitchChatTTS.Hermes.Socket.Requests
|
namespace TwitchChatTTS.Hermes.Socket.Requests
|
||||||
@ -7,17 +6,15 @@ namespace TwitchChatTTS.Hermes.Socket.Requests
|
|||||||
{
|
{
|
||||||
public string Name => "get_default_tts_voice";
|
public string Name => "get_default_tts_voice";
|
||||||
private readonly User _user;
|
private readonly User _user;
|
||||||
private readonly JsonSerializerOptions _options;
|
|
||||||
private readonly ILogger _logger;
|
private readonly ILogger _logger;
|
||||||
|
|
||||||
public GetDefaultTTSVoiceAck(User user, JsonSerializerOptions options, ILogger logger)
|
public GetDefaultTTSVoiceAck(User user, ILogger logger)
|
||||||
{
|
{
|
||||||
_user = user;
|
_user = user;
|
||||||
_options = options;
|
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Acknowledge(string requestId, string json, IDictionary<string, object>? requestData)
|
public void Acknowledge(string requestId, string? json, IDictionary<string, object>? requestData)
|
||||||
{
|
{
|
||||||
string? defaultVoice = json;
|
string? defaultVoice = json;
|
||||||
if (defaultVoice != null)
|
if (defaultVoice != null)
|
||||||
|
@ -19,8 +19,14 @@ namespace TwitchChatTTS.Hermes.Socket.Requests
|
|||||||
_logger = logger;
|
_logger = logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Acknowledge(string requestId, string json, IDictionary<string, object>? requestData)
|
public void Acknowledge(string requestId, string? json, IDictionary<string, object>? requestData)
|
||||||
{
|
{
|
||||||
|
if (json == null)
|
||||||
|
{
|
||||||
|
_logger.Warning("Emotes JSON is null.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
var data = JsonSerializer.Deserialize<IEnumerable<EmoteInfo>>(json, _options);
|
var data = JsonSerializer.Deserialize<IEnumerable<EmoteInfo>>(json, _options);
|
||||||
if (data == null)
|
if (data == null)
|
||||||
{
|
{
|
||||||
|
@ -17,8 +17,14 @@ namespace TwitchChatTTS.Hermes.Socket.Requests
|
|||||||
_logger = logger;
|
_logger = logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Acknowledge(string requestId, string json, IDictionary<string, object>? requestData)
|
public void Acknowledge(string requestId, string? json, IDictionary<string, object>? requestData)
|
||||||
{
|
{
|
||||||
|
if (json == null)
|
||||||
|
{
|
||||||
|
_logger.Warning("TTS Voices JSON is null.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
var enabledTTSVoices = JsonSerializer.Deserialize<IEnumerable<string>>(json, _options);
|
var enabledTTSVoices = JsonSerializer.Deserialize<IEnumerable<string>>(json, _options);
|
||||||
if (enabledTTSVoices == null)
|
if (enabledTTSVoices == null)
|
||||||
{
|
{
|
||||||
|
@ -26,12 +26,18 @@ namespace TwitchChatTTS.Hermes.Socket.Requests
|
|||||||
_logger = logger;
|
_logger = logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Acknowledge(string requestId, string json, IDictionary<string, object>? requestData)
|
public void Acknowledge(string requestId, string? json, IDictionary<string, object>? requestData)
|
||||||
{
|
{
|
||||||
|
if (json == null)
|
||||||
|
{
|
||||||
|
_logger.Error("Failed to load groups & permissions: JSON is null.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
var groupInfo = JsonSerializer.Deserialize<GroupInfo>(json, _options);
|
var groupInfo = JsonSerializer.Deserialize<GroupInfo>(json, _options);
|
||||||
if (groupInfo == null)
|
if (groupInfo == null)
|
||||||
{
|
{
|
||||||
_logger.Error("Failed to load groups & permissions.");
|
_logger.Error("Failed to load groups & permissions: object is null.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -26,12 +26,18 @@ namespace TwitchChatTTS.Hermes.Socket.Requests
|
|||||||
_logger = logger;
|
_logger = logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Acknowledge(string requestId, string json, IDictionary<string, object>? requestData)
|
public void Acknowledge(string requestId, string? json, IDictionary<string, object>? requestData)
|
||||||
{
|
{
|
||||||
|
if (json == null)
|
||||||
|
{
|
||||||
|
_logger.Error($"No policies have been found: JSON is null.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
var policies = JsonSerializer.Deserialize<IEnumerable<Policy>>(json, _options);
|
var policies = JsonSerializer.Deserialize<IEnumerable<Policy>>(json, _options);
|
||||||
if (policies == null || !policies.Any())
|
if (policies == null || !policies.Any())
|
||||||
{
|
{
|
||||||
_logger.Error($"No policies have been found.");
|
_logger.Error($"No policies have been found: object is null or empty.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -23,7 +23,7 @@ namespace TwitchChatTTS.Hermes.Socket.Requests
|
|||||||
_logger = logger;
|
_logger = logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Acknowledge(string requestId, string json, IDictionary<string, object>? requestData)
|
public void Acknowledge(string requestId, string? json, IDictionary<string, object>? requestData)
|
||||||
{
|
{
|
||||||
if (requestData == null)
|
if (requestData == null)
|
||||||
{
|
{
|
||||||
|
@ -23,7 +23,7 @@ namespace TwitchChatTTS.Hermes.Socket.Requests
|
|||||||
_logger = logger;
|
_logger = logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Acknowledge(string requestId, string json, IDictionary<string, object>? requestData)
|
public void Acknowledge(string requestId, string? json, IDictionary<string, object>? requestData)
|
||||||
{
|
{
|
||||||
HermesRequestData? hermesRequestData = null;
|
HermesRequestData? hermesRequestData = null;
|
||||||
if (!string.IsNullOrEmpty(requestId))
|
if (!string.IsNullOrEmpty(requestId))
|
||||||
|
@ -18,7 +18,7 @@ namespace TwitchChatTTS.Hermes.Socket.Requests
|
|||||||
_logger = logger;
|
_logger = logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Acknowledge(string requestId, string json, IDictionary<string, object>? requestData)
|
public void Acknowledge(string requestId, string? json, IDictionary<string, object>? requestData)
|
||||||
{
|
{
|
||||||
var users = JsonSerializer.Deserialize<IDictionary<long, string>>(json, _options);
|
var users = JsonSerializer.Deserialize<IDictionary<long, string>>(json, _options);
|
||||||
if (users == null)
|
if (users == null)
|
||||||
|
@ -19,7 +19,7 @@ namespace TwitchChatTTS.Hermes.Socket.Requests
|
|||||||
_logger = logger;
|
_logger = logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Acknowledge(string requestId, string json, IDictionary<string, object>? requestData)
|
public void Acknowledge(string requestId, string? json, IDictionary<string, object>? requestData)
|
||||||
{
|
{
|
||||||
var voices = JsonSerializer.Deserialize<IEnumerable<TTSVoice>>(json, _options);
|
var voices = JsonSerializer.Deserialize<IEnumerable<TTSVoice>>(json, _options);
|
||||||
if (voices == null)
|
if (voices == null)
|
||||||
|
@ -19,7 +19,7 @@ namespace TwitchChatTTS.Hermes.Socket.Requests
|
|||||||
_logger = logger;
|
_logger = logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Acknowledge(string requestId, string json, IDictionary<string, object>? requestData)
|
public void Acknowledge(string requestId, string? json, IDictionary<string, object>? requestData)
|
||||||
{
|
{
|
||||||
var wordFilters = JsonSerializer.Deserialize<IEnumerable<TTSWordFilter>>(json, _options);
|
var wordFilters = JsonSerializer.Deserialize<IEnumerable<TTSWordFilter>>(json, _options);
|
||||||
if (wordFilters == null)
|
if (wordFilters == null)
|
||||||
|
@ -3,6 +3,6 @@ namespace TwitchChatTTS.Hermes.Socket.Requests
|
|||||||
public interface IRequestAck
|
public interface IRequestAck
|
||||||
{
|
{
|
||||||
string Name { get; }
|
string Name { get; }
|
||||||
void Acknowledge(string requestId, string json, IDictionary<string, object>? requestData);
|
void Acknowledge(string requestId, string? json, IDictionary<string, object>? requestData);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -13,7 +13,7 @@ namespace TwitchChatTTS.Hermes.Socket.Requests
|
|||||||
_logger = logger;
|
_logger = logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Fulfill(string type, string requestId, string data, IDictionary<string, object>? requestData)
|
public void Fulfill(string type, string requestId, string? data, IDictionary<string, object>? requestData)
|
||||||
{
|
{
|
||||||
if (!_acknowledgements.TryGetValue(type, out var ack))
|
if (!_acknowledgements.TryGetValue(type, out var ack))
|
||||||
{
|
{
|
||||||
|
@ -14,7 +14,7 @@ namespace TwitchChatTTS.Hermes.Socket.Requests
|
|||||||
_logger = logger;
|
_logger = logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Acknowledge(string requestId, string json, IDictionary<string, object>? requestData)
|
public void Acknowledge(string requestId, string? json, IDictionary<string, object>? requestData)
|
||||||
{
|
{
|
||||||
if (requestData == null)
|
if (requestData == null)
|
||||||
{
|
{
|
||||||
|
@ -22,7 +22,7 @@ namespace TwitchChatTTS.Hermes.Socket.Requests
|
|||||||
_logger = logger;
|
_logger = logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Acknowledge(string requestId, string json, IDictionary<string, object>? requestData)
|
public void Acknowledge(string requestId, string? json, IDictionary<string, object>? requestData)
|
||||||
{
|
{
|
||||||
var policy = JsonSerializer.Deserialize<Policy>(json, _options);
|
var policy = JsonSerializer.Deserialize<Policy>(json, _options);
|
||||||
if (policy == null)
|
if (policy == null)
|
||||||
|
@ -19,7 +19,7 @@ namespace TwitchChatTTS.Hermes.Socket.Requests
|
|||||||
_logger = logger;
|
_logger = logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Acknowledge(string requestId, string json, IDictionary<string, object>? requestData)
|
public void Acknowledge(string requestId, string? json, IDictionary<string, object>? requestData)
|
||||||
{
|
{
|
||||||
var action = JsonSerializer.Deserialize<RedeemableAction>(json, _options);
|
var action = JsonSerializer.Deserialize<RedeemableAction>(json, _options);
|
||||||
if (action == null)
|
if (action == null)
|
||||||
|
@ -19,8 +19,13 @@ namespace TwitchChatTTS.Hermes.Socket.Requests
|
|||||||
_logger = logger;
|
_logger = logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Acknowledge(string requestId, string json, IDictionary<string, object>? requestData)
|
public void Acknowledge(string requestId, string? json, IDictionary<string, object>? requestData)
|
||||||
{
|
{
|
||||||
|
if (json == null) {
|
||||||
|
_logger.Warning($"Redemption JSON data received is null.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
var redemption = JsonSerializer.Deserialize<Redemption>(json, _options);
|
var redemption = JsonSerializer.Deserialize<Redemption>(json, _options);
|
||||||
if (redemption == null)
|
if (redemption == null)
|
||||||
{
|
{
|
||||||
|
@ -19,7 +19,7 @@ namespace TwitchChatTTS.Hermes.Socket.Requests
|
|||||||
_logger = logger;
|
_logger = logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Acknowledge(string requestId, string json, IDictionary<string, object>? requestData)
|
public void Acknowledge(string requestId, string? json, IDictionary<string, object>? requestData)
|
||||||
{
|
{
|
||||||
var filter = JsonSerializer.Deserialize<TTSWordFilter>(json, _options);
|
var filter = JsonSerializer.Deserialize<TTSWordFilter>(json, _options);
|
||||||
if (filter == null)
|
if (filter == null)
|
||||||
|
@ -14,7 +14,7 @@ namespace TwitchChatTTS.Hermes.Socket.Requests
|
|||||||
_logger = logger;
|
_logger = logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Acknowledge(string requestId, string json, IDictionary<string, object>? requestData)
|
public void Acknowledge(string requestId, string? json, IDictionary<string, object>? requestData)
|
||||||
{
|
{
|
||||||
if (requestData == null)
|
if (requestData == null)
|
||||||
{
|
{
|
||||||
|
@ -14,7 +14,7 @@ namespace TwitchChatTTS.Hermes.Socket.Requests
|
|||||||
_logger = logger;
|
_logger = logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Acknowledge(string requestId, string json, IDictionary<string, object>? requestData)
|
public void Acknowledge(string requestId, string? json, IDictionary<string, object>? requestData)
|
||||||
{
|
{
|
||||||
if (requestData == null)
|
if (requestData == null)
|
||||||
{
|
{
|
||||||
|
@ -14,7 +14,7 @@ namespace TwitchChatTTS.Hermes.Socket.Requests
|
|||||||
_logger = logger;
|
_logger = logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Acknowledge(string requestId, string json, IDictionary<string, object>? requestData)
|
public void Acknowledge(string requestId, string? json, IDictionary<string, object>? requestData)
|
||||||
{
|
{
|
||||||
if (requestData == null)
|
if (requestData == null)
|
||||||
{
|
{
|
||||||
|
@ -4,7 +4,7 @@ namespace TwitchChatTTS.Hermes
|
|||||||
{
|
{
|
||||||
public int MajorVersion { get; set; }
|
public int MajorVersion { get; set; }
|
||||||
public int MinorVersion { get; set; }
|
public int MinorVersion { get; set; }
|
||||||
public string Download { get; set; }
|
public required string Download { get; set; }
|
||||||
public string Changelog { get; set; }
|
public required string Changelog { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -2,8 +2,8 @@ namespace TwitchChatTTS.OBS.Socket.Data
|
|||||||
{
|
{
|
||||||
public class EventMessage
|
public class EventMessage
|
||||||
{
|
{
|
||||||
public string EventType { get; set; }
|
public required string EventType { get; set; }
|
||||||
public int EventIntent { get; set; }
|
public int EventIntent { get; set; }
|
||||||
public Dictionary<string, object> EventData { get; set; }
|
public required Dictionary<string, object> EventData { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -2,13 +2,13 @@ namespace TwitchChatTTS.OBS.Socket.Data
|
|||||||
{
|
{
|
||||||
public class HelloMessage
|
public class HelloMessage
|
||||||
{
|
{
|
||||||
public string ObsWebSocketVersion { get; set; }
|
public required string ObsWebSocketVersion { get; set; }
|
||||||
public int RpcVersion { get; set; }
|
public int RpcVersion { get; set; }
|
||||||
public AuthenticationMessage Authentication { get; set; }
|
public required AuthenticationMessage Authentication { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class AuthenticationMessage {
|
public class AuthenticationMessage {
|
||||||
public string Challenge { get; set; }
|
public required string Challenge { get; set; }
|
||||||
public string Salt { get; set; }
|
public required string Salt { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -2,9 +2,9 @@ namespace TwitchChatTTS.OBS.Socket.Data
|
|||||||
{
|
{
|
||||||
public class OBSSceneItem
|
public class OBSSceneItem
|
||||||
{
|
{
|
||||||
public string SourceUuid { get; set; }
|
public required string SourceUuid { get; set; }
|
||||||
public string SourceName { get; set; }
|
public required string SourceName { get; set; }
|
||||||
public string SourceType { get; set; }
|
public required string SourceType { get; set; }
|
||||||
public int SceneItemId { get; set; }
|
public int SceneItemId { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,5 +1,3 @@
|
|||||||
using Newtonsoft.Json;
|
|
||||||
|
|
||||||
namespace TwitchChatTTS.OBS.Socket.Data
|
namespace TwitchChatTTS.OBS.Socket.Data
|
||||||
{
|
{
|
||||||
public class RequestBatchMessage
|
public class RequestBatchMessage
|
||||||
|
@ -2,7 +2,7 @@ namespace TwitchChatTTS.OBS.Socket.Data
|
|||||||
{
|
{
|
||||||
public class RequestBatchResponseMessage
|
public class RequestBatchResponseMessage
|
||||||
{
|
{
|
||||||
public string RequestId { get; set; }
|
public required string RequestId { get; set; }
|
||||||
public IEnumerable<object> Results { get; set; }
|
public required IEnumerable<object> Results { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -3,7 +3,7 @@ namespace TwitchChatTTS.OBS.Socket.Data
|
|||||||
public class RequestMessage
|
public class RequestMessage
|
||||||
{
|
{
|
||||||
public string RequestType { get; set; }
|
public string RequestType { get; set; }
|
||||||
public string RequestId { get; set; }
|
public string? RequestId { get; set; }
|
||||||
public Dictionary<string, object> RequestData { get; set; }
|
public Dictionary<string, object> RequestData { get; set; }
|
||||||
|
|
||||||
public RequestMessage(string type, string id, Dictionary<string, object> data)
|
public RequestMessage(string type, string id, Dictionary<string, object> data)
|
||||||
|
@ -1,12 +1,10 @@
|
|||||||
using Newtonsoft.Json;
|
|
||||||
|
|
||||||
namespace TwitchChatTTS.OBS.Socket.Data
|
namespace TwitchChatTTS.OBS.Socket.Data
|
||||||
{
|
{
|
||||||
public class RequestResponseMessage
|
public class RequestResponseMessage
|
||||||
{
|
{
|
||||||
public string RequestType { get; set; }
|
public required string RequestType { get; set; }
|
||||||
public string RequestId { get; set; }
|
public required string RequestId { get; set; }
|
||||||
public object RequestStatus { get; set; }
|
public required object RequestStatus { get; set; }
|
||||||
public Dictionary<string, object> ResponseData { get; set; }
|
public required Dictionary<string, object> ResponseData { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -5,7 +5,7 @@ namespace TwitchChatTTS.OBS.Socket.Data
|
|||||||
public int Alignment { get; set; }
|
public int Alignment { get; set; }
|
||||||
public int BoundsAlignment { get; set; }
|
public int BoundsAlignment { get; set; }
|
||||||
public double BoundsHeight { get; set; }
|
public double BoundsHeight { get; set; }
|
||||||
public string BoundsType { get; set; }
|
public required string BoundsType { get; set; }
|
||||||
public double BoundsWidth { get; set; }
|
public double BoundsWidth { get; set; }
|
||||||
public int CropBottom { get; set; }
|
public int CropBottom { get; set; }
|
||||||
public int CropLeft { get; set; }
|
public int CropLeft { get; set; }
|
||||||
|
@ -23,10 +23,17 @@ public class SevenApiClient
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<EmoteSet?> FetchChannelEmoteSet(string twitchId)
|
public async Task<EmoteSet?> FetchChannelEmoteSet(long twitchId)
|
||||||
{
|
{
|
||||||
|
if (twitchId <= 0)
|
||||||
|
{
|
||||||
|
_logger.Warning("No valid Twitch Id was given for 7tv emotes.");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
_logger.Debug($"Fetching 7tv information using Twitch Id [twitch id: {twitchId}]");
|
||||||
var details = await _web.GetJson<UserDetails>($"{API_URL}/users/twitch/" + twitchId);
|
var details = await _web.GetJson<UserDetails>($"{API_URL}/users/twitch/" + twitchId);
|
||||||
return details?.EmoteSet;
|
return details?.EmoteSet;
|
||||||
}
|
}
|
||||||
|
@ -2,10 +2,10 @@ namespace TwitchChatTTS.Seven.Socket.Data
|
|||||||
{
|
{
|
||||||
public class ChangeMapMessage
|
public class ChangeMapMessage
|
||||||
{
|
{
|
||||||
public object Id { get; set; }
|
public required object Id { get; set; }
|
||||||
public byte Kind { get; set; }
|
public byte Kind { get; set; }
|
||||||
public bool? Contextual { get; set; }
|
public bool? Contextual { get; set; }
|
||||||
public object Actor { get; set; }
|
public required object Actor { get; set; }
|
||||||
public IEnumerable<ChangeField>? Added { get; set; }
|
public IEnumerable<ChangeField>? Added { get; set; }
|
||||||
public IEnumerable<ChangeField>? Updated { get; set; }
|
public IEnumerable<ChangeField>? Updated { get; set; }
|
||||||
public IEnumerable<ChangeField>? Removed { get; set; }
|
public IEnumerable<ChangeField>? Removed { get; set; }
|
||||||
@ -14,17 +14,17 @@ namespace TwitchChatTTS.Seven.Socket.Data
|
|||||||
}
|
}
|
||||||
|
|
||||||
public class ChangeField {
|
public class ChangeField {
|
||||||
public string Key { get; set; }
|
public required string Key { get; set; }
|
||||||
public int? Index { get; set; }
|
public int? Index { get; set; }
|
||||||
public bool Nested { get; set; }
|
public bool Nested { get; set; }
|
||||||
public object OldValue { get; set; }
|
public required object OldValue { get; set; }
|
||||||
public object Value { get; set; }
|
public required object Value { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class EmoteField {
|
public class EmoteField {
|
||||||
public string Id { get; set; }
|
public required string Id { get; set; }
|
||||||
public string Name { get; set; }
|
public required string Name { get; set; }
|
||||||
public string ActorId { get; set; }
|
public required string ActorId { get; set; }
|
||||||
public int Flags { get; set; }
|
public int Flags { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -2,7 +2,7 @@ namespace TwitchChatTTS.Seven.Socket.Data
|
|||||||
{
|
{
|
||||||
public class DispatchMessage
|
public class DispatchMessage
|
||||||
{
|
{
|
||||||
public object EventType { get; set; }
|
public required object EventType { get; set; }
|
||||||
public ChangeMapMessage Body { get; set; }
|
public required ChangeMapMessage Body { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -3,6 +3,6 @@ namespace TwitchChatTTS.Seven.Socket.Data
|
|||||||
public class EndOfStreamMessage
|
public class EndOfStreamMessage
|
||||||
{
|
{
|
||||||
public int Code { get; set; }
|
public int Code { get; set; }
|
||||||
public string Message { get; set; }
|
public required string Message { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -2,7 +2,7 @@ namespace TwitchChatTTS.Seven.Socket.Data
|
|||||||
{
|
{
|
||||||
public class ErrorMessage
|
public class ErrorMessage
|
||||||
{
|
{
|
||||||
public Exception Exception { get; set; }
|
public Exception? Exception { get; set; }
|
||||||
public string Message { get; set; }
|
public string? Message { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -2,6 +2,6 @@ namespace TwitchChatTTS.Seven.Socket.Data
|
|||||||
{
|
{
|
||||||
public class ReconnectMessage
|
public class ReconnectMessage
|
||||||
{
|
{
|
||||||
public string Reason { get; set; }
|
public required string Reason { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -2,6 +2,6 @@ namespace TwitchChatTTS.Seven.Socket.Data
|
|||||||
{
|
{
|
||||||
public class ResumeMessage
|
public class ResumeMessage
|
||||||
{
|
{
|
||||||
public string SessionId { get; set; }
|
public required string SessionId { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -3,7 +3,7 @@ namespace TwitchChatTTS.Seven.Socket.Data
|
|||||||
public class SevenHelloMessage
|
public class SevenHelloMessage
|
||||||
{
|
{
|
||||||
public uint HeartbeatInterval { get; set; }
|
public uint HeartbeatInterval { get; set; }
|
||||||
public string SessionId { get; set; }
|
public required string SessionId { get; set; }
|
||||||
public int SubscriptionLimit { get; set; }
|
public int SubscriptionLimit { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -2,7 +2,7 @@ namespace TwitchChatTTS.Seven.Socket.Data
|
|||||||
{
|
{
|
||||||
public class SubscribeMessage
|
public class SubscribeMessage
|
||||||
{
|
{
|
||||||
public string? Type { get; set; }
|
public required string Type { get; set; }
|
||||||
public IDictionary<string, string>? Condition { get; set; }
|
public IDictionary<string, string>? Condition { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -2,7 +2,7 @@ namespace TwitchChatTTS.Seven.Socket.Data
|
|||||||
{
|
{
|
||||||
public class UnsubscribeMessage
|
public class UnsubscribeMessage
|
||||||
{
|
{
|
||||||
public string Type { get; set; }
|
public required string Type { get; set; }
|
||||||
public IDictionary<string, string>? Condition { get; set; }
|
public IDictionary<string, string>? Condition { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -15,7 +15,7 @@ namespace TwitchChatTTS.Seven.Socket.Handlers
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
var code = message.Code - 4000;
|
var code = message.Code - 4000;
|
||||||
await sender.DisconnectAsync(new SocketDisconnectionEventArgs(WebSocketCloseStatus.Empty.ToString(), code.ToString()));
|
await sender.DisconnectAsync(new SocketDisconnectionEventArgs(message.Message, code.ToString()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -17,13 +17,13 @@ namespace TwitchChatTTS.Seven.Socket.Handlers
|
|||||||
|
|
||||||
public Task Execute<Data>(SocketClient<WebSocketMessage> sender, Data data)
|
public Task Execute<Data>(SocketClient<WebSocketMessage> sender, Data data)
|
||||||
{
|
{
|
||||||
if (data is not ErrorMessage message || message == null)
|
if (data is not ErrorMessage message || message == null || message.Exception == null && message.Message == null)
|
||||||
return Task.CompletedTask;
|
return Task.CompletedTask;
|
||||||
|
|
||||||
if (message.Exception != null)
|
if (message.Exception != null)
|
||||||
_logger.Error(message.Exception, message.Message);
|
_logger.Error(message.Exception, message.Message ?? string.Empty);
|
||||||
else
|
else
|
||||||
_logger.Error(message.Message);
|
_logger.Error(message.Message!);
|
||||||
return Task.CompletedTask;
|
return Task.CompletedTask;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,18 +4,18 @@ namespace TwitchChatTTS.Seven
|
|||||||
{
|
{
|
||||||
public class UserDetails
|
public class UserDetails
|
||||||
{
|
{
|
||||||
public string Id { get; set; }
|
public required string Id { get; set; }
|
||||||
public string Platform { get; set; }
|
public required string Platform { get; set; }
|
||||||
public string Username { get; set; }
|
public required string DisplayName { get; set; }
|
||||||
public int EmoteCapacity { get; set; }
|
public int EmoteCapacity { get; set; }
|
||||||
public string EmoteSetId { get; set; }
|
public required string EmoteSetId { get; set; }
|
||||||
public EmoteSet EmoteSet { get; set; }
|
public required EmoteSet EmoteSet { get; set; }
|
||||||
public SevenUser User { get; set; }
|
public required SevenUser User { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class SevenUser
|
public class SevenUser
|
||||||
{
|
{
|
||||||
public string Id { get; set; }
|
public required string Id { get; set; }
|
||||||
public string Username { get; set; }
|
public required string Username { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
29
TTS.cs
29
TTS.cs
@ -15,6 +15,8 @@ using TwitchChatTTS.Chat.Commands;
|
|||||||
using System.Text;
|
using System.Text;
|
||||||
using TwitchChatTTS.Chat.Speech;
|
using TwitchChatTTS.Chat.Speech;
|
||||||
using TwitchChatTTS.Veadotube;
|
using TwitchChatTTS.Veadotube;
|
||||||
|
using TwitchChatTTS.Bus;
|
||||||
|
using System.Reactive.Linq;
|
||||||
|
|
||||||
namespace TwitchChatTTS
|
namespace TwitchChatTTS
|
||||||
{
|
{
|
||||||
@ -36,6 +38,7 @@ namespace TwitchChatTTS
|
|||||||
private readonly IEmoteDatabase _emotes;
|
private readonly IEmoteDatabase _emotes;
|
||||||
private readonly TTSPlayer _player;
|
private readonly TTSPlayer _player;
|
||||||
private readonly AudioPlaybackEngine _playback;
|
private readonly AudioPlaybackEngine _playback;
|
||||||
|
private readonly ServiceBusCentral _bus;
|
||||||
private readonly Configuration _configuration;
|
private readonly Configuration _configuration;
|
||||||
private readonly ILogger _logger;
|
private readonly ILogger _logger;
|
||||||
|
|
||||||
@ -53,6 +56,7 @@ namespace TwitchChatTTS
|
|||||||
IEmoteDatabase emotes,
|
IEmoteDatabase emotes,
|
||||||
TTSPlayer player,
|
TTSPlayer player,
|
||||||
AudioPlaybackEngine playback,
|
AudioPlaybackEngine playback,
|
||||||
|
ServiceBusCentral bus,
|
||||||
Configuration configuration,
|
Configuration configuration,
|
||||||
ILogger logger
|
ILogger logger
|
||||||
)
|
)
|
||||||
@ -68,9 +72,10 @@ namespace TwitchChatTTS
|
|||||||
_commandFactory = commandFactory;
|
_commandFactory = commandFactory;
|
||||||
_commandManager = commandManager;
|
_commandManager = commandManager;
|
||||||
_emotes = emotes;
|
_emotes = emotes;
|
||||||
_configuration = configuration;
|
|
||||||
_player = player;
|
_player = player;
|
||||||
_playback = playback;
|
_playback = playback;
|
||||||
|
_bus = bus;
|
||||||
|
_configuration = configuration;
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -108,6 +113,22 @@ namespace TwitchChatTTS
|
|||||||
_logger.Warning("Failed to check for version updates.");
|
_logger.Warning("Failed to check for version updates.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 7tv
|
||||||
|
var twitchTopic = _bus.GetTopic("twitch id");
|
||||||
|
twitchTopic.FirstAsync().Subscribe(async (data) =>
|
||||||
|
{
|
||||||
|
var twitchId = data.Value?.ToString();
|
||||||
|
if (twitchId == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
var emoteSet = await _sevenApiClient.FetchChannelEmoteSet(_user.TwitchUserId);
|
||||||
|
if (emoteSet != null)
|
||||||
|
_user.SevenEmoteSetId = emoteSet.Id;
|
||||||
|
|
||||||
|
await InitializeEmotes(_sevenApiClient, emoteSet);
|
||||||
|
await InitializeSevenTv();
|
||||||
|
});
|
||||||
|
|
||||||
await InitializeHermesWebsocket();
|
await InitializeHermesWebsocket();
|
||||||
|
|
||||||
_playback.AddOnMixerInputEnded((object? s, SampleProviderEventArgs e) =>
|
_playback.AddOnMixerInputEnded((object? s, SampleProviderEventArgs e) =>
|
||||||
@ -139,14 +160,8 @@ namespace TwitchChatTTS
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var emoteSet = await _sevenApiClient.FetchChannelEmoteSet(_user.TwitchUserId.ToString());
|
|
||||||
if (emoteSet != null)
|
|
||||||
_user.SevenEmoteSetId = emoteSet.Id;
|
|
||||||
|
|
||||||
_commandManager.Update(_commandFactory);
|
_commandManager.Update(_commandFactory);
|
||||||
|
|
||||||
await InitializeEmotes(_sevenApiClient, emoteSet);
|
|
||||||
await InitializeSevenTv();
|
|
||||||
await InitializeObs();
|
await InitializeObs();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5,11 +5,11 @@ namespace TwitchChatTTS.Twitch.Socket.Messages
|
|||||||
public int DurationSeconds { get; set; }
|
public int DurationSeconds { get; set; }
|
||||||
public DateTime StartedAt { get; set; }
|
public DateTime StartedAt { get; set; }
|
||||||
public bool IsAutomatic { get; set; }
|
public bool IsAutomatic { get; set; }
|
||||||
public string BroadcasterUserId { get; set; }
|
public required string BroadcasterUserId { get; set; }
|
||||||
public string BroadcasterUserLogin { get; set; }
|
public required string BroadcasterUserLogin { get; set; }
|
||||||
public string BroadcasterUserName { get; set; }
|
public required string BroadcasterUserName { get; set; }
|
||||||
public string RequesterUserId { get; set; }
|
public required string RequesterUserId { get; set; }
|
||||||
public string RequesterUserLogin { get; set; }
|
public required string RequesterUserLogin { get; set; }
|
||||||
public string RequesterUserName { get; set; }
|
public required string RequesterUserName { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -2,16 +2,16 @@ namespace TwitchChatTTS.Twitch.Socket.Messages
|
|||||||
{
|
{
|
||||||
public class ChannelBanMessage
|
public class ChannelBanMessage
|
||||||
{
|
{
|
||||||
public string UserId { get; set; }
|
public required string UserId { get; set; }
|
||||||
public string UserLogin { get; set; }
|
public required string UserLogin { get; set; }
|
||||||
public string UserName { get; set; }
|
public required string UserName { get; set; }
|
||||||
public string BroadcasterUserId { get; set; }
|
public required string BroadcasterUserId { get; set; }
|
||||||
public string BroadcasterUserLogin { get; set; }
|
public required string BroadcasterUserLogin { get; set; }
|
||||||
public string BroadcasterUserName { get; set; }
|
public required string BroadcasterUserName { get; set; }
|
||||||
public string ModeratorUserId { get; set; }
|
public required string ModeratorUserId { get; set; }
|
||||||
public string ModeratorUserLogin { get; set; }
|
public required string ModeratorUserLogin { get; set; }
|
||||||
public string ModeratorUserName { get; set; }
|
public required string ModeratorUserName { get; set; }
|
||||||
public string Reason { get; set; }
|
public required string Reason { get; set; }
|
||||||
public DateTime BannedAt { get; set; }
|
public DateTime BannedAt { get; set; }
|
||||||
public DateTime? EndsAt { get; set; }
|
public DateTime? EndsAt { get; set; }
|
||||||
public bool IsPermanent { get; set; }
|
public bool IsPermanent { get; set; }
|
||||||
|
@ -2,8 +2,8 @@ namespace TwitchChatTTS.Twitch.Socket.Messages
|
|||||||
{
|
{
|
||||||
public class ChannelChatClearMessage
|
public class ChannelChatClearMessage
|
||||||
{
|
{
|
||||||
public string BroadcasterUserId { get; set; }
|
public required string BroadcasterUserId { get; set; }
|
||||||
public string BroadcasterUserLogin { get; set; }
|
public required string BroadcasterUserLogin { get; set; }
|
||||||
public string BroadcasterUserName { get; set; }
|
public required string BroadcasterUserName { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -2,8 +2,8 @@ namespace TwitchChatTTS.Twitch.Socket.Messages
|
|||||||
{
|
{
|
||||||
public class ChannelChatClearUserMessage : ChannelChatClearMessage
|
public class ChannelChatClearUserMessage : ChannelChatClearMessage
|
||||||
{
|
{
|
||||||
public string TargetUserId { get; set; }
|
public required string TargetUserId { get; set; }
|
||||||
public string TargetUserLogin { get; set; }
|
public required string TargetUserLogin { get; set; }
|
||||||
public string TargetUserName { get; set; }
|
public required string TargetUserName { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -2,6 +2,6 @@ namespace TwitchChatTTS.Twitch.Socket.Messages
|
|||||||
{
|
{
|
||||||
public class ChannelChatDeleteMessage : ChannelChatClearUserMessage
|
public class ChannelChatDeleteMessage : ChannelChatClearUserMessage
|
||||||
{
|
{
|
||||||
public string MessageId { get; set; }
|
public required string MessageId { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -2,16 +2,16 @@ namespace TwitchChatTTS.Twitch.Socket.Messages
|
|||||||
{
|
{
|
||||||
public class ChannelChatMessage
|
public class ChannelChatMessage
|
||||||
{
|
{
|
||||||
public string BroadcasterUserId { get; set; }
|
public required string BroadcasterUserId { get; set; }
|
||||||
public string BroadcasterUserLogin { get; set; }
|
public required string BroadcasterUserLogin { get; set; }
|
||||||
public string BroadcasterUserName { get; set; }
|
public required string BroadcasterUserName { get; set; }
|
||||||
public string ChatterUserId { get; set; }
|
public required string ChatterUserId { get; set; }
|
||||||
public string ChatterUserLogin { get; set; }
|
public required string ChatterUserLogin { get; set; }
|
||||||
public string ChatterUserName { get; set; }
|
public required string ChatterUserName { get; set; }
|
||||||
public string MessageId { get; set; }
|
public required string MessageId { get; set; }
|
||||||
public TwitchChatMessageInfo Message { get; set; }
|
public required TwitchChatMessageInfo Message { get; set; }
|
||||||
public string MessageType { get; set; }
|
public required string MessageType { get; set; }
|
||||||
public TwitchBadge[] Badges { get; set; }
|
public required TwitchBadge[] Badges { get; set; }
|
||||||
public TwitchReplyInfo? Reply { get; set; }
|
public TwitchReplyInfo? Reply { get; set; }
|
||||||
public string? ChannelPointsCustomRewardId { get; set; }
|
public string? ChannelPointsCustomRewardId { get; set; }
|
||||||
public string? ChannelPointsAnimationId { get; set; }
|
public string? ChannelPointsAnimationId { get; set; }
|
||||||
@ -19,14 +19,14 @@ namespace TwitchChatTTS.Twitch.Socket.Messages
|
|||||||
|
|
||||||
public class TwitchChatMessageInfo
|
public class TwitchChatMessageInfo
|
||||||
{
|
{
|
||||||
public string Text { get; set; }
|
public required string Text { get; set; }
|
||||||
public TwitchChatFragment[] Fragments { get; set; }
|
public required TwitchChatFragment[] Fragments { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class TwitchChatFragment
|
public class TwitchChatFragment
|
||||||
{
|
{
|
||||||
public string Type { get; set; }
|
public required string Type { get; set; }
|
||||||
public string Text { get; set; }
|
public required string Text { get; set; }
|
||||||
public TwitchCheerInfo? Cheermote { get; set; }
|
public TwitchCheerInfo? Cheermote { get; set; }
|
||||||
public TwitchEmoteInfo? Emote { get; set; }
|
public TwitchEmoteInfo? Emote { get; set; }
|
||||||
public TwitchMentionInfo? Mention { get; set; }
|
public TwitchMentionInfo? Mention { get; set; }
|
||||||
@ -34,42 +34,42 @@ namespace TwitchChatTTS.Twitch.Socket.Messages
|
|||||||
|
|
||||||
public class TwitchCheerInfo
|
public class TwitchCheerInfo
|
||||||
{
|
{
|
||||||
public string Prefix { get; set; }
|
public required string Prefix { get; set; }
|
||||||
public int Bits { get; set; }
|
public int Bits { get; set; }
|
||||||
public int Tier { get; set; }
|
public int Tier { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class TwitchEmoteInfo
|
public class TwitchEmoteInfo
|
||||||
{
|
{
|
||||||
public string Id { get; set; }
|
public required string Id { get; set; }
|
||||||
public string EmoteSetId { get; set; }
|
public required string EmoteSetId { get; set; }
|
||||||
public string OwnerId { get; set; }
|
public required string OwnerId { get; set; }
|
||||||
public string[] Format { get; set; }
|
public required string[] Format { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class TwitchMentionInfo
|
public class TwitchMentionInfo
|
||||||
{
|
{
|
||||||
public string UserId { get; set; }
|
public required string UserId { get; set; }
|
||||||
public string UserName { get; set; }
|
public required string UserName { get; set; }
|
||||||
public string UserLogin { get; set; }
|
public required string UserLogin { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class TwitchBadge
|
public class TwitchBadge
|
||||||
{
|
{
|
||||||
public string SetId { get; set; }
|
public required string SetId { get; set; }
|
||||||
public string Id { get; set; }
|
public required string Id { get; set; }
|
||||||
public string Info { get; set; }
|
public required string Info { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class TwitchReplyInfo
|
public class TwitchReplyInfo
|
||||||
{
|
{
|
||||||
public string ParentMessageId { get; set; }
|
public required string ParentMessageId { get; set; }
|
||||||
public string ParentMessageBody { get; set; }
|
public required string ParentMessageBody { get; set; }
|
||||||
public string ParentUserId { get; set; }
|
public required string ParentUserId { get; set; }
|
||||||
public string ParentUserName { get; set; }
|
public required string ParentUserName { get; set; }
|
||||||
public string ParentUserLogin { get; set; }
|
public required string ParentUserLogin { get; set; }
|
||||||
public string ThreadMessageId { get; set; }
|
public required string ThreadMessageId { get; set; }
|
||||||
public string ThreadUserName { get; set; }
|
public required string ThreadUserName { get; set; }
|
||||||
public string ThreadUserLogin { get; set; }
|
public required string ThreadUserLogin { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -2,23 +2,23 @@ namespace TwitchChatTTS.Twitch.Socket.Messages
|
|||||||
{
|
{
|
||||||
public class ChannelCustomRedemptionMessage
|
public class ChannelCustomRedemptionMessage
|
||||||
{
|
{
|
||||||
public string BroadcasterUserId { get; set; }
|
public required string BroadcasterUserId { get; set; }
|
||||||
public string BroadcasterUserLogin { get; set; }
|
public required string BroadcasterUserLogin { get; set; }
|
||||||
public string BroadcasterUserName { get; set; }
|
public required string BroadcasterUserName { get; set; }
|
||||||
public string Id { get; set; }
|
public required string Id { get; set; }
|
||||||
public string UserId { get; set; }
|
public required string UserId { get; set; }
|
||||||
public string UserLogin { get; set; }
|
public required string UserLogin { get; set; }
|
||||||
public string UserName { get; set; }
|
public required string UserName { get; set; }
|
||||||
public string Status { get; set; }
|
public required string Status { get; set; }
|
||||||
public DateTime RedeemedAt { get; set; }
|
public DateTime RedeemedAt { get; set; }
|
||||||
public RedemptionReward Reward { get; set; }
|
public required RedemptionReward Reward { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class RedemptionReward
|
public class RedemptionReward
|
||||||
{
|
{
|
||||||
public string Id { get; set; }
|
public required string Id { get; set; }
|
||||||
public string Title { get; set; }
|
public required string Title { get; set; }
|
||||||
public string Prompt { get; set; }
|
public required string Prompt { get; set; }
|
||||||
public int Cost { get; set; }
|
public int Cost { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -2,12 +2,12 @@ namespace TwitchChatTTS.Twitch.Socket.Messages
|
|||||||
{
|
{
|
||||||
public class ChannelFollowMessage
|
public class ChannelFollowMessage
|
||||||
{
|
{
|
||||||
public string BroadcasterUserId { get; set; }
|
public required string BroadcasterUserId { get; set; }
|
||||||
public string BroadcasterUserLogin { get; set; }
|
public required string BroadcasterUserLogin { get; set; }
|
||||||
public string BroadcasterUserName { get; set; }
|
public required string BroadcasterUserName { get; set; }
|
||||||
public string UserId { get; set; }
|
public required string UserId { get; set; }
|
||||||
public string UserLogin { get; set; }
|
public required string UserLogin { get; set; }
|
||||||
public string UserName { get; set; }
|
public required string UserName { get; set; }
|
||||||
public DateTime FollowedAt { get; set; }
|
public DateTime FollowedAt { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -2,12 +2,12 @@ namespace TwitchChatTTS.Twitch.Socket.Messages
|
|||||||
{
|
{
|
||||||
public class ChannelRaidMessage
|
public class ChannelRaidMessage
|
||||||
{
|
{
|
||||||
public string FromBroadcasterUserId { get; set; }
|
public required string FromBroadcasterUserId { get; set; }
|
||||||
public string FromBroadcasterUserLogin { get; set; }
|
public required string FromBroadcasterUserLogin { get; set; }
|
||||||
public string FromBroadcasterUserName { get; set; }
|
public required string FromBroadcasterUserName { get; set; }
|
||||||
public string ToBroadcasterUserId { get; set; }
|
public required string ToBroadcasterUserId { get; set; }
|
||||||
public string ToBroadcasterUserLogin { get; set; }
|
public required string ToBroadcasterUserLogin { get; set; }
|
||||||
public string ToBroadcasterUserName { get; set; }
|
public required string ToBroadcasterUserName { get; set; }
|
||||||
public int Viewers { get; set; }
|
public int Viewers { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -2,7 +2,7 @@ namespace TwitchChatTTS.Twitch.Socket.Messages
|
|||||||
{
|
{
|
||||||
public class ChannelResubscriptionMessage : ChannelSubscriptionData
|
public class ChannelResubscriptionMessage : ChannelSubscriptionData
|
||||||
{
|
{
|
||||||
public TwitchChatMessageInfo Message { get; set; }
|
public required TwitchChatMessageInfo Message { get; set; }
|
||||||
public int CumulativeMonths { get; set; }
|
public int CumulativeMonths { get; set; }
|
||||||
public int StreakMonths { get; set; }
|
public int StreakMonths { get; set; }
|
||||||
public int DurationMonths { get; set; }
|
public int DurationMonths { get; set; }
|
||||||
|
@ -5,10 +5,10 @@ namespace TwitchChatTTS.Twitch.Socket.Messages
|
|||||||
public string? UserId { get; set; }
|
public string? UserId { get; set; }
|
||||||
public string? UserLogin { get; set; }
|
public string? UserLogin { get; set; }
|
||||||
public string? UserName { get; set; }
|
public string? UserName { get; set; }
|
||||||
public string BroadcasterUserId { get; set; }
|
public required string BroadcasterUserId { get; set; }
|
||||||
public string BroadcasterUserLogin { get; set; }
|
public required string BroadcasterUserLogin { get; set; }
|
||||||
public string BroadcasterUserName { get; set; }
|
public required string BroadcasterUserName { get; set; }
|
||||||
public string Tier { get; set; }
|
public required string Tier { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class ChannelSubscriptionMessage : ChannelSubscriptionData
|
public class ChannelSubscriptionMessage : ChannelSubscriptionData
|
||||||
|
@ -2,8 +2,8 @@ namespace TwitchChatTTS.Twitch.Socket.Messages
|
|||||||
{
|
{
|
||||||
public class ChatterMessage
|
public class ChatterMessage
|
||||||
{
|
{
|
||||||
public string UserId { get; set; }
|
public required string UserId { get; set; }
|
||||||
public string UserLogin { get; set; }
|
public required string UserLogin { get; set; }
|
||||||
public string UserName { get; set; }
|
public required string UserName { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -2,14 +2,14 @@ namespace TwitchChatTTS.Twitch.Socket.Messages
|
|||||||
{
|
{
|
||||||
public class NotificationMessage
|
public class NotificationMessage
|
||||||
{
|
{
|
||||||
public NotificationInfo Subscription { get; set; }
|
public required NotificationInfo Subscription { get; set; }
|
||||||
public object Event { get; set; }
|
public required object Event { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class NotificationInfo : EventSubscriptionMessage
|
public class NotificationInfo : EventSubscriptionMessage
|
||||||
{
|
{
|
||||||
public string Id { get; set; }
|
public required string Id { get; set; }
|
||||||
public string Status { get; set; }
|
public required string Status { get; set; }
|
||||||
public DateTime CreatedAt { get; set; }
|
public DateTime CreatedAt { get; set; }
|
||||||
public object? Event { get; set; }
|
public object? Event { get; set; }
|
||||||
}
|
}
|
||||||
|
@ -2,11 +2,11 @@ namespace TwitchChatTTS.Twitch.Socket.Messages
|
|||||||
{
|
{
|
||||||
public class SessionWelcomeMessage
|
public class SessionWelcomeMessage
|
||||||
{
|
{
|
||||||
public TwitchSocketSession Session { get; set; }
|
public required TwitchSocketSession Session { get; set; }
|
||||||
|
|
||||||
public class TwitchSocketSession {
|
public class TwitchSocketSession {
|
||||||
public string Id { get; set; }
|
public required string Id { get; set; }
|
||||||
public string Status { get; set; }
|
public required string Status { get; set; }
|
||||||
public DateTime ConnectedAt { get; set; }
|
public DateTime ConnectedAt { get; set; }
|
||||||
public int? KeepaliveTimeoutSeconds { get; set; }
|
public int? KeepaliveTimeoutSeconds { get; set; }
|
||||||
public string? ReconnectUrl { get; set; }
|
public string? ReconnectUrl { get; set; }
|
||||||
|
@ -2,13 +2,13 @@ namespace TwitchChatTTS.Twitch.Socket.Messages
|
|||||||
{
|
{
|
||||||
public class TwitchWebsocketMessage
|
public class TwitchWebsocketMessage
|
||||||
{
|
{
|
||||||
public TwitchMessageMetadata Metadata { get; set; }
|
public required TwitchMessageMetadata Metadata { get; set; }
|
||||||
public object? Payload { get; set; }
|
public object? Payload { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class TwitchMessageMetadata {
|
public class TwitchMessageMetadata {
|
||||||
public string MessageId { get; set; }
|
public required string MessageId { get; set; }
|
||||||
public string MessageType { get; set; }
|
public required string MessageType { get; set; }
|
||||||
public DateTime MessageTimestamp { get; set; }
|
public DateTime MessageTimestamp { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -20,13 +20,13 @@ namespace TwitchChatTTS.Twitch.Socket
|
|||||||
private bool _disconnected;
|
private bool _disconnected;
|
||||||
private readonly object _lock;
|
private readonly object _lock;
|
||||||
|
|
||||||
public event EventHandler<EventArgs> OnIdentified;
|
public event EventHandler<EventArgs>? OnIdentified;
|
||||||
|
|
||||||
public string UID { get; }
|
public string UID { get; }
|
||||||
public string URL;
|
public string URL;
|
||||||
public bool Connected { get; private set; }
|
public bool Connected { get; private set; }
|
||||||
public bool Identified { get; private set; }
|
public bool Identified { get; private set; }
|
||||||
public string SessionId { get; private set; }
|
public string? SessionId { get; private set; }
|
||||||
public bool ReceivedReconnecting { get; set; }
|
public bool ReceivedReconnecting { get; set; }
|
||||||
public bool TwitchReconnected { get; set; }
|
public bool TwitchReconnected { get; set; }
|
||||||
|
|
||||||
|
16
User.cs
16
User.cs
@ -9,27 +9,27 @@ namespace TwitchChatTTS
|
|||||||
public class User
|
public class User
|
||||||
{
|
{
|
||||||
// Hermes user id
|
// Hermes user id
|
||||||
public string HermesUserId { get; set; }
|
public required string HermesUserId { get; set; }
|
||||||
public string HermesUsername { get; set; }
|
public required string HermesUsername { get; set; }
|
||||||
public long TwitchUserId { get; set; }
|
public long TwitchUserId { get; set; }
|
||||||
public string TwitchUsername { get; set; }
|
public required string TwitchUsername { get; set; }
|
||||||
public string SevenEmoteSetId { get; set; }
|
public required string SevenEmoteSetId { get; set; }
|
||||||
public long? OwnerId { get; set; }
|
public long? OwnerId { get; set; }
|
||||||
|
|
||||||
public Connection? TwitchConnection { get; set; }
|
public Connection? TwitchConnection { get; set; }
|
||||||
public Connection? NightbotConnection { get; set; }
|
public Connection? NightbotConnection { get; set; }
|
||||||
|
|
||||||
public string DefaultTTSVoice { get; set; }
|
public required string DefaultTTSVoice { get; set; }
|
||||||
// voice id -> voice name
|
// voice id -> voice name
|
||||||
public IDictionary<string, string> VoicesAvailable { get => _voicesAvailable; set { _voicesAvailable = value; VoiceNameRegex = GenerateEnabledVoicesRegex(); } }
|
public IDictionary<string, string> VoicesAvailable { get => _voicesAvailable; set { _voicesAvailable = value; VoiceNameRegex = GenerateEnabledVoicesRegex(); } }
|
||||||
// chatter/twitch id -> voice id
|
// chatter/twitch id -> voice id
|
||||||
public IDictionary<long, string> VoicesSelected { get; set; }
|
public required IDictionary<long, string> VoicesSelected { get; set; }
|
||||||
// voice names
|
// voice names
|
||||||
public HashSet<string> VoicesEnabled { get => _voicesEnabled; set { _voicesEnabled = value; VoiceNameRegex = GenerateEnabledVoicesRegex(); } }
|
public HashSet<string> VoicesEnabled { get => _voicesEnabled; set { _voicesEnabled = value; VoiceNameRegex = GenerateEnabledVoicesRegex(); } }
|
||||||
|
|
||||||
public IDictionary<string, RaidInfo> Raids { get; set; } = new Dictionary<string, RaidInfo>();
|
public IDictionary<string, RaidInfo> Raids { get; set; } = new Dictionary<string, RaidInfo>();
|
||||||
public HashSet<long> Chatters { get; set; }
|
public required HashSet<long> Chatters { get; set; }
|
||||||
public IList<TTSWordFilter> RegexFilters { get; set; }
|
public required IList<TTSWordFilter> RegexFilters { get; set; }
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
public Regex? VoiceNameRegex { get; set; }
|
public Regex? VoiceNameRegex { get; set; }
|
||||||
|
|
||||||
|
@ -7,8 +7,8 @@ namespace TwitchChatTTS.Veadotube
|
|||||||
[JsonPropertyName("time")]
|
[JsonPropertyName("time")]
|
||||||
public long Time { get; set; }
|
public long Time { get; set; }
|
||||||
[JsonPropertyName("name")]
|
[JsonPropertyName("name")]
|
||||||
public string Name { get; set; }
|
public required string Name { get; set; }
|
||||||
[JsonPropertyName("server")]
|
[JsonPropertyName("server")]
|
||||||
public string Server { get; set; }
|
public required string Server { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -4,35 +4,35 @@ namespace TwitchChatTTS.Veadotube
|
|||||||
{
|
{
|
||||||
public class VeadoPayloadMessage
|
public class VeadoPayloadMessage
|
||||||
{
|
{
|
||||||
public string Event { get; set; }
|
public required string Event { get; set; }
|
||||||
public string Type { get; set; }
|
public required string Type { get; set; }
|
||||||
public string Id { get; set; }
|
public required string Id { get; set; }
|
||||||
public string Name { get; set; }
|
public string? Name { get; set; }
|
||||||
public object Payload { get; set; }
|
public required object Payload { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class VeadoEventMessage
|
public class VeadoEventMessage
|
||||||
{
|
{
|
||||||
[JsonPropertyName("event")]
|
[JsonPropertyName("event")]
|
||||||
public string Event { get; set; }
|
public required string Event { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class VeadoNodeState {
|
public class VeadoNodeState {
|
||||||
public string Id { get; set; }
|
public required string Id { get; set; }
|
||||||
public string Name { get; set; }
|
public required string Name { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class VeadoNodeStateListMessage : VeadoEventMessage {
|
public class VeadoNodeStateListMessage : VeadoEventMessage {
|
||||||
public IEnumerable<VeadoNodeState> States { get; set; }
|
public required IEnumerable<VeadoNodeState> States { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class VeadoNodeStateMessage : VeadoEventMessage {
|
public class VeadoNodeStateMessage : VeadoEventMessage {
|
||||||
public string State { get; set; }
|
public required string State { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class VeadoNodeThumbMessage {
|
public class VeadoNodeThumbMessage {
|
||||||
public int Width { get; set; }
|
public int Width { get; set; }
|
||||||
public int Height { get; set; }
|
public int Height { get; set; }
|
||||||
public string Png { get; set; }
|
public required string Png { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
Reference in New Issue
Block a user