StartCommand.cs 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. using System.Threading.Tasks;
  2. using MafiaTelegramBot.DataBase;
  3. using Telegram.Bot.Types;
  4. using Telegram.Bot.Types.Enums;
  5. using Telegram.Bot.Types.ReplyMarkups;
  6. namespace MafiaTelegramBot.Models.Commands
  7. {
  8. public class StartCommand : Command
  9. {
  10. protected override string Name => "/start";
  11. public override async Task<Message> Execute(Update update)
  12. {
  13. var chatId = update.Message.Chat.Id;
  14. await Bot.Get().SendChatActionAsync(chatId, ChatAction.Typing);
  15. ReplyKeyboardMarkup keyboard = new(
  16. new[]
  17. {
  18. new KeyboardButton[] {strings.create_game},
  19. new KeyboardButton[] {strings.connect_game},
  20. new KeyboardButton[] {strings.show_profile}
  21. },
  22. true
  23. );
  24. var message = await Bot.SendWithMarkdown2(chatId, strings.start_message, keyboard);
  25. var userId = update.Message.From.Id;
  26. var username = update.Message.From.Username;
  27. username = username != null ?await Task.Run(()=> username
  28. .Replace(".", "\\.")
  29. .Replace("`", "\\`")
  30. .Replace("@", "\\@")
  31. .Replace("#", "\\#")
  32. .Replace("!", "\\!")
  33. .Replace("*", "\\*")
  34. .Replace("_", "\\_")
  35. .Replace("'", "\\'")
  36. .Replace("~", "\\~")
  37. .Replace("[", "\\[")
  38. ):"";
  39. var firstName = update.Message.From.FirstName;
  40. firstName = firstName != null ?await Task.Run(()=> firstName
  41. .Replace(".", "\\.")
  42. .Replace("`", "\\`")
  43. .Replace("@", "\\@")
  44. .Replace("#", "\\#")
  45. .Replace("!", "\\!")
  46. .Replace("*", "\\*")
  47. .Replace("_", "\\_")
  48. .Replace("'", "\\'")
  49. .Replace("~", "\\~")
  50. .Replace("[", "\\[")
  51. ):"";
  52. var lastName = update.Message.From.LastName;
  53. lastName = lastName != null ?await Task.Run(()=> lastName
  54. .Replace(".", "\\.")
  55. .Replace("`", "\\`")
  56. .Replace("@", "\\@")
  57. .Replace("#", "\\#")
  58. .Replace("!", "\\!")
  59. .Replace("*", "\\*")
  60. .Replace("_", "\\_")
  61. .Replace("'", "\\'")
  62. .Replace("~", "\\~")
  63. .Replace("[", "\\[")
  64. ):"";
  65. if (await UserDao.UserExists(userId)) return message;
  66. var user = new DataBase.User
  67. {
  68. Id = userId, ChatId = chatId, Username = username, FirstName = firstName, LastName = lastName
  69. };
  70. await UserDao.Update(user);
  71. return message;
  72. }
  73. }
  74. }