Exemplo n.º 1
0
 public static bool IsClient(Telegram.Bot.Types.User user)
 {
     using (var db = GetConnection())
     {
         return(db.Table <Client>().Any(c => c.Id == user.Id));
     }
 }
Exemplo n.º 2
0
 public User(Telegram.Bot.Types.User user)
 {
     Id        = user.Id;
     Username  = user.Username;
     FirstName = user.FirstName;
     LastName  = user.LastName;
 }
Exemplo n.º 3
0
 public static TelegramContext ToContext(this Bot.Types.User user, bool isValid)
 {
     return(new TelegramContext {
         User = user.ToBotUser(),
         Valid = isValid
     });
 }
Exemplo n.º 4
0
        async Task InitTelegram()
        {
            if (TelegramConfig.UseProxy)
            {
                var httpProxy = new WebProxy(TelegramConfig.ProxyUrl)
                {
                    Credentials = new NetworkCredential(TelegramConfig.ProxyLogin, TelegramConfig.ProxyPassword)
                };
                TelegramBot = new TelegramBotClient(TelegramConfig.ApiKey, httpProxy);
            }
            else
            {
                TelegramBot = new TelegramBotClient(TelegramConfig.ApiKey);
            }
            Me = await TelegramBot.GetMeAsync();

            Commands = new ChatCommandRouter(Me.Username, Log);
            Commands.Add(new CreateTopicCommand(Db), "createtopic");
            Commands.Add(new DeleteTopicCommand(Db), "deletetopic");
            Commands.Add(new SubscribeCommand(Db, TelegramBot), "subscribe", "sub");
            Commands.Add(new UnsubscribeCommand(Db, TelegramBot), "unsubscribe", "unsub");
            Commands.Add(new ListCommand(Db, TelegramBot), "list");

            HeartbeatCancellation = new();
            HeartbeatTask         = CheckHeartbeats(HeartbeatCancellation.Token);

            TelegramBot.OnMessage += TelegramMessageReceived;
            TelegramBot.StartReceiving();
        }
Exemplo n.º 5
0
        public static Expense ParseExpenseMessage(string str, Telegram.Bot.Types.User user,
                                                  ExpenseCategoryRepository expCat)
        {
            var inputWithoutSpaces = Regex.Replace(str, @"^\-\s+", "");

            inputWithoutSpaces = inputWithoutSpaces.Replace(".", ",");

            var digitInputValue = Regex.Match(inputWithoutSpaces, @"[0-9]+(\,[0-9]+)?").Value;

            inputWithoutSpaces = inputWithoutSpaces.Replace(digitInputValue, "");
            inputWithoutSpaces = inputWithoutSpaces.Replace(@"-", "");


            var category = Regex.Match(inputWithoutSpaces, @"\D+").Value;
            var money    = (float)Convert.ToDouble(digitInputValue, CultureInfo.CurrentCulture);

            var foundedCategory = expCat.GetByString(category);

            return(new Expense()
            {
                Amount = money,
                CreatedTime = DateTime.Now,
                CategoryId = foundedCategory.Id,
                Id = Guid.NewGuid().GetHashCode(),
                UserId = user.Id,
                Definition = category
            });
        }
Exemplo n.º 6
0
        public User GetUser(Telegram.Bot.Types.User u)
        {
            var user = _db.Set <User>().SingleOrDefault(x => x.Id == u.Id);

            if (user != null)
            {
                if (user.Username != u.Username ||
                    user.Lastname != u.LastName ||
                    user.Firstname != u.FirstName)
                {
                    user.Username = u.Username;

                    user.Lastname  = u.LastName;
                    user.Firstname = u.FirstName;

                    lock (_dbLock)
                    {
                        _db.SaveChanges();
                    }
                }
            }
            else
            {
                user = User.New(u.Id, u.Username, u.FirstName, u.LastName,
                                (u.LanguageCode ?? "").Length > 2 ? u.LanguageCode.Substring(0, 2) : "en");

                lock (_dbLock)
                {
                    _db.Add(user);
                    _db.SaveChanges();
                }
            }

            return(user);
        }
