Ejemplo n.º 1
0
        private void button2_Click(object sender, EventArgs e)
        {
            bool success = NewApi.getKernelAuth().setAuthCode(VerfyCodeT.Text);

            if (success)
            {
                BotStatus = LoginStatus.ALREADYLOGGED;
            }

            if (BotStatus == LoginStatus.ALREADYLOGGED)
            {
                IsConnected = true;
                TLNearestDc dcInfo = (TLNearestDc)NewApi.Api().doRpcCallNonAuth(new TLRequestHelpGetNearestDc());
                NewApi.Api().switchToDc(dcInfo.getNearestDc());
                Api                  = NewApi.Api();
                NotifyBar.Text       = "فعال " + "(" + PhoneNumT.Text + ")";
                NotifyBar.ForeColor  = Color.Green;
                ConnectB.BackColor   = Color.Red;
                ConnectB.Text        = "قطع اتصال";
                MessageTB.Enabled    = true;
                SendMessageB.Enabled = true;
                VerfyCodeB.Enabled   = false;
                VerfyCodeT.Enabled   = false;
            }
            else
            {
                NotifyBar.Text      = "شکست در فعالسازی (" + BotStatus + ")";
                NotifyBar.ForeColor = Color.Red;
                IsConnected         = false;
                //throw new Exception("Failed to log in: " + BotStatus);
            }
        }
Ejemplo n.º 2
0
 public SignalsService(TelegramApi telegram, ILogger <SignalsService> logger, IServiceProvider serviceProvider)
 {
     _telegram        = telegram;
     _logger          = logger;
     _serviceProvider = serviceProvider;
     _signalWatches   = new ConcurrentDictionary <string, SignalRunner>();
 }
Ejemplo n.º 3
0
        protected override void ProcessComplete(long chatId)
        {
            var path = Shell.GetPath(Path);

            if (File.Exists(path))
            {
                Task.Run(() =>
                {
                    try
                    {
                        using (var stream = File.OpenRead(path))
                        {
                            var filename   = System.IO.Path.GetFileName(path);
                            var fileToSend = new FileToSend(filename, stream);
                            TelegramApi.SendDocumentAsync(chatId, fileToSend).Wait();
                        }
                    }
                    catch (Exception ex)
                    {
                        TelegramApi.SendTextMessageAsync(chatId, "File sending error: " + ex.Message);
                    }
                    finally
                    {
                        Session.Exit(this);
                    }
                });
            }
            else
            {
                TelegramApi.SendTextMessageAsync(chatId, "File " + path + " not exists");
                Session.Exit(this);
            }
        }
Ejemplo n.º 4
0
 public override void OnStart(Message msg)
 {
     try
     {
         var sb = new StringBuilder();
         sb.AppendLine("Processes:");
         var needClean = false;
         lock (Shell.ProcessTable.LockObject)
         {
             foreach (var proc in Shell.ProcessTable.Table)
             {
                 var workingStr = proc.Value.Working ? "working" : "not working";
                 sb.AppendLine($"{proc.Key} - {proc.Value.Path} - {workingStr}");
                 if (!proc.Value.Working)
                 {
                     needClean = true;
                 }
             }
         }
         var listTask = TelegramApi.SendTextMessageAsync(msg.Chat.Id, sb.ToString());
         if (needClean)
         {
             listTask.ContinueWith(x => TelegramApi.SendTextMessageAsync(msg.Chat.Id, "/pclean - to clean not working processes"));
         }
     }
     finally
     {
         Session.Exit(this);
     }
 }
Ejemplo n.º 5
0
        private async void metroButton8_Click(object sender, EventArgs e)
        {
            if (String.IsNullOrWhiteSpace(metroTextBox10.Text))
            {
                return;
            }
            metroButton8.Enabled  = false;
            metroButton10.Enabled = false;
            _chatId     = 0;
            label4.Text = null;
            _chatId     = await TelegramApi.GetChatIdViaUsername(metroTextBox10.Text);

            if (_chatId != 0)
            {
                label4.Text           = @"Deine Chat Id lautet " + _chatId + @".";
                label4.ForeColor      = Color.Green;
                metroButton10.Enabled = true;
            }
            else
            {
                label4.Text      = @"Deine Chat Id konnte nicht gefunden werden. Bitte wiederhole den vorgang oder Kontakte den Entwickler.";
                label4.ForeColor = Color.Red;
            }
            metroButton8.Enabled = true;
        }
