Exemplo n.º 1
0
        public void Execute(Message message, ITelegramBotClient telegramBotClient)
        {
            var currentUser = context.Users.FirstOrDefault(x => x.Id == message.From.Id);

            if (currentUser == null)
            {
                telegramBotClient.SendTextMessage(message.Chat.Id, $"{message.From.GetFullName()}, Вы еще не использовали ICQ Meter, поэтому у нас нет Вашей статистики.");
                return;
            }

            var userPosition = context.Users.OrderByDescending(x => x.Icq)
                               .ToList()
                               .Select((user, index) => new { user, index })
                               .Where(pair => pair.user.Id == currentUser.Id)
                               .Select(pair => pair.index + 1)
                               .FirstOrDefault();

            var messageBuilder = new StringBuilder();

            messageBuilder.AppendLine($"Статистика игрока {currentUser.Name}:\n");
            messageBuilder.AppendLine($"Позиция в топе: {userPosition}");
            messageBuilder.AppendLine($"ICQ: {currentUser.Icq}");
            messageBuilder.AppendLine($"Последнее изменение ICQ: {currentUser.LastIcqDelta}");
            messageBuilder.AppendLine($"Всего сыграно: {currentUser.TotalPlayed}");
            messageBuilder.AppendLine($"Всего неудач: {currentUser.TotalFailed}");

            telegramBotClient.SendTextMessage(message.Chat.Id, messageBuilder.ToString());
        }
Exemplo n.º 2
0
        public void Execute(Message message, ITelegramBotClient telegramBotClient)
        {
            var firstDiceResult    = random.Next(1, 7);
            var secondDiceResult   = random.Next(1, 7);
            var currentPlayer      = message.From.GetFullName();
            var isAnyPlayedAlready = context.DiceResults.Any();

            if (isAnyPlayedAlready)
            {
                string winnerMessage;
                var    lastDiceResult = context.DiceResults.Last();
                var    result         = (firstDiceResult + secondDiceResult) - (lastDiceResult.LastFirstDiceResult + lastDiceResult.LastSecondDiceResult);
                if (result < 0)
                {
                    winnerMessage = $"Победитель: {lastDiceResult.LastUserPlayed}!";
                }
                else if (result > 0)
                {
                    winnerMessage = $"Победитель: {currentPlayer}!";
                }
                else
                {
                    winnerMessage = "Ничья!";
                }

                telegramBotClient.SendTextMessage(message.Chat.Id, $"{currentPlayer}, Вы сыграли в игру \"Кости\" против {lastDiceResult.LastUserPlayed}.\n" +
                                                  $"Ваш результат: {firstDiceResult} и {secondDiceResult} против {lastDiceResult.LastFirstDiceResult} и {lastDiceResult.LastSecondDiceResult}.\n" +
                                                  $"{winnerMessage}");

                context.DiceResults.RemoveRange(context.DiceResults.ToList());
            }
            else
            {
                var diceResult = new DiceResult
                {
                    LastUserPlayed       = currentPlayer,
                    LastFirstDiceResult  = firstDiceResult,
                    LastSecondDiceResult = secondDiceResult
                };

                context.DiceResults.Add(diceResult);
                telegramBotClient.SendTextMessage(message.Chat.Id, $"{diceResult.LastUserPlayed}, Вы сыграли в игру \"Кости\".\n" +
                                                  $"Ваш результат: {diceResult.LastFirstDiceResult} и {diceResult.LastSecondDiceResult}!\n" +
                                                  $"Ожидаем результата противника.");
            }

            context.SaveChanges();
        }
Exemplo n.º 3
0
        private void UpdateUser(Database.Models.User user, Message message, ITelegramBotClient telegramBotClient)
        {
            int    icqDelta;
            string changeText;

            if (IsPositive())
            {
                icqDelta   = random.Next(1, 12);
                changeText = "увеличился";
            }
            else
            {
                icqDelta   = random.Next(-9, -1);
                changeText = "уменьшился";
            }

            var newIcq = user.Icq + icqDelta;

            if (newIcq <= 0)
            {
                newIcq = 0;
            }

            user.Icq            = newIcq;
            user.Name           = message.From.GetFullName();
            user.LastIcqDelta   = icqDelta;
            user.TotalPlayed   += 1;
            user.LastTimePlayed = DateTime.Now.ToUniversalTime();

            telegramBotClient.SendTextMessage(message.Chat.Id, $"{user.Name}, Ваш ICQ {changeText} на {Math.Abs(icqDelta)} и теперь равен {user.Icq}, поздравляем!");

            context.Users.Update(user);
        }