Exemplo n.º 7
0
        private async Task UpdateUser(App app, TelegramUser from, TelegramChat chat,
                                      CancellationToken ct)
        {
            var chatId = GetChatId(chat);

            var username = from.Username;

            if (string.IsNullOrWhiteSpace(username))
            {
                await SendMessageAsync(GetUserNotFoundMessage(app), chatId, ct);

                return;
            }

            var user = await userStore.GetByPropertyAsync(app.Id, TelegramIntegration.UserUsername.Name, username, ct);

            if (user == null)
            {
                await SendMessageAsync(GetUserNotFoundMessage(app), chatId, ct);

                return;
            }

            await userStore.UpsertAsync(app.Id, user.Id, new SetUserProperty
            {
                Property      = TelegramIntegration.UserUsername.Name,
                PropertyValue = chatId,
            }, ct);

            await SendMessageAsync(GetUserLinkedMessage(app), chatId, ct);
        }
Exemplo n.º 8
0
        public static Income ParseIncomeMessage(string str, Telegram.Bot.Types.User user, IncomeCategoryRepository incCat)
        {
            var inputWithoutSpaces = Regex.Replace(str, @"^\+\s+", "");

            inputWithoutSpaces = inputWithoutSpaces.Replace(".", ",");

            var digitInputValue = Regex.Match(inputWithoutSpaces, @"[0-9]+(\,[0-9]+)?").Value;

            inputWithoutSpaces = inputWithoutSpaces.Replace(digitInputValue, "");
            inputWithoutSpaces = inputWithoutSpaces.Replace(@"+", "");


            var category = Regex.Match(inputWithoutSpaces, @"\D+").Value;
            var money    = (float)Convert.ToDouble(digitInputValue, CultureInfo.CurrentCulture);

            var foundedCategory = incCat.GetByString(category);

            return(new Income()
            {
                Amount = money,
                CreatedTime = DateTime.Now,
                CategoryId = 0, //TODO: fix category id
                Id = Guid.NewGuid().GetHashCode(),
                UserId = user.Id,
                Definition = category,
                ExpiresAt = new DateTime(2025, 7, 20)
            });
        }
Exemplo n.º 9
0
        private string CreateUser(Telegram.Bot.Types.User user)
        {
            Console.WriteLine(nameof(CreateUser));

            var checkUser = UserSelect(user);

            if (checkUser != null)
            {
                return(Resources.YouAreRegisteredMessage);
            }

            var newUser = new User
            {
                Id        = user.Id,
                FirstName = user.FirstName,
                LastName  = user.LastName,
                Username  = user.Username
            };

            newUser.Entries.Add(new Entry(newUser.Id));

            dbProvider.UserInsert(newUser);

            return(Resources.WelcomeMessage);
        }
Exemplo n.º 10
0
        public void AddBotLine(string LogText, Telegram.Bot.Types.User User, LogType Type = LogType.logInfo)
        {
            string line;

            line = string.Format("{0}\tID:{1}\tFirst:{2}\tLast:{3}\tUserName:{4}\t<{5}>", Type.ToString("G"), User.Id.ToString(), User.FirstName, User.LastName, User.Username, LogText);
            AddLine(line);
        }
Exemplo n.º 11
0
        public static void UpdateStats(Telegram.Bot.Types.User user)
        {
            var statsForToday = Stats.Set().Where(s => s.Date == DateTime.UtcNow.Date).FirstOrDefault();

            if (statsForToday == null)
            {
                //Create new day
                Stats.Add(new Stats
                {
                    ActiveClicks = 1,
                    Date         = DateTime.UtcNow.Date,
                    UserId       = new List <long>()
                    {
                        user.Id
                    }
                });
            }
            else
            {
                statsForToday.ActiveClicks++;
                if (!statsForToday.UserId.Contains(user.Id))
                {
                    statsForToday.UserId.Add(user.Id);
                }
                ;
            }

            //Save to file
            Stats.Save();
        }
Exemplo n.º 12
0
 public static User ToBotUser(this Bot.Types.User user)
 {
     return(new Dotbot.Models.User {
         Id = user.Id.ToString(),
         Username = user.Username,
         DisplayName = $"{user.FirstName} {user.LastName}"
     });
 }
Exemplo n.º 13
0
 public void SaveOrUpdateUserAsync(TelegramUser telegramUser)
 {
     Task.Run(() =>
     {
         var userRepository = _userRepository;
         var user = userRepository.SingleOrDefault(u => u.UserId == telegramUser.Id);
         userRepository.Update(user ?? telegramUser.Convert());
     });
 }
