public override async Task <string> HandleAsync(Message message, TymDbContext db) { var reply = new StringBuilder(); var userId = message.From.Id; var user = await db.Users .Where(u => u.UserId == userId) .FirstOrDefaultAsync(); if (user == null) { user = new Models.User() { UserId = userId, ChatId = message.Chat.Id, Name = message.From.FirstName, }; db.Users.Add(user); await db.SaveChangesAsync(); reply.AppendLine($"Hi {message.From.FirstName}!"); reply.AppendLine($"Thank you for starting me. You can start by setting your timezone using /timezone command."); } else { user.ChatId = message.Chat.Id; user.Name = message.From.FirstName; await db.SaveChangesAsync(); reply.AppendLine($"Hi {message.From.FirstName}!"); } return(reply.ToString()); }
public override async Task <string> HandleAsync(Message message, TymDbContext db) { var reply = new StringBuilder(); var userId = message.From.Id; var fromUserId = message.ReplyToMessage?.From.Id; if (fromUserId == null) { reply.AppendLine("Reply to a message using /friend command."); } else { var userFriend = await db.UserFriends .Where(f => f.UserId == userId && f.FriendId == fromUserId) .FirstOrDefaultAsync(); if (userFriend == null) { userFriend = new UserFriend() { FriendId = fromUserId.Value, UserId = userId, }; db.UserFriends.Add(userFriend); await db.SaveChangesAsync(); reply.AppendLine($"{message.ReplyToMessage.From.FirstName} can now see your time."); } } return(reply.ToString()); }
public override async Task <string> HandleAsync(Message message, TymDbContext db) { var textMessage = message.Text.Trim(); var reply = new StringBuilder(); var userId = message.From.Id; var fromUserId = message.ReplyToMessage?.From.Id; var inputZone = textMessage .Replace($"/{BotCommands.Timezone}@{BotService.Bot.Username}", "") .Replace($"/{BotCommands.Timezone}", "") .Trim() .ToLower(); var timezone = DateTimeZoneProviders.Tzdb.Ids.SingleOrDefault(id => id.ToLower() == inputZone); if (timezone == null) { var timezones = DateTimeZoneProviders.Tzdb.Ids .Where(id => id.ToLower().Contains(inputZone)) .Take(10); if (timezones.Count() == 0) { timezones = DateTimeZoneProviders.Tzdb.Ids.Take(10); } reply.AppendLine("Sample usage: /timezone Asia/Tokyo"); reply.AppendLine("\nAre you looking for these timezones?\n"); foreach (var z in timezones) { reply.AppendLine(z); } } else { var user = await db.Users .Where(f => f.UserId == userId) .FirstOrDefaultAsync(); if (user == null) { user = new Models.User() { UserId = userId, TimeZone = timezone, Name = message.From.FirstName, }; db.Users.Add(user); await db.SaveChangesAsync(); } else { user.TimeZone = timezone; user.Name = message.From.FirstName; await db.SaveChangesAsync(); } var zone = DateTimeZoneProviders.Tzdb[timezone]; var clock = SystemClock.Instance.InZone(zone); var now = clock.GetCurrentZonedDateTime(); var pattern = ZonedDateTimePattern.CreateWithInvariantCulture("dddd MMM dd, yyyy h:mm tt z '('o<g>')'", null); reply.AppendLine("Your current time is: "); reply.Append(pattern.Format(now)); } return(reply.ToString()); }