public async Task StreamerHandler(DiscordServer server) { server.StreamerCheckElapsed = 0; foreach (var streamer in server.StreamerList) { var guild = _client.Guilds.FirstOrDefault(x => x.Id == server.ServerId); var streamRole = guild.Roles.FirstOrDefault(x => x.Id == server.StreamingRole); var channel = guild.Channels.FirstOrDefault(x => x.Id == server.StreamPostChannel) as ISocketMessageChannel; var user = guild.Users.FirstOrDefault(x => x.Id == streamer.DiscordId); var stream = await _api.V5.Streams.GetStreamByUserAsync((await _api.V5.Users.GetUserByNameAsync(streamer.TwitchName)).Matches[0].Id); if (stream.Stream == null)//not streaming { if (streamer.Streaming) { streamer.Game = ""; streamer.Streaming = false; if (server.StreamingRole != 0 && streamer.GiveRole && user.Roles.Contains(streamRole)) { await user.RemoveRoleAsync(streamRole); } BotFrame.SaveFile("servers"); } continue; } if (!streamer.Streaming)//not marked { streamer.Streaming = true; if (server.StreamingRole != 0 && streamer.GiveRole && !user.Roles.Contains(streamRole)) { await user.AddRoleAsync(streamRole); } } if (stream.Stream.Channel.Game != streamer.Game) { streamer.Game = stream.Stream.Channel.Game; if (server.StreamPostChannel != 0 && streamer.AutoPost) { BotFrame.StreamPost(channel, user, stream.Stream, (int)streamer.Mention); } BotFrame.SaveFile("servers"); } } }