Exemple #1
0
 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();
     }
 }
Exemple #4
0
        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();
 }
Exemple #13
0
 public static TelegramBotUser GetTarget(this ITelegramBotDbContext db, CommandEventArgs args)
 {
     return(args.Message.GetTarget(args.Parameters, args.SourceUser, db));
 }