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