Beispiel #1
0
        public IHttpActionResult GetGames()
        {
            var games = GameKeeper.GetGameIds();

            var response = new GetGamesResponse()
            {
                games = games
            };

            return(Ok(response));
        }
        private async void OnStreamOnlineEventAsync(object sender, OnStreamOnlineArgs e)
        {
            if (StreamsOnline.Contains(e.Stream.UserId))
            {
                return;
            }

            var gameTemp = new List <string>
            {
                e.Stream.GameId
            };

            GetGamesResponse getGamesResponse = new GetGamesResponse();

            try
            {
                getGamesResponse = await TwApi.Helix.Games.GetGamesAsync(gameTemp);
            }
            catch (Exception ex)
            {
                await Console.Out.WriteLineAsync($"{ex.GetType().Name}: Error at GetGamesResponse. Aborting process. - {ex.Message}");

                return;
            }

            try
            {
                UpdateLiveStreamModelsAsync(e.Stream, getGamesResponse);
            }
            catch (Exception ex)
            {
                await Console.Out.WriteLineAsync($"{ex.GetType().Name}: Error at UpdateLiveStreamModelsAsync. Aborting process. - {ex.Message}");

                return;
            }

            EmbedBuilder eb = CreateStreamerEmbed(StreamModels[e.Stream.UserId]);

            foreach (var x in StreamNotifChannels)
            {
                await x.SendMessageAsync(null, false, eb.Build());
            }
            StreamsOnline.Add(e.Stream.UserId);
            if (StreamsOnline.Contains(e.Stream.UserId))
            {
                await Console.Out.WriteLineAsync($"Successfully add {e.Stream.UserName} to the StreamsOnline list.");
            }
            else
            {
                await Console.Out.WriteLineAsync($"Failed to add {e.Stream.UserName} to the StreamsOnline list.");
            }
        }
Beispiel #3
0
        public async Task <APIGatewayProxyResponse> Get(ILambdaContext context)
        {
            AmazonGameLiftClient amazonClient = new AmazonGameLiftClient(Amazon.RegionEndpoint.USEast1);

            ListAliasesRequest aliasReq = new ListAliasesRequest();

            aliasReq.Name = "WarshopServer";
            Alias aliasRes = (await amazonClient.ListAliasesAsync(aliasReq)).Aliases[0];
            DescribeAliasRequest describeAliasReq = new DescribeAliasRequest();

            describeAliasReq.AliasId = aliasRes.AliasId;
            string fleetId = (await amazonClient.DescribeAliasAsync(describeAliasReq.AliasId)).Alias.RoutingStrategy.FleetId;

            DescribeGameSessionsRequest describeReq = new DescribeGameSessionsRequest();

            describeReq.FleetId      = fleetId;
            describeReq.StatusFilter = GameSessionStatus.ACTIVE;
            DescribeGameSessionsResponse describeRes = await amazonClient.DescribeGameSessionsAsync(describeReq);

            List <GameView> gameViews = describeRes.GameSessions
                                        .FindAll((GameSession g) => g.CurrentPlayerSessionCount < g.MaximumPlayerSessionCount)
                                        .ConvertAll((GameSession g) => new GameView()
            {
                gameSessionId = g.GameSessionId,
                creatorId     = g.CreatorId,
                isPrivate     = true.ToString() == g.GameProperties.Find((GameProperty gp) => gp.Key.Equals("IsPrivate")).Value
            });

            GetGamesResponse response = new GetGamesResponse()
            {
                gameViews = gameViews.ToArray()
            };

            return(new APIGatewayProxyResponse
            {
                StatusCode = (int)HttpStatusCode.OK,
                Body = JsonSerializer.Serialize(response),
                Headers = new Dictionary <string, string> {
                    { "Content-Type", "application/json" }
                }
            });
        }
        private void UpdateLiveStreamModelsAsync(TwitchLib.Api.Helix.Models.Streams.Stream twitchStream,
                                                 GetGamesResponse game)
        {
            string gameName = game.Games.Length != 0 ? game.Games[0].Name : "Unknown";

            StreamModel streamModel = new StreamModel()
            {
                Stream  = twitchStream.UserName,
                Id      = twitchStream.UserId,
                Avatar  = StreamProfileImages[twitchStream.UserId],
                Title   = twitchStream.Title,
                Game    = gameName,
                Viewers = twitchStream.ViewerCount,
                Link    = $"https://www.twitch.tv/{twitchStream.UserName}"
            };

            if (StreamModels.ContainsKey(twitchStream.UserId))
            {
                StreamModels.Remove(twitchStream.UserId);
            }

            StreamModels.Add(twitchStream.UserId, streamModel);
        }
        private async void HandleSetGame(object sender, OnChatCommandReceivedArgs e)
        {
            if (!(sender is TwitchClient senderClient))
            {
                return;
            }

            if (!Extensions.IsHost(senderClient.TwitchUsername))
            {
                return;
            }

            string newGame = e.Command.ArgumentsAsString;

            if (newGame == null || newGame.Length <= 0)
            {
                return;
            }

            GetUsersResponse resp = await LeTwitchBot.BotAPI.Helix.Users.GetUsersAsync(null, new List <string> {
                senderClient.TwitchUsername
            });

            if (resp.Users.Length <= 0)
            {
                return;
            }
            User user = resp.Users[0];

            if (!user.DisplayName.ToLower().Equals(LeTwitchBot.HostChannelName.ToLower()))
            {
                return;
            }

            GetChannelInformationResponse existingInfo = await LeTwitchBot.BotAPI.Helix.Channels.GetChannelInformationAsync(user.Id);

            if (existingInfo.Data.Length <= 0)
            {
                return;
            }
            ChannelInformation info = existingInfo.Data[0];

            GetGamesResponse gameResponse = await LeTwitchBot.BotAPI.Helix.Games.GetGamesAsync(null, new List <string> {
                newGame
            });

            if (gameResponse.Games.Length <= 0)
            {
                LeTwitchBot.TwitchClient.SendHostChannelMessage($"Couldn't locate {newGame} :( :( :( :( ");
                return;
            }

            Game tehGame = gameResponse.Games[0];


            ModifyChannelInformationRequest changeReq = new ModifyChannelInformationRequest();

            changeReq.BroadcasterLanguage = info.BroadcasterLanguage;
            changeReq.Title  = info.Title;
            changeReq.GameId = tehGame.Id;

            await LeTwitchBot.BotAPI.Helix.Channels.ModifyChannelInformationAsync(user.Id, changeReq, LeTwitchBot.Secrets.HostChannelUserToken);


            LeTwitchBot.TwitchClient.SendHostChannelMessage($"Broadcaster {user.DisplayName} will now be playin' {tehGame.Name} Kappa Kappa Kappa Kappa");
        }