ShowMyExtendedStatsCallbackQueryHandler.cs 1.5 KB

123456789101112131415161718192021222324252627282930313233343536
  1. using System;
  2. using System.Linq;
  3. using System.Threading.Tasks;
  4. using MafiaTelegramBot.Controllers;
  5. using MafiaTelegramBot.Game;
  6. using MafiaTelegramBot.Resources;
  7. using Telegram.Bot.Types;
  8. namespace MafiaTelegramBot.Commands.CallbackQueries
  9. {
  10. public class ShowMyExtendedStatsCallbackQueryHandler : CallbackQueryHandler
  11. {
  12. protected override string Command => Callback.ShowMyExtendedStats.ToString();
  13. public override async Task<Message> Execute(Update update)
  14. {
  15. var rolesList = Enum.GetValues(typeof(Roles)).Cast<Roles>().ToList();
  16. rolesList.Remove(Roles.None);
  17. rolesList.Remove(Roles.All);
  18. var message = "";
  19. if (User.Statistics[Roles.All].Games > 0)
  20. foreach (var role in rolesList)
  21. {
  22. if (!User.Statistics.Contains(role) || User.Statistics[role].Games <= 0) continue;
  23. var statsRow = User.Statistics[role];
  24. message += string.Format(strings.role_string, roles.ResourceManager.GetString(role.ToString()), statsRow.Wins, statsRow.Games, (int) (statsRow.GetWinrate()*100)) + '\n';
  25. }
  26. else
  27. message += strings.no_stats_by_roles;
  28. return await MessageController.EditMessage(User.Info,
  29. update.CallbackQuery.Message.MessageId, message, Keyboard.BackButton());
  30. }
  31. public ShowMyExtendedStatsCallbackQueryHandler(Player player) : base(player) { }
  32. }
  33. }