Exemplo n.º 4
0
        private void AddNewUser(Message message, ITelegramBotClient telegramBotClient)
        {
            var icq     = random.Next(1, 10);
            var newUser = new Database.Models.User
            {
                Id             = message.From.Id,
                Name           = message.From.GetFullName(),
                Icq            = icq,
                LastIcqDelta   = icq,
                TotalPlayed    = 1,
                TotalFailed    = 0,
                LastTimePlayed = DateTime.Now.ToUniversalTime()
            };

            telegramBotClient.SendTextMessage(message.Chat.Id, $"Добро пожаловать в игру \"ICQ Meter\", {newUser.Name}!");
            telegramBotClient.SendTextMessage(message.Chat.Id, $"{newUser.Name}, Ваш ICQ теперь равен {newUser.Icq}, поздравляем!");

            context.Users.Add(newUser);
        }
Exemplo n.º 5
0
        public void Execute(Message message, ITelegramBotClient telegramBotClient)
        {
            var quote          = bashParser.GetRandomQuote();
            var messageBuilder = new StringBuilder();

            messageBuilder.AppendLine($"Цитата <b>{quote.Number}</b> от <b>{quote.Date}</b>");
            messageBuilder.AppendLine($"Рейтинг: <b>{quote.Rating}</b>");
            messageBuilder.AppendLine();
            messageBuilder.AppendLine(quote.Text);

            telegramBotClient.SendTextMessage(message.Chat.Id, messageBuilder.ToString(), ParseMode.Html);
        }
Exemplo n.º 6
0
        public void Execute(Message message, ITelegramBotClient telegramBotClient)
        {
            var messageBuilder = new StringBuilder("Рейтинг ICQ:\n\n");

            var users = context.Users.OrderByDescending(x => x.Icq).ToList();

            for (int i = 0; i < users.Count; i++)
            {
                messageBuilder.Append($"{i + 1}. {users[i].Name} c ICQ {users[i].Icq}.\n");
            }

            telegramBotClient.SendTextMessage(message.Chat.Id, messageBuilder.ToString());
        }
Exemplo n.º 7
0
        private void PunishUser(Database.Models.User user, Message message, ITelegramBotClient telegramBotClient)
        {
            var icqDelta = random.Next(-6, -2);
            var newIcq   = user.Icq + icqDelta;

            if (newIcq <= 0)
            {
                newIcq = 0;
            }

            user.Icq          = newIcq;
            user.Name         = message.From.GetFullName();
            user.LastIcqDelta = icqDelta;
            user.TotalPlayed += 1;
            user.TotalFailed += 1;

            telegramBotClient.SendTextMessage(message.Chat.Id, $"{user.Name}, Вы уже играли сегодня, поэтому Ваш ICQ уменьшился на {Math.Abs(icqDelta)} и теперь равен {user.Icq}, будьте внимательны!");

            context.Users.Update(user);
        }
Exemplo n.º 8
0
        public void Execute(Message message, ITelegramBotClient telegramBotClient)
        {
            var meme = knowYourMemeParser.GetRandomMeme();

            if (meme.Description.Length > MaxCaptionLength)
            {
                var chunks = Enumerable.Range(0, meme.Description.Length / MaxCaptionLength)
                             .Select(i => meme.Description.Substring(i * MaxCaptionLength, MaxCaptionLength));

                telegramBotClient.SendPhoto(message.Chat.Id, meme.PhotoUrl, $"<b>{meme.Title}</b>{chunks.First()}", ParseMode.Html);

                foreach (var chunk in chunks.Skip(1))
                {
                    telegramBotClient.SendTextMessage(message.Chat.Id, chunk, ParseMode.Html);
                }
            }
            else
            {
                telegramBotClient.SendPhoto(message.Chat.Id, meme.PhotoUrl, $"<b>{meme.Title}</b>{meme.Description}", ParseMode.Html);
            }
        }
 static void SendSorryMessage(this ITelegramBotClient telegramBotClient, long chatId)
 {
     telegramBotClient.SendTextMessage(chatId, "Oops, something bad happened during the request.");
 }