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); }
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(); } }