Можно ли настроить бота в Telegram для получения уведомлений о новых оценках на образовательной платформе edu.gounn?

Как создать Телеграм бота, который будет отправлять уведомления о новых событиях в электронном дневнике, не имея доступа к API? Например, как реализовать уведомление о новой оценке по предмету "русский язык" с оценкой "4"?
  • 3 марта 2024 г. 15:49
Ответы на вопрос 2
Для настройки бота в Telegram для получения уведомлений о новых оценках на образовательной платформе edu.gounn, вам необходимо иметь доступ к API соответствующей образовательной платформы. 

Для создания Телеграм бота, который будет отправлять уведомления о новых событиях в электронном дневнике без доступа к API, можно воспользоваться веб-скрапингом. Веб-скрапинг - это процесс извлечения данных с веб-сайтов. Для этого можно использовать различные библиотеки на языке программирования Python, такие как BeautifulSoup или Selenium.

Ниже пример кода на Python с использованием библиотеки BeautifulSoup:

```python
import requests
from bs4 import BeautifulSoup
import telegram

# Получаем страницу с оценками
url = 'https://example.com/grades'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')

# Ищем оценку по предмету "русский язык" и оценке "4"
subject = 'русский язык'
grade = '4'

grades = soup.find_all('div', class_='grade')
for g in grades:
    if g.find('div', class_='subject').text == subject and g.find('div', class_='value').text == grade:
        # Отправляем уведомление в Telegram
        bot = telegram.Bot(token='YOUR_BOT_TOKEN')
        chat_id = 'YOUR_CHAT_ID'
        bot.sendMessage(chat_id=chat_id, text=f'Новая оценка по предмету "{subject}": {grade}')
```

Помните, что веб-скрапинг может быть нарушением прав доступа к данным в некоторых случаях, поэтому убедитесь, что у вас есть разрешение на извлечение данных с соответствующего веб-сайта.
Декомпозируй задачу на подзадачи. 
1. Как получить сведения о новых оценках? Если нет никакого API уведомления (скажем, на почту), то остаётся только вариант "периодически опрашивать и сравнивать с прошлым результатом".
Тут нужно пошариться по странице и понять, как она получает значения об оценках. Если эти значения вписаны уже в код HTML страницы - в помощь связка requests (ну или aiohttp) для скачивания страницы и bs4 для её разбора. Если эти значения подгружаются динамически через JS - это удобнее, можно выяснить, какой запрос подгружает сведения об оценках, и делать этот запрос самому. Инструменты разработчика в браузере помогут.

2. Как отправить сведения об оценках?
Если нет задачи управлять ботом через ТГ, а нужны исключительно оповещения на заранее заданный контакт, то необязательно делать полноценного бота - можно просто отправить запрос на сервер ТГ для отправки сообщения. Как - гуглится. Тогда у тебя основным скриптом будет парсер оценок, который будет дёргать функцию отправки уведомления.
Если есть задача, чтобы бот хранил историю оценок, отвечал на запросы и т.д. - то нужен полноценный бот. В этом случае нужно будет разбираться, например, с асинхронными ботами, чтобы иметь возможность параллельно вести два набора действий - периодическую проверку оценок и реакцию на сообщения от юзеров.
Похожие вопросы