Example #1
0
        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");
                }
            }
        }