Телеграм-бот для поиска фотографий через API-ключ фотостока
Определение функциональных требований к боту
Перед работой над созданием бота, я решил создать реестр требований, чтобы точно отслеживать какие моменты я хочу увидеть в работе бота.
В моем представлении, бот, работающий с API фотостока, должен уметь работать с медиа-файлами. Помимо всего прочего, бот - есть бот, он должен уметь первоначально взаимодействовать с пользователем и отзываться на его команды. Соответственно, необходимо эти команды придумать и понять, что пользователь захочет сделать.
Размышляя таким образом, я пришел к следующему реестру функциональных и нефункциональных требований:
- Бот должен уметь начинать работу с пользователем через команду /start
- Бот должен уметь рассказывать о себе и о том зачем он нужен
- В случае, если пользователь забыл команды - напомнить пользователю о них через команду /help
- Иметь возможность работать как с открытыми запросами (на случай, если нужна случайная фотография), так и с закрытыми (при конкретных запросах)
- Выдавать ссылку на источник с фотографией, при выборе пользователем нужной фотографии (из 4-х)
Начало работы и создание заглушки
Для начала был создан файлик с начальными зависимостями в Python
"requirements.txt"
После создания этого файлика необходимо запустить команду `pip install -r [путь к файлу]` и указать путь к созданному requirements.txt
Получение API и создание внутреннего конфигурационного API файла
Далее также важный момент, для работы бота потребуется ДВА API ключа. Первый - Telegram Bot Key, второй - как раз Unsplash API.
Для того, чтобы получить ключ для бота Telegram, необходимо его создать. Сделать это можно через бота @BotFather.
При заходе в бота, необходимо открыть внутреннее интегрированное приложение через кнопку "Open" и создать своего бота:
После получения доступа к API бота - его нужно будет в дальнейшем сохранить в файл .env в той же папке, где и сам файл Python, но об этом чуть позже.
Теперь нужно получить API ключ фотостока, я выбрал Unsplash, так как получение API там не затруднено лишними тарифными планами и дополнительными регистрациями.
Чтобы получить доступ к API Unsplash необходимо зайти на их сайт, зарегистрироваться и в личном кабинете открыть новое приложение (проект), указать его вид и название. Важно, что Access и Secret ключи должны быть конфиденциальны и не могут передаваться третьим лицам, поэтому в этом проекте и статье, ключи будут скрыты.
После получения всех требуемых API ключей - сохраняем их в файл окружения .env в переменные, которые в дальнейшем будем использовать в Python-коде.
Разработка бота
Так как разработка в Python позволяет работать с разными существующими библиотеками, имеющие свои документации, будем пользоваться предоставленными правами.
Для работы бота я подключил несколько библиотек, такие как:
- python-telegram-bot - основная библиотека для создания Telegram ботов
- requests - библиотека для отправки HTTP-запросов к API Unsplash
- python-dotenv - загрузка переменных окружения из файла .env
- logging - логирование событий и ошибок для отладки
- os - взаимодействие с операционной системой
- uuid - генерация уникальных идентификаторов
📚 Методические материалы
| Description | |
|---|---|
| Python | Python в русском языке распространено название пито́н) — высокоуровневый язык программирования общего назначения, ориентированный на повышение производительности разработчика и читаемости кода. Синтаксис ядра Python минималистичен. В то же время стандартная библиотека включает большой объём полезных функций. Язык является полностью объектно-ориентированным в том плане, что всё является объектами |