Exemplo n.º 14
0
        private void WriteBotStatus()
        {
            ITelegramBotClient telegramBotClient = ModulesManager.GetTelegramBotClient();

            Telegram.Bot.Types.User me = telegramBotClient.GetMeAsync().Result;
            Console.WriteLine(DateTime.Now + " - Bot set up!");
            Console.WriteLine($"Id: {me.Id}");
            Console.WriteLine($"Login: {me.Username}");
            Console.WriteLine($"Name: {me.FirstName}");
        }
Exemplo n.º 15
0
        public TelegramManager()
        {
            bot.OnMessage             += Bot_OnMessage;
            bot.OnCallbackQuery       += Bot_OnCallbackQuery;
            bot.OnReceiveError        += Bot_OnReceiveError;
            bot.OnReceiveGeneralError += Bot_OnReceiveGeneralError;

            BotInfo = bot.GetMeAsync().GetAwaiter().GetResult();
            bot.StartReceiving(new UpdateType[] { UpdateType.CallbackQuery, UpdateType.Message });
        }
Exemplo n.º 16
0
 public Trainer Parse(Telegram.Bot.Types.User user)
 {
     return(new Trainer
     {
         Id = user.Id,
         IsBot = user.IsBot,
         LanguageCode = user.LanguageCode,
         Username = user.Username,
         Stats = new Stats()
     });
 }
Exemplo n.º 17
0
        static void Main(string[] args)
        {
            bot = new TelegramBotClient(tKey);
            Telegram.Bot.Types.User me = bot.GetMeAsync().Result;

            bot.OnMessage       += MessageHandler;
            bot.OnCallbackQuery += CallbackHandler;

            bot.StartReceiving();
            Console.ReadLine();
        }
Exemplo n.º 18
0
        public async Task Start()
        {
            _botUser = await botClient.GetMeAsync();

            Console.WriteLine(
                value: $"Hello, World! I am user {_botUser.Id} and my name is {_botUser.FirstName}."
                );

            botClient.OnMessage += Bot_OnMessage;
            botClient.StartReceiving();
        }
Exemplo n.º 19
0
 public static User CreateDbUser(this TgUser user, string language)
 {
     return(new User
     {
         Id = user.Id,
         FirstName = user.FirstName,
         LastName = user.LastName,
         LanguageCode = user.LanguageCode,
         Username = user.LanguageCode,
         Language = language
     });
 }
Exemplo n.º 20
0
        /// <summary>
        /// Получение файлов от пользователя, скачивая их с Telegram
        /// </summary>
        /// <param name="user">Объект пользователя Телеграмма</param>
        /// <param name="fileId">Id файла</param>
        public async Task GetFileFromUser(Telegram.Bot.Types.User user, string fileId)
        {
            var uploadFile = await bot.GetFileAsync(fileId);

            string    link      = @"https://api.telegram.org/file/bot" + apiKey + "/" + uploadFile.FilePath; //ссылка
            WebClient webClient = new WebClient();
            string    path      = uploadFile.FileUniqueId + ".xlsx";

            webClient.DownloadFileAsync(new Uri(link), @"Files\\" + path);

            ParsingExcelToDatabase(path, user);
        }
Exemplo n.º 21
0
        public User(Telegram.Bot.Types.User user)
        {
            if (user == null)
            {
                throw new ArgumentNullException(nameof(user));
            }

            Id        = user.Id;
            FirstName = user.FirstName;
            LastName  = user.LastName;
            Username  = user.Username;
        }
Exemplo n.º 22
0
        private static void Main(string[] args)
        {
            botClient = new TelegramBotClient(FileHelper.LoadBotKey(FileHelper.BotKeyFile));
            Telegram.Bot.Types.User bot = botClient.GetMeAsync().Result;
            //Console.WriteLine($"Hello, World! I am user {bot.Id} and my name is {bot.FirstName}.");

            LoadFromCsv();

            botClient.OnMessage += Bot_OnMessage;
            botClient.StartReceiving();
            Thread.Sleep(int.MaxValue);
        }
Exemplo n.º 23
0
        public async Task <ITelegramBotClient> CreateAsync(TelegramConfig config)
        {
            var client = new TelegramBotClient(config.AccessToken);

            Telegram.Bot.Types.User identity = await client.GetMeAsync();

            _logger.LogInformation(
                "Registered as {} {} (Username = {}, Id = {})",
                identity.FirstName,
                identity.LastName,
                identity.Username,
                identity.Id);

            return(client);
        }
