tinkoff-backend-academy-telegram-bot


Nametinkoff-backend-academy-telegram-bot JSON
Version 0.0.7 PyPI version JSON
download
home_page
SummaryTelegram bot API facade that provides the subscription to custom chat commands via python decorators.
upload_time2023-01-05 15:03:10
maintainer
docs_urlNone
authorVladislav Artiukhov
requires_python
licenseMIT
keywords telegram-bot telegram-bot-api telegram-api telegram bot-api bot tinkoff
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Чат бот с информацией о ТВ программе

В этом домашнем задании ваша цель - сделать телеграм бота, который дает базовую информацию по ТВ передаче.

**Вам нельзя использовать библиотеки для создания готовых телеграм ботов!** (но не запрещается посмотреть как они работают)


Используйте API телеграма.

### Ваша задача:

1. Перейдите в документацию по созданию ботов в телеграм: https://core.telegram.org/bots
2. Создайте токен для работы с ботом по инструкции в документации
3. Сделайте клиента для работы с API телеграма (документация к API: https://core.telegram.org/bots/api)
4. Реализуйте логику работы бота по следующему принципу:
   1. У пользователя доступно только одно действие: запрос информации по имени ТВ программы. То есть мы отправляем боту сообщение с названием программы и получаем в ответ информацию об этой программе. (можно использовать `parse_mode = html` для валидации html тегов в тексте описания тв программы)
   2. Если такой программы не найдено или пользователь отправил некоректное сообщение (картинку, стикер и тд.) отправлять сообщение с ошибкой.
   3. Для получения информации о тв программе используйте решение домашки 1.5 (если у вас его нет, напишите мне в телеграм (@indionapolis), я отправлю вам готовый код)
4. Мы можем считать, что у нас только один пользователь
5. Токен телеграма должен быть указан в файле `.env` под именем `TELEGRAM_TOKEN` (локальный .env вы в гит не пушите, проверяющий сделает свой файл со своим токеном)
8. Итоговый проект должен проходить тест и проверки flake8, black и MyPy


Полезные ссылки:
* https://core.telegram.org/bots/tutorial
* https://core.telegram.org/bots/features





Запуск тестов:

```
make lint
make test
```

Пример работы бота:

```
# запускаем бота
python -m main.py
```

```
# чат в телеграм
User:

Family Guy

Bot:

Name: Family Guy
Network Name: FOX
Network Country Name: United States
Summary: Family Guy follows Peter Griffin the endearingly ignorant dad, and his hilariously offbeat family of middle-class New Englanders in Quahog, RI. Lois is Peter's wife, a stay-at-home mom with no patience for her family's antics. Then there are their kids: 18-year-old Meg is an outcast at school and the Griffin family punching bag; 13-year-old Chris is a socially awkward teen who doesn't have a clue about the opposite sex; and one-year-old Stewie is a diabolically clever baby whose burgeoning sexuality is very much a work in progress. Rounding out the Griffin household is Brian the family dog and a ladies' man who is one step away from AA.
```

## Усложненный вариант
* Сделать возможность сохранять шоу в избанное
* Выводить список избранных шоу
* Сделать возможность удалять шоу из избанного

## Критерии оценивания
1) Сделать клиент для API телеграма - 2 балла
2) Сделать бота, который реализует логику общения - 2 балла
3) Сделать скрипт, который запускает бота для обработки входящих сообщений - 2 балла
4) Использовать изученые методики ООП (создать логические классы, сделать релевантные методы для их работы) - 2 балла
5) Пройти проверку линтерами - 1 балл
6) Покрыть тестами логику работы бота - 1 балл
7) Реализовать логику избранного шоу - отдельные доп 3 балла




            

