Exemplo n.º 1
0
        protected override async Task ExecuteTwitch(TwitchChatMessage message, CommandContext context, TwitchBot bot)
        {
            CommandParser parser = CommandParser.TryCreate(message.Content);

            string userName;

            try
            {
                userName = parser?.ParseOptionalWord();
            }
            catch (CommandParseError error)
            {
                bot.SendMessage(error.Message, context);
                bot.SendMessage(Usage, context);

                return;
            }

            string fromId;

            if (userName == null)
            {
                fromId = message.Sender.Id.ToString();
            }
            else
            {
                fromId = TwitchUser.GetByName(userName).Id.ToString();
            }

            GetUsersFollowsResponse follow = await TwitchBot.TwitchApi.Helix.Users.GetUsersFollowsAsync(fromId : fromId, toId : TwitchBot.CurrentChannel.Id);

            if (follow.Follows.Length == 0)
            {
                if (userName == null)
                {
                    bot.SendMessage($"@{message.Sender.UserName} You are not following the channel.", context);
                }
                else
                {
                    bot.SendMessage($"@{message.Sender.UserName} {userName} is not following the channel.", context);
                }
            }
            else
            {
                TimeSpan followage = DateTime.UtcNow - follow.Follows[0].FollowedAt;

                if (userName == null)
                {
                    bot.SendMessage($"@{message.Sender.UserName} You have been following the channel for {Helpers.FormatTimeSpan(followage)}.", context);
                }
                else
                {
                    bot.SendMessage($"@{message.Sender.UserName} {userName} has been following the channel for {Helpers.FormatTimeSpan(followage)}.", context);
                }
            }
        }
        public async Task <IList <string> > GetUsersWeFollow()
        {
            if (_followedUsers == null)
            {
                GetUsersFollowsResponse getUsersFollowsResponse =
                    await _twitchApi.Helix.Users.GetUsersFollowsAsync(fromId : _settings.TwitchChannelId);

                var followedIds = getUsersFollowsResponse.Follows.Select(x => x.ToUserId).ToList();
                GetUsersResponse getUsersResponse =
                    await _twitchApi.Helix.Users.GetUsersAsync(followedIds);

                _followedUsers = getUsersResponse.Users.Select(x => x.DisplayName).ToList();
            }
            return(_followedUsers);
        }
Exemplo n.º 3
0
        public void CheckAction(Account user, DateTime lastCheck)
        {
            Console.WriteLine("Checking NewSubTwitchAction");
            TwitchAPI api         = _twitchService.GetApi(user);
            var       currentUser = api.Helix.Users.GetUsersAsync().Result;

            if (currentUser.Users.Length <= 0)
            {
                Console.WriteLine("Current user id not found");
                return;
            }
            GetUsersFollowsResponse userFollows = api.Helix.Users.GetUsersFollowsAsync("", "", 20, "", currentUser.Users[0].Id).Result;
            List <string>           followerIds = new List <string>();

            if (userFollows.Follows.Length <= 0)
            {
                Console.WriteLine("No followers for user " + currentUser.Users[0].DisplayName);
            }
            for (int i = 0; i < userFollows.Follows.Length; i++)
            {
                Console.WriteLine("Follower : " + userFollows.Follows[i].ToUserId);
                if (userFollows.Follows[i].FollowedAt > lastCheck)
                {
                    if (_lastTriggerDate == null)
                    {
                        _lastTriggerDate = userFollows.Follows[i].FollowedAt;
                    }
                    else if (_lastTriggerDate < userFollows.Follows[i].FollowedAt)
                    {
                        _lastTriggerDate = userFollows.Follows[i].FollowedAt;
                    }
                    Console.WriteLine("New !");
                    followerIds.Add(userFollows.Follows[i].FromUserId);
                }
                else
                {
                    Console.WriteLine("Not new");
                }
            }
            if (followerIds.Count > 0)
            {
                _newFollowers = api.Helix.Users.GetUsersAsync(followerIds).Result.Users.ToList();
            }
        }