public static TelegramBotUser GetTelegramUser(ITelegramBotDbContext db, int adminId, Update update = null, InlineQuery query = null, CallbackQuery cbQuery = null, bool logPoint = true) { using (db) { var from = update?.Message.From ?? query?.From ?? cbQuery?.From; if (from == null) { return(null); } var u = db.TelegramBotUsers.AsNoTracking().FirstOrDefault(x => x.UserId == from.Id) ?? new TelegramBotUser { FirstSeen = DateTime.Now, Points = 0, Debt = 0, IsBotAdmin = false, UserId = from.Id }; u.UserName = from.Username; if (query?.Location != null) { u.Location = $"{query.Location.Latitude},{query.Location.Longitude}"; } u.Name = (from.FirstName + " " + from.LastName).Trim(); if (logPoint) { var where = update != null ? update.Message.Chat.Title ?? "Private" : "Using inline query"; u.LastHeard = DateTime.Now; u.LastState = "talking in " + where; u.Points += update?.Message?.Text?.Length ?? 0 * 10; } u.Save(db); return(u); } }
public static void Save(this TelegramBotSetting set, ITelegramBotDbContext db) { if (set.Id == 0 || !ExistsInDb(set, db)) { db.TelegramBotSettings.Add(set); db.SaveChanges(); set.Id = db.TelegramBotSettings.FirstOrDefault(c => c.Alias == set.Alias).Id; } else { db.TelegramBotSettings.Update(set); db.SaveChanges(); } }
public static void Save(this TelegramBotGroup u, ITelegramBotDbContext db) { if (u.ID == null || !ExistsInDb(u, db)) { db.TelegramBotGroups.Add(u); db.SaveChanges(); u.ID = db.TelegramBotGroups.FirstOrDefault(c => c.GroupId == u.GroupId).ID; } else { db.TelegramBotGroups.Update(u); db.SaveChanges(); } }
public static TelegramBotGroup GetGroup(ITelegramBotDbContext db, Update update = null) { var from = update?.Message?.Chat; if (from == null) { return(null); } var u = db.TelegramBotGroups.FirstOrDefault(c => c.ID == from.Id) ?? new TelegramBotGroup { GroupId = from.Id }; u.Name = from.Title; u.UserName = from.Username; u.Save(db); return(u); }
public static void Save(this TelegramBotUser u, ITelegramBotDbContext db) { if (u.Id == 0 || !ExistsInDb(u, db)) { try { db.TelegramBotUsers.Add(u); db.SaveChanges(); u.Id = db.TelegramBotUsers.FirstOrDefault(c => c.UserId == u.UserId).Id; } catch { } } else { try { // db.Users.Update(u); // db.SaveChanges(); } catch (Exception e) { } } }
public static bool ExistsInDb(this TelegramBotSetting set, ITelegramBotDbContext db) { return(db.TelegramBotSettings.Any(c => c.Id == set.Id)); }
public static void RemoveFromDb(this TelegramBotGroup group, ITelegramBotDbContext db) { db.TelegramBotGroups.Remove(group); db.SaveChanges(); }
public static bool ExistsInDb(this TelegramBotGroup group, ITelegramBotDbContext db) { return(db.TelegramBotGroups.Any(c => c.ID == group.ID)); }
public static void RemoveFromDb(this TelegramBotUser user, ITelegramBotDbContext db) { db.TelegramBotUsers.Remove(user); db.SaveChanges(); }
public static bool ExistsInDb(this TelegramBotUser user, ITelegramBotDbContext db) { return(db.TelegramBotUsers.AsNoTracking().Any(i => i.Id == user.Id)); }
public static TelegramBotUser GetTarget(this Message message, string args, TelegramBotUser sourceUser, ITelegramBotDbContext db) { if (message == null) { return(sourceUser); } if (message?.ReplyToMessage != null) { var m = message.ReplyToMessage; var userid = m.ForwardFrom?.Id ?? m.From.Id; return(db.TelegramBotUsers.AsNoTracking().FirstOrDefault(x => x.UserId == userid) ?? sourceUser); } if (String.IsNullOrWhiteSpace(args)) { return(sourceUser); } //check for a user mention var mention = message?.Entities.FirstOrDefault(x => x.Type == MessageEntityType.Mention); var textmention = message?.Entities.FirstOrDefault(x => x.Type == MessageEntityType.TextMention); long id = 0; var username = ""; if (mention != null) { username = message.Text.Substring(mention.Offset + 1, mention.Length - 1); } else if (textmention != null) { id = textmention.User.Id; } TelegramBotUser result = null; if (!String.IsNullOrEmpty(username)) { result = db.TelegramBotUsers.AsNoTracking().FirstOrDefault( x => x.UserName.ToUpper() == username.ToUpper()); } else if (id != 0) { result = db.TelegramBotUsers.AsNoTracking().FirstOrDefault(x => x.UserId == id); } else { result = db.TelegramBotUsers.AsNoTracking().ToList().FirstOrDefault( x => String.Equals(x.UserId.ToString(), args, StringComparison.InvariantCultureIgnoreCase) || String.Equals(x.UserName, args.Replace("@", ""), StringComparison.InvariantCultureIgnoreCase)); } return(result ?? sourceUser); }
public static void RemoveFromDb(this TelegramBotSetting set, ITelegramBotDbContext db) { db.TelegramBotSettings.Remove(set); db.SaveChanges(); }
public static TelegramBotUser GetTarget(this ITelegramBotDbContext db, CommandEventArgs args) { return(args.Message.GetTarget(args.Parameters, args.SourceUser, db)); }