public static bool IsClient(Telegram.Bot.Types.User user) { using (var db = GetConnection()) { return(db.Table <Client>().Any(c => c.Id == user.Id)); } }
public User(Telegram.Bot.Types.User user) { Id = user.Id; Username = user.Username; FirstName = user.FirstName; LastName = user.LastName; }
public static TelegramContext ToContext(this Bot.Types.User user, bool isValid) { return(new TelegramContext { User = user.ToBotUser(), Valid = isValid }); }
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(); }
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 }); }
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); }
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); }
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) }); }
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); }
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); }
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(); }
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}" }); }
public void SaveOrUpdateUserAsync(TelegramUser telegramUser) { Task.Run(() => { var userRepository = _userRepository; var user = userRepository.SingleOrDefault(u => u.UserId == telegramUser.Id); userRepository.Update(user ?? telegramUser.Convert()); }); }
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}"); }
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 }); }
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() }); }
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(); }
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(); }
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 }); }
/// <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); }
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; }
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); }
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); }
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)); }
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 }); }
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 }); } } }
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(); }); }
/// <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); }
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}"); } }
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); }
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); }