Telegram бот на Python для генерации случайных цитат

Чат-боты – это программные приложения, используемые для ведения онлайн-чатов и автоматизации обслуживания клиентов с помощью текста или преобразования текста в речь. Чат-ботов можно использовать для таких вещей, как напоминания, запись встреч, рассылка, а также при ведении социальных сетей.

Сегодня мы расскажем, как написать 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. Возможно, вам также будут интересны следующие статьи: