From c1523f69db7896197ed0172e3f366bfd008472a3 Mon Sep 17 00:00:00 2001 From: Basique Evangelist Date: Wed, 10 Jul 2019 19:41:44 +0300 Subject: [PATCH] Generate username from first and last names, and update usernames in the database. --- JetKarmaBot/Commands/AwardCommand.cs | 8 +++++--- JetKarmaBot/JetKarmaBot.cs | 19 +++++++++++++++---- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/JetKarmaBot/Commands/AwardCommand.cs b/JetKarmaBot/Commands/AwardCommand.cs index 20ff2bf..587403a 100644 --- a/JetKarmaBot/Commands/AwardCommand.cs +++ b/JetKarmaBot/Commands/AwardCommand.cs @@ -76,16 +76,18 @@ namespace JetKarmaBot.Commands }); log.Debug($"Awarded {(awarding ? 1 : -1)}{awardType.Symbol} to {recipient.Username}"); db.SaveChanges(); + + var recUserName = db.Users.Find(recipient.Id).Username; string message = awarding - ? string.Format(currentLocale["jetkarmabot.award.awardmessage"], getLocalizedName(awardType, currentLocale), "@" + recipient.Username) - : string.Format(currentLocale["jetkarmabot.award.revokemessage"], getLocalizedName(awardType, currentLocale), "@" + recipient.Username); + ? string.Format(currentLocale["jetkarmabot.award.awardmessage"], getLocalizedName(awardType, currentLocale), recUserName) + : string.Format(currentLocale["jetkarmabot.award.revokemessage"], getLocalizedName(awardType, currentLocale), recUserName); var currentCount = db.Awards .Where(aw => aw.ToId == recipient.Id && aw.AwardTypeId == awardType.AwardTypeId && aw.ChatId == args.Message.Chat.Id) .Sum(aw => aw.Amount); - var response = message + "\n" + String.Format(currentLocale["jetkarmabot.award.statustext"], "@" + recipient.Username, currentCount, awardType.Symbol); + var response = message + "\n" + String.Format(currentLocale["jetkarmabot.award.statustext"], recUserName, currentCount, awardType.Symbol); Client.SendTextMessageAsync( args.Message.Chat.Id, diff --git a/JetKarmaBot/JetKarmaBot.cs b/JetKarmaBot/JetKarmaBot.cs index f0bfe99..47f91c6 100644 --- a/JetKarmaBot/JetKarmaBot.cs +++ b/JetKarmaBot/JetKarmaBot.cs @@ -57,11 +57,9 @@ namespace JetKarmaBot return; using (KarmaContext db = Db.GetContext()) { - if (!db.Users.Any(x => x.UserId == messageEventArgs.Message.From.Id)) - db.Users.Add(new Models.User { UserId = messageEventArgs.Message.From.Id, Username = messageEventArgs.Message.From.Username}); + AddUserToDatabase(db, messageEventArgs.Message.From); if (messageEventArgs.Message.ReplyToMessage != null) - if (!db.Users.Any(x => x.UserId == messageEventArgs.Message.ReplyToMessage.From.Id)) - db.Users.Add(new Models.User { UserId = messageEventArgs.Message.ReplyToMessage.From.Id, Username = messageEventArgs.Message.ReplyToMessage.From.Username }); + AddUserToDatabase(db, messageEventArgs.Message.ReplyToMessage.From); if (!db.Chats.Any(x => x.ChatId == messageEventArgs.Message.Chat.Id)) db.Chats.Add(new Models.Chat { ChatId = messageEventArgs.Message.Chat.Id }); db.SaveChanges(); @@ -72,6 +70,19 @@ namespace JetKarmaBot Task.Run(() => Commands.Execute(sender, messageEventArgs)); } + private void AddUserToDatabase(KarmaContext db, Telegram.Bot.Types.User u) + { + string un; + if (u.Username == null) + un = u.FirstName + (u.LastName != null ? " " + u.LastName : ""); + else + un = "@" + u.Username; + if (!db.Users.Any(x => x.UserId == u.Id)) + db.Users.Add(new Models.User { UserId = u.Id, Username = un}); + else + db.Users.Find(u.Id).Username = un; + } + void InitCommands(IContainer c) { Commands = c.ResolveObject(new ChatCommandRouter(Me));