Raw data

            {
    "_id": null,
    "home_page": "",
    "name": "tinkoff-backend-academy-telegram-bot",
    "maintainer": "",
    "docs_url": null,
    "requires_python": "",
    "maintainer_email": "",
    "keywords": "telegram-bot,telegram-bot-api,telegram-api,telegram,bot-api,bot,tinkoff",
    "author": "Vladislav Artiukhov",
    "author_email": "vladislav0art.work@gmail.com",
    "download_url": "",
    "platform": null,
    "description": "# \u0427\u0430\u0442 \u0431\u043e\u0442 \u0441 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \u043e \u0422\u0412 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435\r\n\r\n\u0412 \u044d\u0442\u043e\u043c \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u043c \u0437\u0430\u0434\u0430\u043d\u0438\u0438 \u0432\u0430\u0448\u0430 \u0446\u0435\u043b\u044c - \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0435\u043b\u0435\u0433\u0440\u0430\u043c \u0431\u043e\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u0430\u0435\u0442 \u0431\u0430\u0437\u043e\u0432\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043f\u043e \u0422\u0412 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0435.\r\n\r\n**\u0412\u0430\u043c \u043d\u0435\u043b\u044c\u0437\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0433\u043e\u0442\u043e\u0432\u044b\u0445 \u0442\u0435\u043b\u0435\u0433\u0440\u0430\u043c \u0431\u043e\u0442\u043e\u0432!** (\u043d\u043e \u043d\u0435 \u0437\u0430\u043f\u0440\u0435\u0449\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043a\u0430\u043a \u043e\u043d\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442)\r\n\r\n\r\n\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 API \u0442\u0435\u043b\u0435\u0433\u0440\u0430\u043c\u0430.\r\n\r\n### \u0412\u0430\u0448\u0430 \u0437\u0430\u0434\u0430\u0447\u0430:\r\n\r\n1. \u041f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u043f\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u0431\u043e\u0442\u043e\u0432 \u0432 \u0442\u0435\u043b\u0435\u0433\u0440\u0430\u043c: https://core.telegram.org/bots\r\n2. \u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0442\u043e\u043a\u0435\u043d \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0431\u043e\u0442\u043e\u043c \u043f\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438\r\n3. \u0421\u0434\u0435\u043b\u0430\u0439\u0442\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 API \u0442\u0435\u043b\u0435\u0433\u0440\u0430\u043c\u0430 (\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043a API: https://core.telegram.org/bots/api)\r\n4. \u0420\u0435\u0430\u043b\u0438\u0437\u0443\u0439\u0442\u0435 \u043b\u043e\u0433\u0438\u043a\u0443 \u0440\u0430\u0431\u043e\u0442\u044b \u0431\u043e\u0442\u0430 \u043f\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0443:\r\n   1. \u0423 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435: \u0437\u0430\u043f\u0440\u043e\u0441 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043f\u043e \u0438\u043c\u0435\u043d\u0438 \u0422\u0412 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b. \u0422\u043e \u0435\u0441\u0442\u044c \u043c\u044b \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0431\u043e\u0442\u0443 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0441 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0432 \u043e\u0442\u0432\u0435\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e\u0431 \u044d\u0442\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435. (\u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c `parse_mode = html` \u0434\u043b\u044f \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u0438 html \u0442\u0435\u0433\u043e\u0432 \u0432 \u0442\u0435\u043a\u0441\u0442\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0442\u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b)\r\n   2. \u0415\u0441\u043b\u0438 \u0442\u0430\u043a\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043e \u0438\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u043b \u043d\u0435\u043a\u043e\u0440\u0435\u043a\u0442\u043d\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 (\u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443, \u0441\u0442\u0438\u043a\u0435\u0440 \u0438 \u0442\u0434.) \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0441 \u043e\u0448\u0438\u0431\u043a\u043e\u0439.\r\n   3. \u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0442\u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0434\u043e\u043c\u0430\u0448\u043a\u0438 1.5 (\u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0433\u043e \u043d\u0435\u0442, \u043d\u0430\u043f\u0438\u0448\u0438\u0442\u0435 \u043c\u043d\u0435 \u0432 \u0442\u0435\u043b\u0435\u0433\u0440\u0430\u043c (@indionapolis), \u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044e \u0432\u0430\u043c \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u043a\u043e\u0434)\r\n4. \u041c\u044b \u043c\u043e\u0436\u0435\u043c \u0441\u0447\u0438\u0442\u0430\u0442\u044c, \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\r\n5. \u0422\u043e\u043a\u0435\u043d \u0442\u0435\u043b\u0435\u0433\u0440\u0430\u043c\u0430 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0443\u043a\u0430\u0437\u0430\u043d \u0432 \u0444\u0430\u0439\u043b\u0435 `.env` \u043f\u043e\u0434 \u0438\u043c\u0435\u043d\u0435\u043c `TELEGRAM_TOKEN` (\u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 .env \u0432\u044b \u0432 \u0433\u0438\u0442 \u043d\u0435 \u043f\u0443\u0448\u0438\u0442\u0435, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0449\u0438\u0439 \u0441\u0434\u0435\u043b\u0430\u0435\u0442 \u0441\u0432\u043e\u0439 \u0444\u0430\u0439\u043b \u0441\u043e \u0441\u0432\u043e\u0438\u043c \u0442\u043e\u043a\u0435\u043d\u043e\u043c)\r\n8. \u0418\u0442\u043e\u0433\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442\u044c \u0442\u0435\u0441\u0442 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 flake8, black \u0438 MyPy\r\n\r\n\r\n\u041f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438:\r\n* https://core.telegram.org/bots/tutorial\r\n* https://core.telegram.org/bots/features\r\n\r\n\r\n\r\n\r\n\r\n\u0417\u0430\u043f\u0443\u0441\u043a \u0442\u0435\u0441\u0442\u043e\u0432:\r\n\r\n```\r\nmake lint\r\nmake test\r\n```\r\n\r\n\u041f\u0440\u0438\u043c\u0435\u0440 \u0440\u0430\u0431\u043e\u0442\u044b \u0431\u043e\u0442\u0430:\r\n\r\n```\r\n# \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0431\u043e\u0442\u0430\r\npython -m main.py\r\n```\r\n\r\n```\r\n# \u0447\u0430\u0442 \u0432 \u0442\u0435\u043b\u0435\u0433\u0440\u0430\u043c\r\nUser:\r\n\r\nFamily Guy\r\n\r\nBot:\r\n\r\nName: Family Guy\r\nNetwork Name: FOX\r\nNetwork Country Name: United States\r\nSummary: Family Guy follows Peter Griffin the endearingly ignorant dad, and his hilariously offbeat family of middle-class New Englanders in Quahog, RI. Lois is Peter's wife, a stay-at-home mom with no patience for her family's antics. Then there are their kids: 18-year-old Meg is an outcast at school and the Griffin family punching bag; 13-year-old Chris is a socially awkward teen who doesn't have a clue about the opposite sex; and one-year-old Stewie is a diabolically clever baby whose burgeoning sexuality is very much a work in progress. Rounding out the Griffin household is Brian the family dog and a ladies' man who is one step away from AA.\r\n```\r\n\r\n## \u0423\u0441\u043b\u043e\u0436\u043d\u0435\u043d\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\r\n* \u0421\u0434\u0435\u043b\u0430\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0448\u043e\u0443 \u0432 \u0438\u0437\u0431\u0430\u043d\u043d\u043e\u0435\r\n* \u0412\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u0438\u0437\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u0448\u043e\u0443\r\n* \u0421\u0434\u0435\u043b\u0430\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0443\u0434\u0430\u043b\u044f\u0442\u044c \u0448\u043e\u0443 \u0438\u0437 \u0438\u0437\u0431\u0430\u043d\u043d\u043e\u0433\u043e\r\n\r\n## \u041a\u0440\u0438\u0442\u0435\u0440\u0438\u0438 \u043e\u0446\u0435\u043d\u0438\u0432\u0430\u043d\u0438\u044f\r\n1) \u0421\u0434\u0435\u043b\u0430\u0442\u044c \u043a\u043b\u0438\u0435\u043d\u0442 \u0434\u043b\u044f API \u0442\u0435\u043b\u0435\u0433\u0440\u0430\u043c\u0430 - 2 \u0431\u0430\u043b\u043b\u0430\r\n2) \u0421\u0434\u0435\u043b\u0430\u0442\u044c \u0431\u043e\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442 \u043b\u043e\u0433\u0438\u043a\u0443 \u043e\u0431\u0449\u0435\u043d\u0438\u044f - 2 \u0431\u0430\u043b\u043b\u0430\r\n3) \u0421\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0431\u043e\u0442\u0430 \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 - 2 \u0431\u0430\u043b\u043b\u0430\r\n4) \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u0437\u0443\u0447\u0435\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u0438\u043a\u0438 \u041e\u041e\u041f (\u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043a\u043b\u0430\u0441\u0441\u044b, \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0440\u0435\u043b\u0435\u0432\u0430\u043d\u0442\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u0434\u043b\u044f \u0438\u0445 \u0440\u0430\u0431\u043e\u0442\u044b) - 2 \u0431\u0430\u043b\u043b\u0430\r\n5) \u041f\u0440\u043e\u0439\u0442\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u043b\u0438\u043d\u0442\u0435\u0440\u0430\u043c\u0438 - 1 \u0431\u0430\u043b\u043b\r\n6) \u041f\u043e\u043a\u0440\u044b\u0442\u044c \u0442\u0435\u0441\u0442\u0430\u043c\u0438 \u043b\u043e\u0433\u0438\u043a\u0443 \u0440\u0430\u0431\u043e\u0442\u044b \u0431\u043e\u0442\u0430 - 1 \u0431\u0430\u043b\u043b\r\n7) \u0420\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043b\u043e\u0433\u0438\u043a\u0443 \u0438\u0437\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u0448\u043e\u0443 - \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0434\u043e\u043f 3 \u0431\u0430\u043b\u043b\u0430\r\n\r\n\r\n\r\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Telegram bot API facade that provides the subscription to custom chat commands via python decorators.",
    "version": "0.0.7",
    "split_keywords": [
        "telegram-bot",
        "telegram-bot-api",
        "telegram-api",
        "telegram",
        "bot-api",
        "bot",
        "tinkoff"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "45c9b4028fe80dba050fbc3b6284ec45523a9dae3433f39b1f4a09da05d259b5",
                "md5": "bdc88a05acb10ca6611161fb863b5abe",
                "sha256": "926a4f2ccadfeeffa9c740d427f09433ff4a6219280a5bd213fc81fa85433d6a"
            },
            "downloads": -1,
            "filename": "tinkoff_backend_academy_telegram_bot-0.0.7-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "bdc88a05acb10ca6611161fb863b5abe",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": null,
            "size": 7371,
            "upload_time": "2023-01-05T15:03:10",
            "upload_time_iso_8601": "2023-01-05T15:03:10.199255Z",
            "url": "https://files.pythonhosted.org/packages/45/c9/b4028fe80dba050fbc3b6284ec45523a9dae3433f39b1f4a09da05d259b5/tinkoff_backend_academy_telegram_bot-0.0.7-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-01-05 15:03:10",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "lcname": "tinkoff-backend-academy-telegram-bot"
}
        
Elapsed time: 0.02735s