Example #1
0
        public async Task KnbSinglePlayerCommand(CommandContext ctx)
        {
            await ctx.TriggerTypingAsync();

            var result   = KnbGame.Play();
            var response = FormKnbResultResponse(result, ctx.User.Mention, "Бот");

            try
            {
                await ctx.RespondAsync(response);
            }


            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
Example #2
0
        public async Task KnbMultiPlayerCommand(CommandContext ctx)
        {
            await ctx.TriggerTypingAsync();

            if (KnbState == null)
            {
                KnbState = new KnbState(ctx.Member, new CancellationTokenSource());
                await ctx.RespondAsync($"Player 1 = {KnbState.FirstPlayer.Mention}. Ждем второго игрока {KnbSessionWaitTime} секунд. Для присоединения напишите !knb2p.");

                await Task.Run(() => ResetPlayer(ctx, TimeSpan.FromSeconds(KnbSessionWaitTime), KnbState.Cts.Token));

                return;
            }
            else
            {
                KnbState.Cts.Cancel();

                if (KnbState.FirstPlayer.Id == ctx.Member.Id)
                {
                    await ctx.RespondAsync("Необходим второй игрок! Игровая сессия отменена.");
                }
                else
                {
                    var result   = KnbGame.Play();
                    var response = FormKnbResultResponse(result, KnbState.FirstPlayer.Mention, ctx.User.Mention);

                    try
                    {
                        await ctx.RespondAsync(response);
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e.Message);
                    }
                }

                KnbState = null;
            }
        }