private static async Task AskForMessageToReplyTo2(TelegramBotAbstract telegramBotAbstract, MessageEventArgs e,
                                                          int identity)
        {
            //ask link

            var question = new Language(new Dictionary <string, string>
            {
                { "it", "Inserisci il link del messaggio a cui vuoi rispondere" }
            });
            var r = await AskUser.AskAsync(e.Message.From.Id, question, telegramBotAbstract,
                                           e.Message.From.LanguageCode, e.Message.From.Username);

            var tuple = GetMessageReply(r);

            if (r == null)
            {
                var l2 = new Language(new Dictionary <string, string>
                {
                    {
                        "it",
                        "Errore, non siamo riusciti a comprendere il link che hai inviato\n" +
                        "Operazione annullata."
                    }
                });
            }

            await PlaceMessageInQueue(telegramBotAbstract, new MessaggeAnonToSendInQueue(e), identity, tuple);
        }
Beispiel #2
0
        private static async Task <Tuple <DateTime, DateTime> > GetStartAndStopHoursAsync(TelegramBotAbstract sender,
                                                                                          MessageEventArgs e)
        {
            var question = new Language(new Dictionary <string, string>
            {
                { "it", "Ora di inizio? (esempio 8:15)" },
                { "en", "Start time? (example 8:15)" }
            });
            var start = await AskUser.AskAsync(e.Message.From.Id, question,
                                               sender, e.Message.From.LanguageCode, e.Message.From.Username);

            var question2 = new Language(new Dictionary <string, string>
            {
                { "it", "Ora di fine? (esempio 11:15)" },
                { "en", "End time? (example 11:15)" }
            });
            var end = await AskUser.AskAsync(e.Message.From.Id, question2,
                                             sender, e.Message.From.LanguageCode, e.Message.From.Username);

            if (start.Contains(":") && end.Contains(":"))
            {
                var start2 = start.Split(":");
                var end2   = end.Split(":");

                try
                {
                    var dt1 = new DateTime(2000, 1, 1, Convert.ToInt32(start2[0]), Convert.ToInt32(start2[1]), 0);
                    var dt2 = new DateTime(2000, 1, 1, Convert.ToInt32(end2[0]), Convert.ToInt32(end2[1]), 0);
                    return(new Tuple <DateTime, DateTime>(dt1, dt2));
                }
                catch
                {
                    return(null);
                }
            }

            return(null);
        }
Beispiel #3
0
        private static async Task OccupanciesOfTheDayAsync(TelegramBotAbstract sender, MessageEventArgs e)
        {
            var t3 = await GetDailySituationAsync(sender, e);

            if (t3 == null)
            {
                var text2 = new Language(new Dictionary <string, string>
                {
                    { "it", "Errore nella consultazione del sito del polimi!" },
                    { "en", "Error while getting polimi website!" }
                });
                await SendMessage.SendMessageInPrivate(sender, e.Message.From.Id,
                                                       e.Message.From.LanguageCode,
                                                       e.Message.From.Username,
                                                       text2,
                                                       ParseMode.Default, null);

                return;
            }

            var question = new Language(new Dictionary <string, string>
            {
                { "en", "Which room? (example: 3.0.1)" },
                { "it", "Quale aula? (esempio 3.0.1)" }
            });
            var roomName = await AskUser.AskAsync(e.Message.From.Id, question, sender, e.Message.From.LanguageCode,
                                                  e.Message.From.Username, true);

            var t4 = GetRoomTitleAndHours(t3[0], roomName);

            ;

            if (t4 == null || t4.Count == 0)
            {
                var text2 = new Language(new Dictionary <string, string>
                {
                    { "it", "Aula non trovata!" },
                    { "en", "Room not found!" }
                });
                await SendMessage.SendMessageInPrivate(sender, e.Message.From.Id,
                                                       e.Message.From.LanguageCode,
                                                       e.Message.From.Username,
                                                       text2,
                                                       ParseMode.Default, null);

                return;
            }

            var htmlresult = "<html><head><style>td {border: 1px solid;}</style></head><body><table>";

            foreach (var t5 in t4)
            {
                htmlresult += t5.OuterHtml;
            }
            htmlresult += "</table></body></html>";

            ;

            var peer2 = UserbotPeer.GetPeerFromIdAndType(e.Message.From.Id,
                                                         ChatType.Private);
            var peer = new Tuple <TLAbsInputPeer, long>(peer2, e.Message.From.Id);
            var text = new Language(new Dictionary <string, string>
            {
                { "en", roomName }
            });
            var document = UtilsFileText.GenerateFileFromString(htmlresult, roomName + ".html",
                                                                roomName, "text/html");

            await sender.SendFileAsync(document,
                                       peer, text,
                                       TextAsCaption.AS_CAPTION,
                                       e.Message.From.Username, e.Message.From.LanguageCode, null, true);
        }
