Exemplo n.º 1
0
        private void EventsPublishingContent(object sender, ContentEventArgs e)
        {
            if (!(e.Content is GameProduct product))
            {
                return;
            }

            var tempGame = product.CreateWritableClone <GameProduct>();
            var game     = TwitchUtils.GameByTitle(product.Name);

            tempGame.TwitchGameId   = game._id;
            tempGame.TwitchImageUrl = game.box.Large;
            if (product.TwitchGameId == tempGame.TwitchGameId)
            {
                return;
            }
            contentRepository.Service.Save(tempGame, SaveAction.Publish | SaveAction.ForceCurrentVersion);
        }
Exemplo n.º 2
0
        internal static Task HandleUserstateMessage(IrcClient client, IrcMessage message)
        {
            string        channelName = message.Parameters[0].Substring(1);
            TwitchChannel channel     = (TwitchChannel)client.Channels[channelName];

            if (message.Tags.ContainsKey("badges") && message.Tags["badges"].Length > 0)
            {
                Dictionary <string, int> badges = TwitchUtils.ParseBadges(message.Tags["badges"]);

                if (badges.ContainsKey("subscriber"))
                {
                    channel.IsSubscriber = true;
                }
            }

            if (message.Tags.ContainsKey("mod") && int.TryParse(message.Tags["mod"], out int isModerator))
            {
                channel.IsModerator = isModerator == 1;
            }

            return(Task.CompletedTask);
        }
Exemplo n.º 3
0
        private void Init(Dictionary <string, string> tags)
        {
            if (tags.ContainsKey("badges"))
            {
                if (tags["badges"].Length > 0)
                {
                    Dictionary <string, int> badges = TwitchUtils.ParseBadges(tags["badges"]);

                    if (badges.ContainsKey("admin"))
                    {
                        IsAdmin = true;
                    }

                    if (badges.ContainsKey("bits"))
                    {
                        IsBitsDonator = true;
                    }

                    if (badges.ContainsKey("broadcaster"))
                    {
                        IsBroadcaster = true;
                    }

                    if (badges.ContainsKey("global_mod"))
                    {
                        IsGlobalMod = true;
                    }

                    if (badges.ContainsKey("moderator"))
                    {
                        IsMod = true;
                    }

                    if (badges.ContainsKey("subscriber"))
                    {
                        IsSubscriber = true;
                    }

                    if (badges.ContainsKey("staff"))
                    {
                        IsStaff = true;
                    }

                    if (badges.ContainsKey("turbo"))
                    {
                        IsTurbo = true;
                    }
                }
            }
            else
            {
                Debug.WriteLine("Missing badges tag in twitch irc message");
            }

            if (tags.ContainsKey("badge-info"))
            {
                if (tags["badge-info"].Length > 0)
                {
                    var badgeInfo = TwitchUtils.ParseBadges(tags["badge-info"]);

                    if (badgeInfo.ContainsKey("subscriber"))
                    {
                        MonthsSubscribed = Convert.ToInt32(badgeInfo["subscriber"]);
                    }
                }
            }
            else
            {
                Debug.WriteLine("Missing badge-info tag in twitch irc message");
            }

            if (tags.ContainsKey("display-name"))
            {
                DisplayName = tags["display-name"];
            }
            else
            {
                Debug.WriteLine("Missing display-name tag in twitch irc message");
            }

            if (tags.ContainsKey("user-id"))
            {
                if (int.TryParse(tags["user-id"], out int userID))
                {
                    ID = userID;
                }
                else
                {
                    Debug.WriteLine("user-id is not an integer.");
                }
            }
            else
            {
                Debug.WriteLine("Missing user-id tag in twitch irc message");
            }
        }
Exemplo n.º 4
0
        internal static Task HandleUsernoticeMessage(IrcClient client, IrcMessage message)
        {
            string        channelName = message.Parameters[0].Substring(1);
            TwitchChannel channel     = (TwitchChannel)client.Channels[channelName];

            if (message.Tags.ContainsKey("login"))
            {
                TwitchUser user = new TwitchUser(client, message.Tags["login"], message.Tags);

                if (message.Tags.ContainsKey("msg-id"))
                {
                    string noticeType = message.Tags["msg-id"];

                    if (noticeType == "sub" | noticeType == "resub")
                    {
                        int totalMonthsSubscribed = Convert.ToInt32(message.Tags["msg-param-cumulative-months"]);
                        TwitchSubscriptionPlan subscriptionPlan = TwitchUtils.ConvertSubscriptionPlan(message.Tags["msg-param-sub-plan"]);
                        int    consecutiveMonthsSubscribed      = 0;
                        string subMessage = null;

                        if (message.Parameters.Length == 2)
                        {
                            subMessage = message.Parameters[1];
                        }

                        if (message.Tags.ContainsKey("msg-param-should-share-streak") && message.Tags["msg-param-should-share-streak"] == "1")
                        {
                            consecutiveMonthsSubscribed = Convert.ToInt32(message.Tags["msg-param-streak-months"]);
                        }

                        var e = new TwitchSubscriptionEventArgs(user, channel, subscriptionPlan, subMessage, totalMonthsSubscribed, consecutiveMonthsSubscribed);
                        ((TwitchIrcClient)client).OnUserSubscribed(e);
                    }
                    else if (noticeType == "subgift" | noticeType == "anonsubgift")
                    {
                        int totalMonthsSubscribed = Convert.ToInt32(message.Tags["msg-param-months"]);
                        TwitchSubscriptionPlan subscriptionPlan = TwitchUtils.ConvertSubscriptionPlan(message.Tags["msg-param-sub-plan"]);
                        int        recipientUserID      = Convert.ToInt32(message.Tags["msg-param-recipient-id"]);;
                        string     recipientUserName    = message.Tags["msg-param-recipient-user-name"];
                        string     recipientDisplayName = message.Tags["msg-param-recipient-display-name"];
                        TwitchUser recipient            = new TwitchUser(client, recipientUserName, recipientDisplayName, recipientUserID);
                        string     subMessage           = null;

                        if (message.Parameters.Length == 2)
                        {
                            subMessage = message.Parameters[1];
                        }

                        if (noticeType == "anonsubgift")
                        {
                            var e = new TwitchSubscriptionEventArgs(null, channel, subscriptionPlan, subMessage, totalMonthsSubscribed, true, recipient, true);
                            ((TwitchIrcClient)client).OnUserSubscribed(e);
                        }
                        else
                        {
                            var e = new TwitchSubscriptionEventArgs(user, channel, subscriptionPlan, subMessage, totalMonthsSubscribed, true, recipient, false);
                            ((TwitchIrcClient)client).OnUserSubscribed(e);
                        }
                    }
                }
                else
                {
                    throw new TwitchProtocolException("USERNOTICE message does not have a msg-id tag.");
                }
            }
            else
            {
                throw new TwitchProtocolException("USERNOTICE message does not have a login tag.");
            }

            return(Task.CompletedTask);
        }