Ejemplo n.º 6
0
        public virtual void InitProcess(long chatId)
        {
            if (ExecProcess != null)
            {
                return;
            }
            try
            {
                ExecProcess           = new Process();
                ExecProcess.StartInfo = new ProcessStartInfo();
                ExecProcess.StartInfo.WorkingDirectory       = Shell.CurrentDirectory;
                ExecProcess.StartInfo.UseShellExecute        = false;
                ExecProcess.StartInfo.RedirectStandardInput  = true;
                ExecProcess.StartInfo.RedirectStandardOutput = true;
                ExecProcess.StartInfo.RedirectStandardError  = true;
                ExecProcess.StartInfo.FileName  = Path;
                ExecProcess.StartInfo.Arguments = Arguments;

                ExecProcess.Start();

                ExecProcess.StandardInput.AutoFlush = true;
                Task.Run(() => BeginProxy(chatId, ExecProcess.StandardOutput, ExecProcess.StandardError));
            }
            catch (Exception ex)
            {
                Session.Exit(this);
                TelegramApi.SendTextMessageAsync(chatId, "Exec error: " + ex.Message);
            }
        }
Ejemplo n.º 7
0
        static void Main(string[] args)
        {
            Playlists = System.IO.File.ReadAllLines(@"D:\PROGRAMMING\C#\Univer_Project\Telegram-BOT-HELPER\playlists.txt");

            var Quotes_data = System.IO.File.ReadAllText(@"D:\PROGRAMMING\C#\Univer_Project\Telegram-BOT-HELPER\quotes.json", System.Text.Encoding.UTF8);

            Quotes = JsonConvert.DeserializeObject <List <Dictionary <string, string> > >(Quotes_data);



            var API = new TelegramApi();

            while (true)
            {
                var Updates = API.GetUpdates();

                foreach (var update in Updates)
                {
                    var Question = update.message.text;
                    var Answer   = AnswerQuestion(Question);

                    API.sendMessage(Answer, update.message.chat.id);
                }
            }
            Console.ReadKey();
        }
Ejemplo n.º 8
0
 public override void Process(Message msg)
 {
     if (WaitingSaveCheck)
     {
         if (msg.Type == Telegram.Bot.Types.Enums.MessageType.TextMessage)
         {
             var text = msg.Text.ToLower();
             if (text == "cancel")
             {
                 TelegramApi.SendTextMessageAsync(msg.Chat.Id, "Canceled");
                 Session.Exit(this);
             }
             else if (text == "ok")
             {
                 Task.Run(() => StreamUploader(msg.Chat.Id, FileId, Path));
                 TelegramApi.SendTextMessageAsync(msg.Chat.Id, "Uploading file...");
                 WaitingSaveCheck = false;
             }
             else
             {
                 SendSaveQuestion(msg.Chat.Id);
             }
             return;
         }
         else
         {
         }
     }
     else
     {
         TelegramApi.SendTextMessageAsync(msg.Chat.Id, "Uploading file...");
     }
 }
Ejemplo n.º 9
0
        public ActionResult Create(CreateVacancyView model)
        {
            if (model.Phone.Last() == '_')
            {
                ModelState.AddModelError("Phone", "Кажется, Вы неверно ввели телефон :(");
            }

            if (ModelState.IsValid)
            {
                //mapping
                var config = new MapperConfiguration(cfg =>
                {
                    cfg.CreateMap <CreateVacancyView, Vacancy>()
                    .ForMember(dest => dest.Id, opt => opt.UseValue(Guid.NewGuid()))
                    .ForMember(dest => dest.Premoderated, opt => opt.UseValue(false))
                    .ForMember(dest => dest.Created, opt => opt.UseValue(DateTime.Now));
                });
                IMapper mapper  = config.CreateMapper();
                Vacancy vacancy = mapper.Map <Vacancy>(model);
                manager.AddVacancy(vacancy);

                //send notification to telegram
                var         urlToCheck = Request.Url.Scheme + System.Uri.SchemeDelimiter + Request.Url.Host + (Request.Url.IsDefaultPort ? "" : ":" + Request.Url.Port) + Url.Action("Vacancies", "Check");
                TelegramApi api        = new TelegramApi();
                api.SendNotification("*Новая вакансия*\r\n[Перейти](" + urlToCheck + ")");

                return(RedirectToAction("Success", "Home"));
            }
            else
            {
                return(View(model));
            }
        }
