diff --git a/src/Nullinside.Api.Common/DateTimeExtensions.cs b/src/Nullinside.Api.Common/DateTimeExtensions.cs new file mode 100644 index 0000000..dca21f7 --- /dev/null +++ b/src/Nullinside.Api.Common/DateTimeExtensions.cs @@ -0,0 +1,18 @@ +namespace Nullinside.Api.Common; + +/// +/// Extension methods for . +/// +public static class DateTimeExtensions { + /// + /// Converts unix timestamp to a . + /// + /// The unix timestamp. + /// The DateTime representation of the unix timestamp. + public static DateTime FromUnixTimestamp(double unixTimestamp) { + // Unix timestamp is seconds past epoch + var dateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc); + dateTime = dateTime.AddSeconds(unixTimestamp / 1000d).ToLocalTime(); + return dateTime; + } +} \ No newline at end of file diff --git a/src/Nullinside.Api.Common/Twitch/OnMessageReceivedArgsExtensions.cs b/src/Nullinside.Api.Common/Twitch/OnMessageReceivedArgsExtensions.cs new file mode 100644 index 0000000..9d3a62b --- /dev/null +++ b/src/Nullinside.Api.Common/Twitch/OnMessageReceivedArgsExtensions.cs @@ -0,0 +1,21 @@ +using TwitchLib.Client.Events; + +namespace Nullinside.Api.Common.Twitch; + +/// +/// Extensions for the class to make working with twitch chat messages easier. +/// +public static class OnMessageReceivedArgsExtensions { + /// + /// Gets the timestamp of when the message was sent, in UTC. + /// + /// The event arguments. + /// The if successful, null otherwise. + public static DateTime? GetTimestamp(this OnMessageReceivedArgs e) { + if (double.TryParse(e.ChatMessage.TmiSentTs, out double timestampD)) { + return DateTimeExtensions.FromUnixTimestamp(timestampD); + } + + return null; + } +} \ No newline at end of file