An open API service indexing awesome lists of open source software.

https://github.com/zhuravlevx/yandexrasptelegram

Creates a Telegram bot to display up-to-date information about train departures and arrivals based on Yandex API.
https://github.com/zhuravlevx/yandexrasptelegram

python telegram telegram-bot yandex yandex-api yandex-rasp

Last synced: over 1 year ago
JSON representation

Creates a Telegram bot to display up-to-date information about train departures and arrivals based on Yandex API.

Awesome Lists containing this project

README

          


Yandex Rasp Telegram









**Yandex Raspisaniye Telegram** – это бот написанный на языке «Python», позволяющий узнать расписание ближайших пригородных поездов или поездов дальнего следования по указанному маршруту пользователя, который он указывает. Поддерживает страны России и Беларуси.

### Откуда берутся данные об расписаниях

Данные бот получает при помощи [API Яндекс.Расписаний](https://yandex.ru/dev/rasp/). API организован в соответствии с принципами REST. Взаимодействие с API осуществляется по протоколу HTTPS посредством GET-запросов. Сервис возвращает данные в форматах: JSON, XML. В нашем случае, бот получает данные в JSON формате.

### Функционал бота

- Вывод актуальных расписаний пригородных поездов и поездов дальнего следования на текущую дату по указанному маршруту следования пользователем.
- Изменение маршрута следования пользователем для расписаний видов транспорта.
- Автообновление последнего вызванного пользователем расписание в течение часа, обновляя информацию на актуальную, а также в случае необходимости отмены автообновления.
- Отключение автообновление и очистка текущего маршрута следования.
- Случайные изображения пригородных поездов и поездов дальнего следования для разнообразия в функциях расписания и не только.


### Установка бота

В данном боте используются следующие модули, требуемые к установке:
- `Aiogram` – версии 3.17.0
- `Requests` – версии 2.32.3
- `Babel` – версии 2.16.0
- `Pytz` – версии 2024.2
- `Python-dotenv` - версии 1.0.1
- `Pydantic` - версии 2.10.4
- `Json5` - версии 0.10.0
- `motor` - версии 3.6.0 и выше

Для установки всех модулей проекта, присутствует файл `requirements.txt`, которым можно воспользоваться при помощи команды в терминале проекта.
```
pip install -r requirements.txt
```

Для того чтобы бот функционировал, необходимо создать в корневой папке файл с именем `.env` и впишите туда следующие параметры:

```
TOKEN_YANDEX=Токен_Яндекс_Расписаний
TOKEN_BOT=Токен_telegram_бота
MONGO_URL=Cсылка_базы_данных
```
Без данного файла, бот функционировать **не будет**.

### База данных: MongoDB

[**MongoDB**](https://www.mongodb.com/) — бесплатная система управления базами данных, которая работает с документоориентированной моделью данных. Для того чтобы бот сохранял информацию и мог функционировать, необходимо получить ссылку для подключения к базе данных.

Перед тем, как получить ссылку для подключения к базе данных, вам нужно создать кластер. После чего нажмите на кнопку **Connect** и затем выберете тип подключения **MongoDB for VS Code**. Далее скопируйте ссылку и вставьте её в файл `.env` в строку `MONGO_URL=`.

### Конфигурация бота

В боте вы можете поменять значения по своему удобству и желанию. На текущий момент для изменения, доступны следующие параметры:
- `token_yandex` – токен Яндекса, который нужно получить на сайте [API Яндекс Расписаний](https://yandex.ru/dev/rasp/raspapi#examples), иначе бот работать не будет.
- `token_bot` – токен бота Telegram на который будут отправляться данные. Сам токен можно получить у [BotFather](https://telegram.me/botfather).
- `suburban_url` – ссылка изображений электричек, которые будут случайно изображаться вовремя вызова расписания электричек. Формат `.webp` не поддерживается, иначе бот не будет корректно работать.
- `train_url` – ссылка изображений поездов, которые будут случайно изображаться вовремя вызова расписания поездов дальнего следования. Формат `.webp` не поддерживается, иначе бот не будет корректно работать.
- `suburban_map` – эмодзи под типы видов электричек. Можно изменять и добавлять новые при необходимости.
- `train_map` – эмодзи под типы видов поездов. Можно изменять и добавлять новые при необходимости.

### Авторы и авторские права

Данный бот имеет лицензию **«MIT License»**. Поскольку авторские права на данную лицензию отсутствует, другие имеют право использовать и изменять её для удовлетворения своих целей.

- **[ZhuravlevX](https://github.com/ZhuravlevX)** – реализатор идеи на Python.
- **[KryptonFox](https://github.com/KryptonFox)** – реализатор идеи на Python _(В дальнейшем на JavaScript или Rust)_.

Исходником данных и информации об расписаниях является [Яндекс.Расписания](https://t.rasp.yandex.ru/).