From 8302b2639bfe1783a26a70f8750895ce56e4a863 Mon Sep 17 00:00:00 2001 From: Cameron Date: Wed, 20 Mar 2024 19:27:24 -0500 Subject: [PATCH] Fixed namespaces --- TwitchIrcClient/IRC/Badge.cs | 2 +- TwitchIrcClient/IRC/Callbacks.cs | 4 ++-- TwitchIrcClient/IRC/IrcConnection.cs | 4 ++-- TwitchIrcClient/IRC/IrcMessageType.cs | 2 +- TwitchIrcClient/IRC/MessageTags.cs | 2 +- TwitchIrcClient/IRC/Messages/ClearChat.cs | 2 +- TwitchIrcClient/IRC/Messages/ClearMsg.cs | 4 ++-- TwitchIrcClient/IRC/Messages/Join.cs | 3 ++- TwitchIrcClient/IRC/Messages/NamReply.cs | 4 ++-- TwitchIrcClient/IRC/Messages/Notice.cs | 2 +- TwitchIrcClient/IRC/Messages/Part.cs | 3 ++- TwitchIrcClient/IRC/Messages/Privmsg.cs | 12 +++++++++++- TwitchIrcClient/IRC/Messages/ReceivedMessage.cs | 4 +++- TwitchIrcClient/IRC/Messages/Roomstate.cs | 8 ++++++-- TwitchIrcClient/IRC/Messages/UserNotice.cs | 2 +- TwitchIrcClient/IRC/RateLimiter.cs | 2 +- TwitchIrcClient/IRC/UserType.cs | 2 +- 17 files changed, 40 insertions(+), 22 deletions(-) diff --git a/TwitchIrcClient/IRC/Badge.cs b/TwitchIrcClient/IRC/Badge.cs index 8d5ec48..f5363b4 100644 --- a/TwitchIrcClient/IRC/Badge.cs +++ b/TwitchIrcClient/IRC/Badge.cs @@ -5,7 +5,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace TwitchLogger.IRC +namespace TwitchIrcClient.IRC { public record struct Badge(string Name, string Version) { diff --git a/TwitchIrcClient/IRC/Callbacks.cs b/TwitchIrcClient/IRC/Callbacks.cs index 5d57212..b0c23c2 100644 --- a/TwitchIrcClient/IRC/Callbacks.cs +++ b/TwitchIrcClient/IRC/Callbacks.cs @@ -3,9 +3,9 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; -using TwitchLogger.IRC.Messages; +using TwitchIrcClient.IRC.Messages; -namespace TwitchLogger.IRC +namespace TwitchIrcClient.IRC { //public class IrcMessageEventArgs(ReceivedMessage message) : EventArgs //{ diff --git a/TwitchIrcClient/IRC/IrcConnection.cs b/TwitchIrcClient/IRC/IrcConnection.cs index df77657..2f66ce8 100644 --- a/TwitchIrcClient/IRC/IrcConnection.cs +++ b/TwitchIrcClient/IRC/IrcConnection.cs @@ -13,9 +13,9 @@ using System.Threading; using System.Threading.Tasks; using System.Timers; using TwitchIrcClient.IRC.Messages; -using TwitchLogger.IRC.Messages; +using TwitchIrcClient.IRC.Messages; -namespace TwitchLogger.IRC +namespace TwitchIrcClient.IRC { /// /// Connects to a single Twitch chat channel via limited IRC implementation. diff --git a/TwitchIrcClient/IRC/IrcMessageType.cs b/TwitchIrcClient/IRC/IrcMessageType.cs index 1d31e6c..9eefa07 100644 --- a/TwitchIrcClient/IRC/IrcMessageType.cs +++ b/TwitchIrcClient/IRC/IrcMessageType.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace TwitchLogger.IRC +namespace TwitchIrcClient.IRC { public enum IrcMessageType { diff --git a/TwitchIrcClient/IRC/MessageTags.cs b/TwitchIrcClient/IRC/MessageTags.cs index 7aae2f5..cc38eef 100644 --- a/TwitchIrcClient/IRC/MessageTags.cs +++ b/TwitchIrcClient/IRC/MessageTags.cs @@ -8,7 +8,7 @@ using System.Security.Cryptography; using System.Text; using System.Threading.Tasks; -namespace TwitchLogger.IRC +namespace TwitchIrcClient.IRC { /// /// Holds key-value pairs of tags. Tag names are case-sensitive and DO NOT parse diff --git a/TwitchIrcClient/IRC/Messages/ClearChat.cs b/TwitchIrcClient/IRC/Messages/ClearChat.cs index ba92d79..6e9ef91 100644 --- a/TwitchIrcClient/IRC/Messages/ClearChat.cs +++ b/TwitchIrcClient/IRC/Messages/ClearChat.cs @@ -5,7 +5,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace TwitchLogger.IRC.Messages +namespace TwitchIrcClient.IRC.Messages { public class ClearChat : ReceivedMessage { diff --git a/TwitchIrcClient/IRC/Messages/ClearMsg.cs b/TwitchIrcClient/IRC/Messages/ClearMsg.cs index df2bea2..517c7c8 100644 --- a/TwitchIrcClient/IRC/Messages/ClearMsg.cs +++ b/TwitchIrcClient/IRC/Messages/ClearMsg.cs @@ -5,7 +5,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace TwitchLogger.IRC.Messages +namespace TwitchIrcClient.IRC.Messages { /// /// Indicates that a message was deleted. @@ -34,7 +34,7 @@ namespace TwitchLogger.IRC.Messages string s = TryGetTag("tmi-sent-ts"); if (!double.TryParse(s, out double d)) return null; - return DateTime.UnixEpoch.AddSeconds(d); + return DateTime.UnixEpoch.AddSeconds(d / 1000); } } public ClearMsg(ReceivedMessage message) : base(message) diff --git a/TwitchIrcClient/IRC/Messages/Join.cs b/TwitchIrcClient/IRC/Messages/Join.cs index e05f9eb..7a35fa7 100644 --- a/TwitchIrcClient/IRC/Messages/Join.cs +++ b/TwitchIrcClient/IRC/Messages/Join.cs @@ -5,11 +5,12 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace TwitchLogger.IRC.Messages +namespace TwitchIrcClient.IRC.Messages { public class Join : ReceivedMessage { public string Username => Prefix?.Split('!', 2).First() ?? ""; + public string ChannelName => Parameters.Single().TrimStart('#'); public Join(ReceivedMessage message) : base(message) { Debug.Assert(MessageType == IrcMessageType.JOIN, diff --git a/TwitchIrcClient/IRC/Messages/NamReply.cs b/TwitchIrcClient/IRC/Messages/NamReply.cs index b1cd951..fffedf4 100644 --- a/TwitchIrcClient/IRC/Messages/NamReply.cs +++ b/TwitchIrcClient/IRC/Messages/NamReply.cs @@ -5,14 +5,14 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace TwitchLogger.IRC.Messages +namespace TwitchIrcClient.IRC.Messages { public class NamReply : ReceivedMessage { public IEnumerable Users => Parameters.Last().Split(' ', StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries); - + public string ChannelName => Parameters.TakeLast(2).First().TrimStart('#'); public NamReply(ReceivedMessage message) : base(message) { Debug.Assert(MessageType == IrcMessageType.RPL_NAMREPLY, diff --git a/TwitchIrcClient/IRC/Messages/Notice.cs b/TwitchIrcClient/IRC/Messages/Notice.cs index abb21e7..a43c47a 100644 --- a/TwitchIrcClient/IRC/Messages/Notice.cs +++ b/TwitchIrcClient/IRC/Messages/Notice.cs @@ -6,7 +6,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace TwitchLogger.IRC.Messages +namespace TwitchIrcClient.IRC.Messages { public class Notice : ReceivedMessage { diff --git a/TwitchIrcClient/IRC/Messages/Part.cs b/TwitchIrcClient/IRC/Messages/Part.cs index bae8337..5b78f95 100644 --- a/TwitchIrcClient/IRC/Messages/Part.cs +++ b/TwitchIrcClient/IRC/Messages/Part.cs @@ -5,11 +5,12 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace TwitchLogger.IRC.Messages +namespace TwitchIrcClient.IRC.Messages { public class Part : ReceivedMessage { public string Username => Prefix?.Split('!', 2).First() ?? ""; + public string ChannelName => Parameters.Single().TrimStart('#'); public Part(ReceivedMessage message) : base(message) { Debug.Assert(MessageType == IrcMessageType.PART, diff --git a/TwitchIrcClient/IRC/Messages/Privmsg.cs b/TwitchIrcClient/IRC/Messages/Privmsg.cs index e8c2480..f8fefdf 100644 --- a/TwitchIrcClient/IRC/Messages/Privmsg.cs +++ b/TwitchIrcClient/IRC/Messages/Privmsg.cs @@ -7,7 +7,7 @@ using System.Text; using System.Text.RegularExpressions; using System.Threading.Tasks; -namespace TwitchLogger.IRC.Messages +namespace TwitchIrcClient.IRC.Messages { /// /// @@ -109,6 +109,15 @@ namespace TwitchLogger.IRC.Messages return value == "1"; } } + public DateTime Timestamp + { get + { + var s = TryGetTag("tmi-sent-ts"); + if (!double.TryParse(s, out double result)) + throw new InvalidDataException(); + return DateTime.UnixEpoch.AddSeconds(result / 1000); + } + } /// /// A Boolean value that indicates whether the user has site-wide commercial /// free mode enabled @@ -157,6 +166,7 @@ namespace TwitchLogger.IRC.Messages /// A Boolean value that determines whether the user that sent the chat is a VIP. /// public bool Vip => MessageTags.ContainsKey("vip"); + public bool FirstMessage => TryGetTag("first-msg") == "1"; public string ChatMessage => Parameters.Last(); public Privmsg(ReceivedMessage message) : base(message) { diff --git a/TwitchIrcClient/IRC/Messages/ReceivedMessage.cs b/TwitchIrcClient/IRC/Messages/ReceivedMessage.cs index 57096bb..ff87128 100644 --- a/TwitchIrcClient/IRC/Messages/ReceivedMessage.cs +++ b/TwitchIrcClient/IRC/Messages/ReceivedMessage.cs @@ -6,7 +6,7 @@ using System.Reflection.Metadata.Ecma335; using System.Text; using System.Threading.Tasks; -namespace TwitchLogger.IRC.Messages +namespace TwitchIrcClient.IRC.Messages { /// /// @@ -109,6 +109,8 @@ namespace TwitchLogger.IRC.Messages return new Part(message); case IrcMessageType.RPL_NAMREPLY: return new NamReply(message); + case IrcMessageType.ROOMSTATE: + return new Roomstate(message); default: return message; } diff --git a/TwitchIrcClient/IRC/Messages/Roomstate.cs b/TwitchIrcClient/IRC/Messages/Roomstate.cs index e462932..508656f 100644 --- a/TwitchIrcClient/IRC/Messages/Roomstate.cs +++ b/TwitchIrcClient/IRC/Messages/Roomstate.cs @@ -6,8 +6,8 @@ using System.Linq; using System.Security.Cryptography.X509Certificates; using System.Text; using System.Threading.Tasks; -using TwitchLogger.IRC; -using TwitchLogger.IRC.Messages; +using TwitchIrcClient.IRC; +using TwitchIrcClient.IRC.Messages; namespace TwitchIrcClient.IRC.Messages { @@ -86,6 +86,10 @@ namespace TwitchIrcClient.IRC.Messages throw new InvalidDataException($"tag \"subs-only\" does not have a proper value: {value}"); } } + /// + /// + /// + public string ChannelName => Parameters.Last().TrimStart('#'); public Roomstate(ReceivedMessage other) : base(other) { Debug.Assert(MessageType == IrcMessageType.ROOMSTATE, diff --git a/TwitchIrcClient/IRC/Messages/UserNotice.cs b/TwitchIrcClient/IRC/Messages/UserNotice.cs index 11d7a94..112cf81 100644 --- a/TwitchIrcClient/IRC/Messages/UserNotice.cs +++ b/TwitchIrcClient/IRC/Messages/UserNotice.cs @@ -8,7 +8,7 @@ using System.Net.WebSockets; using System.Text; using System.Threading.Tasks; -namespace TwitchLogger.IRC.Messages +namespace TwitchIrcClient.IRC.Messages { public class UserNotice : ReceivedMessage { diff --git a/TwitchIrcClient/IRC/RateLimiter.cs b/TwitchIrcClient/IRC/RateLimiter.cs index 4b9ff0c..c459467 100644 --- a/TwitchIrcClient/IRC/RateLimiter.cs +++ b/TwitchIrcClient/IRC/RateLimiter.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace TwitchLogger.IRC +namespace TwitchIrcClient.IRC { /// /// Prevents sending too many messages in a time period. A single rate limiter can diff --git a/TwitchIrcClient/IRC/UserType.cs b/TwitchIrcClient/IRC/UserType.cs index 28cacfa..b97678b 100644 --- a/TwitchIrcClient/IRC/UserType.cs +++ b/TwitchIrcClient/IRC/UserType.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace TwitchLogger.IRC +namespace TwitchIrcClient.IRC { public enum UserType {