Exemplo n.º 24
0
        internal Task AddStatus(Telegram.Bot.Types.User from, string text)
        {
            lock (_locker)
            {
                if (!_users.ContainsKey(from.Id))
                {
                    _users[from.Id] = new User(from);
                }
                _users[from.Id].Status    = text;
                _users[from.Id].Timestamp = _bot.TimeManager.Now();
                DataManager.UpdateValues(_bot.GoogleSheetsProvider, _bot.Config.GoogleRange, _users.Values);
            }

            return(_bot.Client.SendTextMessageAsync(from.Id, "✅", replyMarkup: Utils.ReplyMarkup));
        }
Exemplo n.º 25
0
        public static Tables.User GenUser(Telegram.Bot.Types.User user, string about = null)
        {
            _ = user ?? throw new ArgumentNullException(nameof(user));


            return(new Tables.User()
            {
                Id = user.Id,
                FirstName = user.FirstName,
                LastName = user.LastName,
                UserName = user.Username,
                Restricted = false,
                Description = about
            });
        }
Exemplo n.º 26
0
 public static void AddUser(string botName, Telegram.Bot.Types.User telegramUser)
 {
     using (var db = GetConnection(botName))
     {
         if (db.Find <BotUser>(telegramUser.Id) == null)
         {
             db.Insert(new BotUser()
             {
                 Id        = telegramUser.Id,
                 UserName  = telegramUser.Username,
                 LastName  = telegramUser.LastName,
                 FirstName = telegramUser.FirstName
             });
         }
     }
 }
Exemplo n.º 27
0
 internal void LogMessage(Telegram.Bot.Types.User from, int messageId, string text, string data)
 {
     RunIsolatedDb(db =>
     {
         var msg = new Message
         {
             CallbackQueryData = data,
             CreateDate        = DateTime.Now,
             FromUser          = true,
             UserId            = GetUser(from).Id,
             TelegramMessageId = messageId,
             Text = text
         };
         db.Add(msg);
         db.SaveChanges();
     });
 }
Exemplo n.º 28
0
        /// <summary>
        /// Try get user from db if exist
        /// or create new instance for next registration procedures
        /// </summary>
        public virtual async Task <IUser> GetOrCreateUser(Telegram.Bot.Types.User user, bool isRegistered = false)
        {
            IUser result = await GetUser(user.Id);

            if (result != null)
            {
                return(result);
            }

            result              = BotManager.Core.Repository.CreateUser();
            result.UserId       = user.Id;
            result.UserName     = user.Username;
            result.IsRegistered = isRegistered;

            _ = await CreateUser(result);

            return(result);
        }
Exemplo n.º 29
0
 public static string UserToString(Telegram.Bot.Types.User chat)
 {
     if (string.IsNullOrEmpty(chat.Username))
     {
         if (string.IsNullOrEmpty(chat.LastName))
         {
             return(chat.FirstName);
         }
         else
         {
             return($"{chat.FirstName} {chat.LastName}");
         }
     }
     else
     {
         return($"@{chat.Username}");
     }
 }
Exemplo n.º 30
0
        public User FromTelegramUser(Telegram.Bot.Types.User user)
        {
            if (user == null)
            {
                return(null);
            }
            User   u    = GetNewUser((ulong)user.Id);
            string name = "";

            if (user.FirstName != null)
            {
                name += user.FirstName;
                if (user.LastName != null)
                {
                    name += " " + user.LastName;
                }
            }
            u.Name     = name;
            u.Username = user.Username;

            return(u);
        }
Exemplo n.º 31
0
        static async Task Main(string[] args)
        {
            BotInfo = await bot.GetMeAsync();

            bot.OnInlineQuery         += PollInlineQuery;
            bot.OnMessage             += PollMessage;
            bot.OnCallbackQuery       += PollAnswerCallback;
            bot.OnReceiveError        += Bot_OnReceiveError;
            bot.OnReceiveGeneralError += Bot_OnReceiveGeneralError;
            await bot.SendTextMessageAsync(PrivateChatID, "Up!");

            Thread.Sleep(10000);
            bot.StartReceiving(new[] { UpdateType.Message, UpdateType.InlineQuery, UpdateType.CallbackQuery, UpdateType.EditedMessage });
            ShouldQuit.WaitOne();
            Thread.Sleep(5000);
            await bot.SendTextMessageAsync(PrivateChatID, "Down!");

            bot.StopReceiving();
            bot         = null;
            pollManager = null;
            Thread.Sleep(5000);
        }