Generate username from first and last names, and update usernames in

the database.
This commit is contained in:
Basique Evangelist 2019-07-10 19:41:44 +03:00
parent ddf58321ec
commit c1523f69db
Signed by untrusted user: BasiqueEvangelist
GPG Key ID: B370219149301706
2 changed files with 20 additions and 7 deletions

View File

@ -76,16 +76,18 @@ namespace JetKarmaBot.Commands
}); });
log.Debug($"Awarded {(awarding ? 1 : -1)}{awardType.Symbol} to {recipient.Username}"); log.Debug($"Awarded {(awarding ? 1 : -1)}{awardType.Symbol} to {recipient.Username}");
db.SaveChanges(); db.SaveChanges();
var recUserName = db.Users.Find(recipient.Id).Username;
string message = awarding string message = awarding
? string.Format(currentLocale["jetkarmabot.award.awardmessage"], getLocalizedName(awardType, currentLocale), "@" + recipient.Username) ? string.Format(currentLocale["jetkarmabot.award.awardmessage"], getLocalizedName(awardType, currentLocale), recUserName)
: string.Format(currentLocale["jetkarmabot.award.revokemessage"], getLocalizedName(awardType, currentLocale), "@" + recipient.Username); : string.Format(currentLocale["jetkarmabot.award.revokemessage"], getLocalizedName(awardType, currentLocale), recUserName);
var currentCount = db.Awards var currentCount = db.Awards
.Where(aw => aw.ToId == recipient.Id && aw.AwardTypeId == awardType.AwardTypeId && aw.ChatId == args.Message.Chat.Id) .Where(aw => aw.ToId == recipient.Id && aw.AwardTypeId == awardType.AwardTypeId && aw.ChatId == args.Message.Chat.Id)
.Sum(aw => aw.Amount); .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( Client.SendTextMessageAsync(
args.Message.Chat.Id, args.Message.Chat.Id,

View File

@ -57,11 +57,9 @@ namespace JetKarmaBot
return; return;
using (KarmaContext db = Db.GetContext()) using (KarmaContext db = Db.GetContext())
{ {
if (!db.Users.Any(x => x.UserId == messageEventArgs.Message.From.Id)) AddUserToDatabase(db, messageEventArgs.Message.From);
db.Users.Add(new Models.User { UserId = messageEventArgs.Message.From.Id, Username = messageEventArgs.Message.From.Username});
if (messageEventArgs.Message.ReplyToMessage != null) if (messageEventArgs.Message.ReplyToMessage != null)
if (!db.Users.Any(x => x.UserId == messageEventArgs.Message.ReplyToMessage.From.Id)) AddUserToDatabase(db, messageEventArgs.Message.ReplyToMessage.From);
db.Users.Add(new Models.User { UserId = messageEventArgs.Message.ReplyToMessage.From.Id, Username = messageEventArgs.Message.ReplyToMessage.From.Username });
if (!db.Chats.Any(x => x.ChatId == messageEventArgs.Message.Chat.Id)) if (!db.Chats.Any(x => x.ChatId == messageEventArgs.Message.Chat.Id))
db.Chats.Add(new Models.Chat { ChatId = messageEventArgs.Message.Chat.Id }); db.Chats.Add(new Models.Chat { ChatId = messageEventArgs.Message.Chat.Id });
db.SaveChanges(); db.SaveChanges();
@ -72,6 +70,19 @@ namespace JetKarmaBot
Task.Run(() => Commands.Execute(sender, messageEventArgs)); 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) void InitCommands(IContainer c)
{ {
Commands = c.ResolveObject(new ChatCommandRouter(Me)); Commands = c.ResolveObject(new ChatCommandRouter(Me));