Beispiel #1
0
        public static void InitFollowers()
        {
            List <ChannelFollow> followers = TwitchApi.FetchFollowers(Settings.Default.TwitchUsername).Result;

            bool fileExists = File.Exists(StreamFollowersPath);

            if (!fileExists)
            {
                File.WriteAllText(StreamFollowersPath, JsonConvert.SerializeObject(followers, Formatting.Indented));
                Console.WriteLine($"You have {followers.Count} Followers!");

                StreamFollowers = followers;
                return;
            }

            using (StreamReader sr = new StreamReader(StreamFollowersPath))
            {
                string contents = sr.ReadToEnd();

                sr.Dispose();
                List <ChannelFollow> fileFollowers = JsonConvert.DeserializeObject <List <ChannelFollow> >(contents);

                int followerGain = 0;
                int followerLost = 0;

                foreach (ChannelFollow channelFollow in followers)
                {
                    ChannelFollow fileFollower =
                        fileFollowers.FirstOrDefault(x => x.User.Name == channelFollow.User.Name);

                    if (fileFollower == null)
                    {
                        Console.WriteLine($"New Follower: {channelFollow.User.DisplayName}");
                        followerGain++;
                    }
                }

                foreach (ChannelFollow fileFollower in fileFollowers)
                {
                    ChannelFollow follower = followers.FirstOrDefault(x => x.User.Name == fileFollower.User.Name);

                    if (follower == null)
                    {
                        Console.WriteLine($"Lost Follower: {fileFollower.User.DisplayName}");
                        followerLost++;
                    }
                }

                Console.WriteLine($"You have gained {followerGain} and lost {followerLost} followers!");

                StreamFollowers = followers;

                File.WriteAllText(StreamFollowersPath, JsonConvert.SerializeObject(StreamFollowers, Formatting.Indented));
            }
        }
Beispiel #2
0
        public static async Task UpdateFollowers()
        {
            string username = Settings.Default.TwitchUsername;
            List <ChannelFollow> channelFollows = await TwitchApi.FetchFollowers(username);

            int difference = channelFollows.Count - StreamFollowers.Count;

            Debug.WriteIf(difference != 0, $"Difference: {difference}");

            if (difference > 0)
            {
                // New Follower
                foreach (ChannelFollow channelFollow in channelFollows)
                {
                    ChannelFollow currentFollower =
                        StreamFollowers.FirstOrDefault(x => x.User.Name == channelFollow.User.Name);

                    if (currentFollower == null)
                    {
                        // Not in list
                        Console.WriteLine($"New Follower: {channelFollow.User.DisplayName}");
                        TwitchBot.SendMessage(username, $"Thanks for the follow {channelFollow.User.DisplayName}!");
                    }
                }
            }

            if (difference < 0)
            {
                // Lost Follower
                foreach (ChannelFollow streamFollower in StreamFollowers)
                {
                    ChannelFollow follower =
                        channelFollows.FirstOrDefault(x => x.User.Name == streamFollower.User.Name);

                    if (follower == null)
                    {
                        // No longer in channel
                        Console.WriteLine($"Lost Follower: {streamFollower.User.DisplayName}");
                    }
                }
            }

            if (difference != 0)
            {
                StreamFollowers = channelFollows;

                File.WriteAllText(StreamFollowersPath, JsonConvert.SerializeObject(StreamFollowers, Formatting.Indented));
            }
        }