Ejemplo n.º 10
0
        public override void Execute()
        {
            using (AppDbContext db = new AppDbContext())
            {
                Program.Logger.Debug($"{GetType().Name}: Searching user with TelegramId: {Message.From.Id} in database");
                var user = db.GetUserByTelegramId(Message.From.Id);
                if (user == null)
                {
                    user = new User
                    {
                        TelegramUserId = Message.From.Id,
                        FirstName      = Message.From.FirstName,
                        LastName       = Message.From.LastName,
                        Username       = Message.From.Username
                    };

                    Program.Logger.Info($"{GetType().Name}: {user} is new User");
                    Program.Logger.Debug($"{GetType().Name}: Adding user {user} to database");
                    db.Users.Add(user);
                }
                else
                {
                    Program.Logger.Debug($"{GetType().Name}: User {user} is already exist");
                }

                Program.Logger.Debug($"{GetType().Name}: Subscribing {user} to all shows");
                var subscriptions = user.Subscriptions.ToList();
                foreach (Show show in db.Shows)
                {
                    Subscription subscription = new Subscription
                    {
                        User             = user,
                        Show             = show,
                        SubscriptionDate = DateTime.Now
                    };

                    if (subscriptions.Any(s => Equals(s.Show, show)))
                    {
                        continue;
                    }

                    db.Subscriptions.Add(subscription);
                }

                Program.Logger.Debug($"{GetType().Name}: Saving changes to database");
                db.SaveChanges();
            }

            Program.Logger.Debug($"{GetType().Name}: Sending response to {Message.From}");
            try
            {
                TelegramApi.SendMessage(Message.From, "Вы, братишка, подписаны на все сериалы");
            }
            catch (Exception e)
            {
                throw new Exception($"{GetType().Name}: An error occurred while sending response to {Message.From}", e);
            }

            Status = true;
        }
Ejemplo n.º 11
0
 public override void Process(Message msg)
 {
     if (string.IsNullOrWhiteSpace(msg.Text))
     {
         if (TempKey == null)
         {
             TelegramApi.SendTextMessageAsync(msg.Chat.Id, "Waiting..");
         }
         else
         {
             SendQuestion(msg.Chat.Id, TempKey.Value);
         }
     }
     else
     {
         if (TempKey == null)
         {
             if (msg.Text == "/cancel")
             {
                 Session.Exit(this);
             }
             else
             {
                 TelegramApi.SendTextMessageAsync(msg.Chat.Id, "Waiting..");
             }
         }
         else
         {
             ProcessAnswer(TempKey.Value, msg.Text);
             TempKey = null;
             ProcessNext(msg.Chat.Id);
         }
     }
 }
Ejemplo n.º 12
0
        private void SendSaveQuestion(long chatId)
        {
            WaitingSaveCheck = true;
            var buttons = new string[] { "OK", "Cancel" }.Select(x => new KeyboardButton(x)).Select(x => new KeyboardButton[] { x }).ToArray();
            var keyboard = new ReplyKeyboardMarkup(buttons, oneTimeKeyboard: true);

            TelegramApi.SendTextMessageAsync(chatId, "File " + Path + " already exist", replyMarkup: keyboard);
        }
Ejemplo n.º 13
0
        protected virtual void SendQuestion(long chatId, KeyValuePair <string, string> key)
        {
            var variants = ListVariants(key);
            var buttons  = variants.Select(x => new KeyboardButton(x)).Select(x => new KeyboardButton[] { x }).ToArray();
            var keyboard = new ReplyKeyboardMarkup(buttons, oneTimeKeyboard: true);

            TelegramApi.SendTextMessageAsync(chatId, key.Value, replyMarkup: keyboard);
        }
Ejemplo n.º 14
0
 public override void Process(Message msg)
 {
     lock (AuthSet)
     {
         AuthSet.Add(msg.Chat.Id);
         TelegramApi.SendTextMessageAsync(msg.Chat.Id, "Auth success").Wait();
     }
 }