Beispiel #4
0
        private static async Task SearchClassroomAsync(TelegramBotAbstract sender, MessageEventArgs e)
        {
            var question = new Language(new Dictionary <string, string>
            {
                { "it", "Nome dell'aula?" },
                { "en", "Name of the room?" }
            });
            var sigla = await AskUser.AskAsync(e.Message.From.Id, question, sender,
                                               e.Message.From.LanguageCode, e.Message.From.Username);

            var url = "https://www7.ceda.polimi.it/spazi/spazi/controller/RicercaAula.do?spazi___model" +
                      "___formbean___RicercaAvanzataAuleVO___postBack=true&spazi___model___formbean___" +
                      "RicercaAvanzataAuleVO___formMode=FILTER&evn_ricerca_avanzata=&spazi___model___formbean___" +
                      "RicercaAvanzataAuleVO___sede=tutte&spazi___model___formbean___RicercaAvanzataAuleVO___sigla=" +
                      sigla + "&spazi___model___formbean___RicercaAvanzataAuleVO___categoriaScelta=tutte&spazi" +
                      "___model___formbean___RicercaAvanzataAuleVO___tipologiaScelta=tutte&spazi___model" +
                      "___formbean___RicercaAvanzataAuleVO___iddipScelto=tutti&spazi___model___formbean___" +
                      "RicercaAvanzataAuleVO___soloPreseElettriche_default=N&spazi___model___formbean___" +
                      "RicercaAvanzataAuleVO___soloPreseDiRete_default=N";

            var webReply = await Web.DownloadHtmlAsync(url, RequestCacheLevel.NoCacheNoStore);

            if (webReply == null || !webReply.IsValid())
            {
                return;                                          //todo: notify user that download failed
            }
            ;

            var doc = new HtmlDocument();

            doc.LoadHtml(webReply.GetData());

            var t1 = HtmlUtil.GetElementsByTagAndClassName(doc?.DocumentNode, "", "TableDati-tbody");

            ;

            var t2 = t1?[0];

            ;

            var t3 = HtmlUtil.GetElementsByTagAndClassName(t2, "tr");

            ;

            var roomIndex = FindRoomIndex(t3, sigla);

            if (roomIndex == null)
            {
                return;                    //todo: send to the user "room not found"
            }
            ;

            var t4 = t3[roomIndex.Value];

            ;

            var t5 = HtmlUtil.GetElementsByTagAndClassName(t4, "td");

            ;

            if (t5.Count < 3)
            {
                return;               //todo: send to the user "room not found"
            }
            var t6 = t5[2];

            ;

            var t7 = HtmlUtil.GetElementsByTagAndClassName(t6, "a");

            if (t7.Count < 1)
            {
                return;               //todo: send to the user "room not found"
            }
            ;

            var t8 = t7[0];

            ;

            var t9 = t8.Attributes;

            if (t9 == null)
            {
                return;             //todo: send to the user "room not found"
            }
            var t10 = t9["href"];

            if (t10 == null)
            {
                return;              //todo: send to the user "room not found"
            }
            if (string.IsNullOrEmpty(t10.Value))
            {
                return;                                  //todo: send to the user "room not found"
            }
            var result = "https://www7.ceda.polimi.it/spazi/spazi/controller/" + t10.Value;
            var text2  = new Language(new Dictionary <string, string>
            {
                { "en", result }
            });
            await SendMessage.SendMessageInPrivate(sender, e.Message.From.Id,
                                                   e.Message.From.LanguageCode, e.Message.From.Username,
                                                   text2, ParseMode.Html, null);
        }