Чат-боты – это программные приложения, используемые для ведения онлайн-чатов и автоматизации обслуживания клиентов с помощью текста или преобразования текста в речь. Чат-ботов можно использовать для таких вещей, как напоминания, запись встреч, рассылка, а также при ведении социальных сетей.
Сегодня мы расскажем, как написать Telegram бот на Python. Он будет генерировать случайные цитаты и отправлять их через определенный промежуток времени.
Telegram — это бесплатное кроссплатформенное облачное ПО для обмена мгновенными сообщениями (т.е. мессенджер). Имеет открытый исходный код. Помимо обмена сообщениями он также предоставляет функции видеосвязи, обмен файлами и ещё много других функций.
Прежде чем начать
Чтобы выполнить все этапы, описанные ниже, на вашем компьютере должен быть установлен Python 3. Также важно разбираться хотя бы в основах этого языка. Без этого вам будет тяжело понять те шаги, которые мы будем описывать.
Итак, сегодня мы рассмотрим:
- настройку профиля бота в Telegram
- написание кода для бота на Python
Погнали!
Настройка профиля бота в Telegram
Чтобы настроить новый бот, нам нужно сначала зарегистрировать его. Таким образом мы получим токен для доступа к Telegram API. Если у вас нет учетной записи Telegram, создайте ее здесь.
Щелкните значок поиска в Telegram, затем введите @botfather
в строке поиска.
BotFather – это официальный бот, созданный Telegram для облегчения создания пользовательских ботов.

Теперь нажмите кнопку «Start», чтобы начать. Далее вы должны получить следующее сообщение:

Введите /start
, чтобы начать.
Затем мы создаем бота, выполнив команду /newbot
.

После этого мы вводим желаемое имя и пользовательское имя (по этому нику люди смогут найти его) для бота. Обратите внимание, что это имя должно заканчиваться на -bot
и быть уникальным.

Теперь мы копируем наш токен доступа и сохраняем его где-нибудь у себя. Не забудьте должным образом защитить токен доступа, так как он служит паролем вашего бота. Если другой человек получит доступ к токену, он сможет поменять функциональность вашего бота, сломать его или ещё как-нибудь воспользоваться им в своих целях. Думаю, вы бы этого не хотели.
[python_ad_block]Написание кода для бота на Python
Итак, мы создали наш бот в Telegram! Теперь давайте научим его что-нибудь делать!
Создайте новый каталог в своей любимой среде разработки и перейдите в него.
Далее мы создаем виртуальную среду. Виртуальная среда позволяет создавать разные пространства на вашем компьютере с различным набором библиотек и версий.
Создав виртуальную среду, вы сможете установить необходимые библиотеки в конкретный проект без необходимости устанавливать их глобально.
Создайте виртуальную среду env
, выполнив следующую команду:
python -m venv env
При создании активируйте виртуальную среду, используя следующую команду:
source env/bin/activate
Затем нам нужно создать группу в Telegram и добавить нашего бота в качестве участника этой группы.

Теперь нам нужно получить идентификатор чата, мы можем сделать это, отправив эту команду в виде сообщения в группе Telegram:
/my_id BOT_NAME
После этого нам нужно открыть указанный ниже URL-адрес в браузере, чтобы получить идентификатор нашего чата:
https://api.telegram.org/botBOT_TOKEN/getUpdates BOT_TOKEN = the token we copied earlier
Мы получаем ответ в виде JSON (это что-то вроде словаря Python), который содержит наш идентификатор чата.

Теперь мы создаем новый файл python с именем bot.py
и добавляем в него следующие строки кода:
import requests import time # list of quotes quotes = [ 'First, solve the problem. Then, write the code. – John Johnson', 'Experience is the name everyone gives to their mistakes. – Oscar Wilde', 'Code is like humor. When you have to explain it, it’s bad. – Cory House', 'Before software can be reusable it first has to be usable. – Ralph Johnson', 'Optimism is an occupational hazard of programming: feedback is the treatment. - Kent Beck' ] # loop through the quotes for quote in quotes: url = 'https://api.telegram.org/bot1848805395:AAHaacRzz3vDJ8vrQqVZ4vMPTqY1OBOQ12Q/sendMessage?chat_id=CHAT_ID&text="{}"'.format(quote) requests.get(url) # sends new quotes every 20seconds time.sleep(20)
Перед тестированием бота нам необходимо установить модуль requests. Делается это так:
pip install requests
Теперь давайте протестируем наш бот, запустив наш файл Python в терминале:
python bot.py

Ура, всё работает!
Давайте сделаем наш бот более интересным. Для этого подключимся к API, который будет снабжать нас случайными цитатами программистов.
Для получения случайных цитат мы будем использовать этот API и команду /random
.
Добавим следующие строки кода в начало нашего файла:
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters import json
Теперь давайте создадим функцию, отправляющую случайные цитаты программистов, добавив следующие строки кода:
telegram_bot_token = "TOKEN" updater = Updater(token=telegram_bot_token, use_context=True) dispatcher = updater.dispatcher def random(update, context): # fetch data from the api response = requests.get('http://quotes.stormconsultancy.co.uk/random.json') data = response.json() # send message context.bot.send_message(chat_id=update.effective_chat.id, text=data['quote']) # linking the /random command with the function random() quotes_handler = CommandHandler('random', random) dispatcher.add_handler(quotes_handler)
Что ж, давайте запустим файл и напишем /random
в нашу группу в Telegram. Наш бот должен ответить случайной цитатой.

Заключение
Итак, сегодня мы разобрали, как создать Telegram бот на Python.
Наш бот выдает случайные цитаты, но вообще Telegram-боты способны на многое и могут пригодиться для разных целей. Вы вполне можете подключить своего бота к другим API и разместить его на платформе, такой как Heroku, чтобы он был доступен 24/7.
Для получения дополнительной информации о создании ботов изучите документацию по ботам в Telegram.
Вот некоторые API, которые вы можете интегрировать со своим Telegram-ботом:
Надеемся, эта статья была вам полезна. Успехов в написании кода!
Перевод статьи «Building a Telegram Bot using Python to Generate Random Quotes».
От редакции Pythonist. Возможно, вам также будут интересны следующие статьи:
- Создание телеграм-бота с веб-интерфейсом при помощи Python и Replit
- Telegram-бот: от первой строчки до размещения
- Пишем telegram-бота с задачками на Python и BS4
- Телеграм бот для e-commerce на Python и Fauna