Лаборатория #5

Запознайте се с Botfather

Първо, ще разгледаме прост пример за създаване на така наречения ехо бот. За да регистрирате нов телеграм бот, трябва да следвате няколко прости стъпки, които са описани подробно в това ръководство. По-долу е даден пример за регистриране на бот с име cs102_bot:

който

Моля, обърнете внимание, че последният отговор на BotFather беше токен за достъп ( access_token ), който ще ни трябва в по-нататъшна работа.

На настоящия етап ботът, който създадохме, не може да прави нищо и не знае нито една команда. За да „обучим“ бота, ще използваме API, предоставен от telegram:

Bot API е базиран на HTTP интерфейс, създаден за разработчици, запалени по изграждането на ботове за Telegram

Няма да работим директно с API, както направихме в Lab #4, а ще използваме модула pyTelegramBotAPI. Подробно ръководство на български език за работа с този модул можете да намерите тук.

Сега трябва да инсталираме модула pyTelegramBotAPI:

По-долу е даден пример за обикновен ехо бот, който дублира всяко ваше съобщение:

Можете да стартирате бота по следния начин:

Сега отидете на telegram и напишете произволно съобщение на вашия бот:

Направете бота по-умен

Сега нека обучим нашия бот да прави малко повече и да разбира командите. Целта на цялата работа е да се напише бот, който да ви позволи да получите график на класа за всяка група. Ботът трябва да разбира следните команди:

  • near_lesson GROUP_NUMBER - най-близкото занимание за посочената група;
  • ДЕН WEEK_NUMBER GROUP_NUMBER - график на занятията за посочения ден ( понеделник, вторник, . ). Седмицата може да бъде четна ( 1 ), нечетна ( 2 ) или четна и нечетна ( 0 );
  • tommorow GROUP_NUMBER - график за следващия ден (ако е неделя, тогава се показва графикът за понеделник, като се има предвид, че седмицата може да бъде четна или нечетна);
  • всички WEEK_NUMBER GROUP_NUMBER - график за цялата седмица.

Нека да разгледаме пример с изхода на графика за понеделник. За да направим това, трябва да получим html кода на страницата за съответната група и след това да изберем информацията, която ни интересува от тази страница.

Забележка: За да ви е по-лесно да навигирате в работата, се препоръчва да изтеглите пример за всяка страница с график:

който

За да получите изходния код на страницата, е достатъчно да изпълните GET заявка. URL адресът, до който ще имаме достъп, има следния формат:

Когато WEEK е седмица (четно-нечетно), ако седмицата не е посочена, тогава графикът включва както четни, така и нечетни седмици; ГРУПА - номер на група.

Сега от тази страница трябва да извлечем часа на занятията, мястото, публиката и името на дисциплината. За целта се нуждаем от HTML анализатор. Тази статия предлага използването на модула BeautifulSoup.

Методите find и find_all ви позволяват да намирате тагове с посочените атрибути.

Така получихме времето, мястото и името на дисциплината (получаването на броя на публиката остава за самоизпълнение). И накрая, нека добавим към нашия бот възможността да показва графика за понеделник:

лаборатория

Поставяме бота в мрежата

Последната част от лабораторията е посветена на хостването на бот в облачната платформа Heroku.

От вас се изисква да се регистрирате в Heroku и да създадете ново приложение там:

който

трябва

В папката на вашия проект създайте три файла:

  • runtime.txt - версията на интерпретатора на Python, необходима за стартиране на приложението;
  • requirements.txt - модули, необходими за работа на приложението;
  • Procfile - показва типа на приложението и основния клас (в нашия случай това е съответно приложение на python и файл bot.py).

Пример за съдържанието на тези файлове е показан по-долу:

След това отидете на раздела Разполагане, който описва подробно процеса на хостване на вашето приложение в услугата Heroku:

който

След натискане на heroku master, приложението автоматично настройва проекта и стартира бота. Ако успее, вашият бот трябва да работи на отдалечената машина. За да проследите напредъка на тези операции и да намерите възможни грешки, въведете heroku logs --tail в конзолата