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()); }
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(); }
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); }
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); }
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); }
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()); }
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); }
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."); }