Ejemplo n.º 15
0
        //--Allgemeines ENDE

        //--Feedback START
        private async void metroTile2_Click(object sender, EventArgs e)
        {
            if (metroComboBox5.SelectedIndex == -1)
            {
                MetroMessageBox.Show(this,
                                     "Feedback konnte nicht gesendet werden.\nAuswahl Fehlt", "Feedback Fehlgeschlagen", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }
            if (String.IsNullOrWhiteSpace(metroTextBox3.Text))
            {
                MetroMessageBox.Show(this,
                                     "Feedback konnte nicht gesendet werden.\nBetreff Leer", "Feedback Fehlgeschlagen", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }
            if (String.IsNullOrWhiteSpace(metroTextBox2.Text))
            {
                MetroMessageBox.Show(this,
                                     "Feedback konnte nicht gesendet werden.\nNachricht Leer", "Feedback Fehlgeschlagen", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            string subject = null;

            switch (metroComboBox5.SelectedIndex)
            {
            case 0:
                subject = "[PROBLEM] " + metroTextBox3.Text;
                break;

            case 1:
                subject = "[VORSCHLAG] " + metroTextBox3.Text;
                break;

            case 2:
                subject = "[SONSTIGES] " + metroTextBox3.Text;
                break;
            }
            string body = metroTextBox2.Text + "\n";

            if (!String.IsNullOrWhiteSpace(metroTextBox11.Text))
            {
                body += "\nEmail: " + metroTextBox11.Text;
            }
            if (!String.IsNullOrWhiteSpace(metroTextBox12.Text))
            {
                body += "\nTelegram: " + metroTextBox12.Text;
            }

            metroComboBox5.Enabled        = metroTextBox3.Enabled =
                metroTextBox2.Enabled     = metroTextBox4.Enabled = metroButton6.Enabled = metroTextBox11.Enabled = metroTextBox12.Enabled = metroTile2.Enabled = false;
            metroProgressSpinner1.Visible = true;
            await TelegramApi.SendFeedbackMessage(subject, body, metroTextBox4.Text);

            metroComboBox5.Enabled        = metroTextBox3.Enabled =
                metroTextBox2.Enabled     = metroTextBox4.Enabled = metroButton6.Enabled = metroTextBox11.Enabled = metroTextBox12.Enabled = metroTile2.Enabled = true;
            metroProgressSpinner1.Visible = false;
        }
Ejemplo n.º 16
0
 public SignalRunner(ILogger <SignalRunner> logger, BinanceApi binanceApi, StrategyFactory strategyFactory, TelegramApi telegram)
 {
     _logger                  = logger;
     _binanceApi              = binanceApi;
     _strategyFactory         = strategyFactory;
     _telegram                = telegram;
     _candles                 = new Dictionary <long, Candle>();
     _cancellationTokenSource = new CancellationTokenSource();
 }
Ejemplo n.º 17
0
 static void Notify(string message)
 {
     Console.WriteLine(message);
     TelegramApi.SendMessage(
         Environment.GetEnvironmentVariable("TELEGRAM_KEY"),
         Environment.GetEnvironmentVariable("TELEGRAM_CHAT"),
         message
         );
 }
Ejemplo n.º 18
0
        public void AddingSomeoneElsesBirthdayWhileNotAnAdminDoesNotAddBirthday()
        {
            var api       = new TelegramApi("", "");
            var birthdays = new Birthdays(new List <Birthday>(), api, Mock.Of <IFileWriter>());
            var sut       = new TelegramMessageHandler(api, birthdays, new AdminManager());

            var json = CreateTelegramUpdateDto("/birthadd tempo 01-01", "EriK", "AnyChat", 139);

            sut.HandleMessage(json);
            Assert.Empty(birthdays);
        }
Ejemplo n.º 19
0
        private async void metroButton10_Click(object sender, EventArgs e)
        {
            if (_chatId == 0)
            {
                return;
            }
            metroButton10.Enabled = false;
            await TelegramApi.SendMessage(_chatId.ToString(), "Wenn du diese Nachricht erhälst hast du alles richtig Konfiguriert ;-)");

            metroButton10.Enabled = true;
        }
Ejemplo n.º 20
0
        private async void metroButton10_Click(object sender, EventArgs e)
        {
            if (String.IsNullOrWhiteSpace(metroTextBox9.Text))
            {
                return;
            }
            metroButton10.Enabled = false;
            await TelegramApi.SendMessage(metroTextBox9.Text,
                                          "Wenn du diese Nachricht erhälst hast du alles richtig Konfiguriert ;-)");

            metroButton10.Enabled = true;
        }
Ejemplo n.º 21
0
 public override void OnStart(Message msg)
 {
     try
     {
         Shell.ProcessTable.CleanUp(false);
         TelegramApi.SendTextMessageAsync(msg.Chat.Id, "Clean up complete");
     }
     finally
     {
         Session.Exit(this);
     }
 }
Ejemplo n.º 22
0
 private void SendResponse(string response)
 {
     Program.Logger.Debug($"{GetType().Name}: Sending response to {Message.From}");
     try
     {
         TelegramApi.SendMessage(Message.From, response);
     }
     catch (Exception e)
     {
         throw new Exception($"{GetType().Name}: An error occurred while sending response to {Message.From}", e);
     }
 }
Ejemplo n.º 23
0
 protected override void ProcessComplete(long chatId)
 {
     try
     {
         var path = Shell.GetPath(Path);
         Shell.CurrentDirectory = path;
         TelegramApi.SendTextMessageAsync(chatId, Shell.CurrentDirectory);
     }
     finally
     {
         Session.Exit(this);
     }
 }
Ejemplo n.º 24
0
        public override void Execute()
        {
            Program.Logger.Debug($"{GetType().Name}: Sending help message to {Message.From}");
            try
            {
                TelegramApi.SendMessage(Message.From, string.Format(HelpTemplate, Message.From.FirstName));
            }
            catch (Exception e)
            {
                throw new Exception($"{GetType().Name}: An error occurred while sending help message to {Message.From}", e);
            }

            Status = true;
        }
Ejemplo n.º 25
0
        public override void Execute()
        {
            Program.Logger.Debug($"{GetType().Name}: Sending message to {Message.From}");
            try
            {
                TelegramApi.SendMessage(Message.From, "Пощади, братишка");
            }
            catch (Exception e)
            {
                throw new Exception($"{GetType().Name}: An error occurred while sending message to {Message.From}", e);
            }

            Status = true;
        }
Ejemplo n.º 26
0
        public void AddingYourOwnBirthdayDoesNotRequireBeingAnAdmin()
        {
            var api       = new TelegramApi("", "");
            var birthdays = new Birthdays(new List <Birthday>(), api, Mock.Of <IFileWriter>());
            var sut       = new TelegramMessageHandler(api, birthdays, new AdminManager());

            var json = CreateTelegramUpdateDto("/birthadd erik 01-01", "EriK", "EriK", 139);

            sut.HandleMessage(json);
            Assert.Contains(birthdays, b =>
                            b.Human.Equals("erik", StringComparison.InvariantCultureIgnoreCase) &&
                            b.Date.Day == 1 &&
                            b.Date.Month == 1);
        }
Ejemplo n.º 27
0
        private static void StartPolling(TelegramApi api)
        {
            Logger.Debug("Starting polling");
            Task pollingTask = api.StartPolling();

            pollingTask.ContinueWith(
                e =>
            {
                Logger.Error(e.Exception, "An error occurred while retrieving updates");
                Thread.Sleep(retryPollingDelay);
                StartPolling(api);
            },
                TaskContinuationOptions.OnlyOnFaulted);
        }
Ejemplo n.º 28
0
        private static void Load()
        {
            Console.WriteLine("Dates are specified in the format MM-DD");
            LoadConfig();

            _messagingApi = new TelegramApi(Config.Token, Config.ChatId);
            Console.WriteLine($"Using {_messagingApi.GetType().Name}");

            _birthdays = Birthdays.Load(_messagingApi);
            var messageHandler = new TelegramMessageHandler(_messagingApi, _birthdays, _adminManager);

            _messagingApi.AddHandler(messageHandler);
            ExitHandlers.Add(_birthdays);
            ExitHandlers.Add(messageHandler);
        }
Ejemplo n.º 29
0
 public override void OnStart(Message msg)
 {
     try
     {
         var args = Helpers.Ext.ParseArgs(msg.Text);
         ProcessStartArgs(msg, args);
         ProcessNext(msg.Chat.Id);
     }
     catch (Exception ex)
     {
         Session.Exit(this);
         TelegramApi.SendTextMessageAsync(msg.Chat.Id, "Error: " + ex.Message);
     }
     finally
     {
     }
 }
Ejemplo n.º 30
0
        public void AddingSomeoneElsesBirthdayWhileAnAdminDoesAddBirthday()
        {
            var api          = new TelegramApi("", "");
            var birthdays    = new Birthdays(new List <Birthday>(), api, Mock.Of <IFileWriter>());
            var adminManager = new AdminManager(new List <string> {
                "erik"
            });
            var sut = new TelegramMessageHandler(api, birthdays, adminManager);

            var json = CreateTelegramUpdateDto("/birthadd tempo 12-15", "EriK", "AnyChat", 139);

            sut.HandleMessage(json);
            Assert.Contains(birthdays, b =>
                            b.Human.Equals("tempo", StringComparison.InvariantCultureIgnoreCase) &&
                            b.Date.Day == 15 &&
                            b.Date.Month == 12);
        }
Ejemplo n.º 31
0
        private static Command GetCommand(TelegramApi tg, Message message)
        {
            string commandTitle;
            try
            {
                commandTitle = CommandRegex.Match(message.Text).Groups[1].Value;
            }
            catch (Exception e)
            {
                Logger.Error(e, "An error occurred while parsing command title");
                return null;
            }

            Logger.Debug($"Creating command object for '{message.Text}'");
            var command = Command.CreateCommand(commandTitle);
            Logger.Info($"Received {command.GetType().Name} from " +
                        $"{message.From}");

            command.TelegramApi = tg;
            command.Message = message;
            return command;
        }
Ejemplo n.º 32
0
 override public void onAuthCancelled(TelegramApi telegramApi) {
     MessageBox.Show("onAuthCancelled");
 }
Ejemplo n.º 33
0
 protected Command(TelegramApi telegramApi, Message message)
 {
     Status = false;
     TelegramApi = telegramApi;
     Message = message;
 }
Ejemplo n.º 34
0
 public Notifier(TelegramApi telegramApi)
 {
     this.telegramApi = telegramApi;
 }
Ejemplo n.º 35
0
 public ShowsCommand(TelegramApi telegramApi, Message message)
     : base(telegramApi, message)
 {
 }
Ejemplo n.º 36
0
        static void Main()
        {
            Logger.Info($"HousewifeBot started: {Assembly.GetEntryAssembly().Location}");
            if (!LoadSettings())
            {
                return;
            }

            TelegramApi tg = new TelegramApi(_token);
            try
            {
                Logger.Debug("Executing GetMe");
                var botUser = tg.GetMe();
                Logger.Debug($"GetMe returned {botUser}");
            }
            catch (Exception e)
            {
                Logger.Error("GetMe failed");
                Logger.Error(e);
                return;
            }

            Database.SetInitializer(new MigrateDatabaseToLatestVersion<AppDbContext, DAL.Migrations.Configuration>());
            Notifier notifier = new Notifier(tg);
            var updateNotificationsTask = new Task(
                () =>
                {
                    while (true)
                    {
                        notifier.UpdateNotifications();
                        Thread.Sleep(_updateNotificationsInterval);
                    }
                }
                );
            updateNotificationsTask.Start();

            var sendEpisodesNotificationsTask = new Task(
                () =>
                {
                    while (true)
                    {
                        notifier.SendEpisodesNotifications();
                        Thread.Sleep(_sendNotificationsInterval);
                    }
                }
                );

            var sendShowsNotificationsTask = new Task(
                () =>
                {
                    while (true)
                    {
                        notifier.SendShowsNotifications();
                        Thread.Sleep(_sendShowNotificationsInterval);
                    }
                });

            sendEpisodesNotificationsTask.Start();
            sendShowsNotificationsTask.Start();

            var processingCommandUsers = new ConcurrentDictionary<User, bool>();
            Regex commandRegex = new Regex(@"(/\w+)\s*");

            StartPolling(tg);
            while (true)
            {
                foreach (var update in tg.Updates)
                {
                    if (processingCommandUsers.ContainsKey(update.Key) &&
                        processingCommandUsers[update.Key])
                    {
                        continue;
                    }

                    if (update.Value.Count == 0)
                    {
                        continue;
                    }
                    Message message;
                    update.Value.TryDequeue(out message);

                    Logger.Debug($"Received message '{message.Text}' from " +
                                 $"{message.From}");

                    string commandTitle;
                    try
                    {
                        commandTitle = commandRegex.Match(message.Text).Groups[1].Value;
                    }
                    catch (Exception e)
                    {
                        Logger.Error(e, "An error occurred while parsing command title");
                        continue;
                    }

                    Logger.Debug($"Creating command object for '{message.Text}'");
                    var command = Command.CreateCommand(commandTitle);
                    Logger.Info($"Received {command.GetType().Name} from " +
                                $"{message.From}");

                    command.TelegramApi = tg;
                    command.Message = message;

                    Logger.Debug($"Executing {command.GetType().Name}");
                    processingCommandUsers[update.Key] = true;
                    Task commandTask = Task.Run(() =>
                    {
                        try
                        {
                            command.Execute();
                        }
                        catch (Exception e)
                        {
                            Logger.Error($"An error occurred while executing {command.GetType().Name}.\n" +
                                         $"Message: {command.Message.Text}\n" +
                                         $"Arguments: {command.Arguments}\n" +
                                         $"User: {command.Message.From}");
                            Logger.Error(e);
                        }
                    }
                        );
                    commandTask.ContinueWith(task =>
                    {
                        processingCommandUsers[update.Key] = false;
                        Logger.Debug($"{command.GetType().Name} from " +
                                     $"{message.From} {(command.Status ? "succeeded" : "failed")}");
                    });
                }
                Thread.Sleep(200);
            }
        }
Ejemplo n.º 37
0
        private static void StartPolling(TelegramApi tgApi)
        {
            Logger.Debug("Starting polling");
            Task pollingTask = tgApi.StartPolling();

            pollingTask.ContinueWith(e =>
            {
                Logger.Error(e.Exception, "An error occurred while retrieving updates");
                Thread.Sleep(_retryPollingDelay);
                StartPolling(tgApi);
            },
              TaskContinuationOptions.OnlyOnFaulted);
        }
Ejemplo n.º 38
0
 private static void StartPolling(TelegramApi tgApi)
 {
     //Logger.Debug("Starting polling");
     Task pollingTask = tgApi.StartPolling();
     pollingTask.ContinueWith(e =>
     {
         //Logger.Error(e.Exception, "An error occurred while retrieving updates");
         new Timer(o =>
         {
             StartPolling(tgApi);
         }, null, _retryPollingDelay, -1);
     },
       TaskContinuationOptions.OnlyOnFaulted);
 }
Ejemplo n.º 39
0
        static void Main(string[] args)
        {
            TelegramApi telegram = new TelegramApi(_token);
            try
            {
                Console.WriteLine("Executing GetMe");
                var botUser = telegram.GetMe();
                Console.WriteLine("GetMe returned \n" + botUser.ToString());
            }
            catch (Exception e)
            {
                Console.WriteLine("GetMe failed");
                Console.WriteLine(e.Message);
                return;
            }

            using (var db = new AppDbContext())
            {
                db.SaveChanges();
                var query = from b in db.Suggestions
                            orderby b.Id
                            select b;
                Console.WriteLine("All suggestions:");
                foreach (var item in query)
                {
                    Console.WriteLine(item.Id + " " + item.Text);
                }
                //Console.ReadKey();
            }

            /*
            ReplyKeyboardMarkup replyKB = new ReplyKeyboardMarkup();
            replyKB.Keyboard = new string[][]
                    {
                        new string[] {"Yes","No"}

                    };
            replyKB.OneTimeKeyboard = false;
            replyKB.ResizeKeyboard = false;
            replyKB.Selective = false;*/

            //string json = JsonConvert.SerializeObject(replyKB);

            StartPolling(telegram);

            var processingCommandUsers = new ConcurrentDictionary<Telegram.User, bool>();
            Regex commandRegex = new Regex(@"(/\w+)\s*");

            while (true)
            {
                foreach (var update in telegram.Updates)
                {
                    if (processingCommandUsers.ContainsKey(update.Key) &&
                        processingCommandUsers[update.Key])
                    {
                        continue;
                    }

                    if (update.Value.Count == 0)
                    {
                        continue;
                    }
                    Message message;
                    update.Value.TryDequeue(out message);

                    /*Logger.Debug($"Received message '{message.Text}' from " +
                                 $"{message.From.FirstName} {message.From.LastName}");*/
                    string commandTitle = commandRegex.Match(message.Text).Groups[1].Value;

                    /*ReplyKeyboardMarkup replyKeyboard = new ReplyKeyboardMarkup() {Keyboard = new string[][] {
                                                                                       new string[] {"Yes","No"}
                                                                                   },
                                                                                   OneTimeKeyboard = true
                    };*/

                    string testText = message.Text;

                    Console.WriteLine("Received a message: " + testText);

                    //Logger.Debug($"Creating command object for '{commandTitle}'");
                    var command = Command.CreateCommand(commandTitle);
                    //Logger.Info($"Received {command.GetType().Name} from " +
                    //            $"{message.From.FirstName} {message.From.LastName}");

                    command.TelegramApi = telegram;
                    command.Message = message;

                    //Logger.Debug($"Executing {command.GetType().Name}");
                    processingCommandUsers[update.Key] = true;

                    try
                    {
                       // telegram.SendMessage(message.From, testText, replyKeyboard);
                     //   telegram.SendMessage(message.From, " ", replyKeyboard);
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e.Message);
                        throw;
                    }

                    Task commandTask = Task.Run(() =>
                    {
                        try
                        {
                            command.Execute();
                        }
                        catch (Exception e)
                        {
                            /*Logger.Error($"An error occurred while executing {command.GetType().Name}.\n" +
                                         $"Message: {command.Message.Text}\n" +
                                         $"Arguments: {command.Arguments}\n" +
                                         $"User: {command.Message.From}");
                            Logger.Error(e);*/
                            Console.WriteLine(e.Message);
                        }
                    }
                        );
                    commandTask.ContinueWith(task =>
                    {
                        processingCommandUsers[update.Key] = false;
                        /*Logger.Debug($"{command.GetType().Name} from " +
                                     $"{message.From.FirstName} {message.From.LastName} {(command.Status ? "succeeded" : "failed")}");*/
                    });
                }
                Thread.Sleep(200);
            }
        }
Ejemplo n.º 40
0
 override public void onUpdatesInvalidated(TelegramApi api) {
     MessageBox.Show("onUpdatesInvalidated");
 }
Ejemplo n.º 41
0
 public Notifier(TelegramApi telegramApi)
 {
     TelegramApi = telegramApi;
 }
Ejemplo n.º 42
0
        private static void Main()
        {
            Logger.Info($"HousewifeBot started: {Assembly.GetEntryAssembly().Location}");
            if (!LoadSettings())
            {
                return;
            }

            TelegramApi tg = new TelegramApi(token);
            try
            {
                Logger.Debug("Executing GetMe");
                var botUser = tg.GetMe();
                Logger.Debug($"GetMe returned {botUser}");
            }
            catch (Exception e)
            {
                Logger.Error("GetMe failed");
                Logger.Error(e);
                return;
            }

            Database.SetInitializer(new MigrateDatabaseToLatestVersion<AppDbContext, DAL.Migrations.Configuration>());
            Notifier notifier = new Notifier(tg);
            StartUpdateNotificationsTask(notifier);
            StartSendEpisodesNotificationsTask(notifier);
            StartSendShowsNotificationsTask(notifier);

            var processingCommandUsers = new ConcurrentDictionary<User, bool>();

            StartPolling(tg);
            while (true)
            {
                foreach (var update in tg.Updates)
                {
                    if (processingCommandUsers.ContainsKey(update.Key) &&
                        processingCommandUsers[update.Key])
                    {
                        continue;
                    }

                    if (update.Value.Count == 0)
                    {
                        continue;
                    }

                    Message message;
                    update.Value.TryDequeue(out message);

                    Logger.Debug($"Received message '{message.Text}' from {message.From}");

                    var command = GetCommand(tg, message);
                    if (command == null)
                    {
                        continue;
                    }

                    Logger.Debug($"Executing {command.GetType().Name}");
                    processingCommandUsers[update.Key] = true;
                    var commandTask = StartCommandTask(command);
                    commandTask.ContinueWith(task =>
                    {
                        processingCommandUsers[update.Key] = false;
                        Logger.Debug($"{command.GetType().Name} from {message.From} {(command.Status ? "succeeded" : "failed")}");
                    });
                }

                Thread.Sleep(200);
            }
        }
Ejemplo n.º 43
0
 public BrowseCommand(TelegramApi telegramApi, Message message)
     : base(telegramApi, message)
 {
 }
Ejemplo n.º 44
0
 public abstract void onAuthCancelled(TelegramApi api);
Ejemplo n.º 45
0
 public abstract void onUpdatesInvalidated(TelegramApi api);