From 19e71a5afdaf8d1f0f934a019fc7cf3d1754ca95 Mon Sep 17 00:00:00 2001 From: Cameron Date: Tue, 2 Apr 2024 18:19:35 -0500 Subject: [PATCH] minor updates to IRC --- TwitchIrcClient/IRC/IrcConnection.cs | 1 - TwitchIrcClient/IRC/Messages/Privmsg.cs | 21 +++++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/TwitchIrcClient/IRC/IrcConnection.cs b/TwitchIrcClient/IRC/IrcConnection.cs index 3ae086f..34f7af4 100644 --- a/TwitchIrcClient/IRC/IrcConnection.cs +++ b/TwitchIrcClient/IRC/IrcConnection.cs @@ -13,7 +13,6 @@ using System.Threading; using System.Threading.Tasks; using System.Timers; using TwitchIrcClient.IRC.Messages; -using TwitchIrcClient.IRC.Messages; namespace TwitchIrcClient.IRC { diff --git a/TwitchIrcClient/IRC/Messages/Privmsg.cs b/TwitchIrcClient/IRC/Messages/Privmsg.cs index 5fcf219..eb2d3de 100644 --- a/TwitchIrcClient/IRC/Messages/Privmsg.cs +++ b/TwitchIrcClient/IRC/Messages/Privmsg.cs @@ -14,6 +14,27 @@ namespace TwitchIrcClient.IRC.Messages /// public class Privmsg : ReceivedMessage { + /// + /// Contains metadata related to the chat badges in the badges tag. + /// According to Twitch's documentation this should only include info about + /// subscription length, but it also contains prediction info and who knows what else. + /// + public IEnumerable BadgeInfo => TryGetTag("badge-info").Split(','); + /// + /// Contains the total number of months the user has subscribed, even if they aren't + /// subscribed currently. + /// + public int SubscriptionLength + { get + { + //TODO redo this, functional style clearly didn't work here + if (int.TryParse((BadgeInfo.FirstOrDefault( + b => b.StartsWith("SUBSCRIBER", StringComparison.CurrentCultureIgnoreCase)) ?? "") + .Split("/", 2).ElementAtOrDefault(1) ?? "", out int value)) + return value; + return 0; + } + } /// /// List of chat badges. Most badges have only 1 version, but some badges like /// subscriber badges offer different versions of the badge depending on how