Как создать базового бота Telegram с Python 3
Если вы являетесь пользователем Telegram, в какой-то момент у вас обязательно был «разговор» с чат-ботом. Обладая удивительной настраиваемостью, боты Telegram предлагают множество преимуществ – будь то автоматизация задач или просто небольшое развлечение с играми в вашей чат-группе.
Хотя для некоторых разработка бота может показаться сложной задачей, на самом деле это не так. При правильном планировании вы можете настроить бота Telegram менее чем за час! Вот как создать простого бота Telegram, который при запросе выводит милые картинки интернет-кошек.
Начиная
В этом руководстве мы собираемся использовать Python 3, библиотеку python-telegram-bot и requests , а также TheCatAPI .
У каждого бота в Telegram есть уникальный токен, который помогает ему общаться с Bot API , чтобы использовать интерфейс обмена сообщениями приложения. Bot API, одна из самых популярных функций Telegram среди разработчиков, позволяет использовать его сообщения в качестве интерфейса.
Чтобы получить токен, начните разговор с @BotFather, который, как следует из названия, является официальным ботом, который позволяет вам создавать и настраивать собственных ботов. Вы можете получить доступ к боту, используя данную ссылку или, альтернативно, выполнить поиск «@botfather» в Telegram.
Оказавшись в чате, создайте своего бота, набрав команду / newbot . Продолжайте устанавливать имя и логин вашего бота (мы решили назвать наш @pawsomebot). После этого вы получите токен, уникальный для вашего бота.
Теперь, когда у нас есть все предпосылки, пора переходить к захватывающей части!
Установка библиотек
Если вы используете Windows, откройте командную строку и введите следующие команды:
pip install python-telegram-bot
pip install requests
Если вы используете macOS или Linux, используйте вместо этого следующие команды на своем терминале. Кроме того, в Linux убедитесь, что вы вошли в систему как пользователь с привилегиями sudo.
pip3 install python-telegram-bot
pip3 install requests
Написание программы
Создайте новую папку на своем компьютере и откройте ее в своем любимом редакторе. Создайте новый файл и назовите его main.py. Этот файл будет содержать исходный код вашего бота.
Теперь давайте импортируем библиотеки, которые мы установили ранее, вместе с некоторыми из их встроенных функций.
from telegram.ext import Updater, CommandHandler
import requests
import re
С этого момента программа выполняет доступ к TheCatAPI, получает URL-адрес случайного изображения и отправляет это изображение в чат пользователя.
Начнем с функции получения URL-адреса изображения, что можно сделать с помощью модуля запросов. В этой функции мы загружаем данные JSON случайного файла, предоставленного TheCatAPI, и извлекаем его URL для дальнейшего использования. Чтобы посмотреть формат объекта JSON, перейдите на страницу https://api.thecatapi.com/v1/images/search в своем браузере. Вы заметите что-то вроде этого:
[{"breeds":[],"id":"a8c","url":"url.jpg","width":800,"height":533}]
Обратите внимание, что объект JSON – это массив, содержащий словарь. Этот словарь содержит URL с ключом url. Чтобы извлечь URL-адрес, нам нужно указать первый элемент массива, а затем соответствующий ключ.
def getUrl():
#obtain a json object with image details
#extract image url from the json object
contents = requests.get('https://api.thecatapi.com/v1/images/search')
url = contents[0]['url']
return url
Далее нам нужно отправить это изображение в чат пользователя. Для этого нам понадобится URL изображения, а также уникальный идентификатор чата пользователя. Для этого создадим функцию-оболочку. Сначала мы вызываем getUrl () . функция для получения URL-адреса случайного изображения – этот URL-адрес изменяется каждый раз, когда ваша программа выполняет итерацию по функции.
Затем следует получение идентификатора чата пользователя-получателя, который определяет целевое местоположение бота для сообщений, и анализ URL-адреса с помощью встроенной функции send_photo () API бота .
def sendImage(bot, update):
url = getUrl()
chat_id = update.message.chat_id
bot.send_photo(chat_id=chat_id, image=url)
Чтобы узнать больше о различных встроенных функциях Bot API и о том, как они работают, не стесняйтесь проверить официальную документацию Telegram после этого руководства.
Наконец, давайте создадим функцию, которая контролирует общую работу бота. В этой функции – условно называемой main () – мы отправляем HTTP-запрос в API бота, используя токен, полученный в начале руководства, а затем определяем, как будет выглядеть взаимодействие бота с пользователем. В таком простом случае, как наш, это, по сути, означает запуск бота и вызов функции sendImage () по запросу пользователя.
def main():
updater = Updater("1190888035:AAGeJ9316R95NqJLFefV5vQA-UL4np11V2c")
#call sendImage() when the user types a command in the telegram chat
updater.dispatcher.add_handler(CommandHandler('meow',sendImage))
#start the bot
updater.start_polling()
updater.idle()
if __name__ == '__main__':
main()
Ваша окончательная программа должна выглядеть так:
from telegram.ext import Updater, CommandHandler
import requests
import re
def getUrl():
#obtain a json object with image details
#extract image url from the json object
contents = requests.get('https://api.thecatapi.com/v1/images/search')
url = contents[0]['url']
return url
def sendImage(bot, update):
url = getUrl()
chat_id = update.message.chat_id
bot.send_photo(chat_id=chat_id, image=url)
def main():
updater = Updater("1190888035:AAGeJ9316R95NqJLFefV5vQA-UL4np11V2c")
#call sendImage() when the user types a command in the telegram chat
updater.dispatcher.add_handler(CommandHandler('meow',sendImage))
#start the bot
updater.start_polling()
updater.idle()
if __name__ == '__main__':
main()
Ваш собственный Telegram-бот
Поздравляю! Вы создали своего собственного бота для снятия стресса, который по запросу отправляет изображения самых симпатичных интернет-кошек из открытых источников. Попробуйте запустить свою программу и введите / мяу в чате бота, чтобы активировать ее.
Хотя это может быть простой бот с ограниченной функциональностью, он показывает, насколько мощна экосистема разработки ботов Telegram. Вы можете добавить любое количество сложных подпрограмм и функций для улучшения функциональности вашего бота – нет предела. Чтобы узнать больше об удивительных ботах Telegram, созданных участниками на протяжении многих лет, просмотрите наш список полезных ботов Telegram .
Вы также можете найти множество лицензионных программ с открытым исходным кодом для ботов Telegram на таких платформах, как GitHub. Большинство лицензий с открытым исходным кодом позволяют вам использовать, изучать, загружать или изменять исходный код программы.
Разместите свой Telegram-бот онлайн
Теперь, когда ваш бот настроен и работает, попробуйте закрыть main.py на своем компьютере и использовать бота в своем приложении для обмена сообщениями Telegram. Он по-прежнему отвечает на команду / meow ? Нет, это не так.
Как новичок, вы можете быть сбиты с толку, почему main.py на вашем ПК должен быть запущен, если вы уже создали бот, работающий в Интернете. Причина этого в том, что программа использует ваш компьютер в качестве локального сервера для отправки HTTP-запросов к API, используемым в этой программе.
Таким образом, необходимость запускать программу каждый раз, когда вы хотите использовать приложение, невыполнима и не удобна. Чтобы решить эту проблему, нам нужно удалить зависимость бота от вашего устройства.
Один из способов сделать это – использовать недорогую печатную плату (PCB), такую как Raspberry Pi , для настройки собственного веб-сервера и использования его для запуска вашей программы. Он имеет те же преимущества, что и запуск программы на вашем ПК, без затрат на то, чтобы держать его включенным весь день и ночь, поскольку печатные платы, как правило, имеют значительно меньшее потребление энергии.
Кроме того, вы также можете развернуть свою программу в облаке. Перейдите на платформу хостинга веб-приложений, такую как Heroku, AWS, Google Cloud или Microsoft Azure, и выберите подписку, которая наилучшим образом соответствует вашим потребностям. Мы рекомендуем выбрать бесплатную пробную версию или подписку и обновлять ее по мере увеличения масштаба или объема вашей программы.