Share This
Связаться со мной
Крути в низ
Categories
//Telegram бот на Python для генерации случайных цитат

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

16.10.2021Category : Python

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

Сегодня мы расскажем, как написать Telegram бот на Python. Он будет генерировать случайные цитаты и отправлять их через определенный промежуток времени.

Telegram — это бесплатное кроссплатформенное облачное ПО для обмена мгновенными сообщениями (т.е. мессенджер). Имеет открытый исходный код. Помимо обмена сообщениями он также предоставляет функции видеосвязи, обмен файлами и ещё много других функций.

Прежде чем начать

Чтобы выполнить все этапы, описанные ниже, на вашем компьютере должен быть установлен Python 3. Также важно разбираться хотя бы в основах этого языка. Без этого вам будет тяжело понять те шаги, которые мы будем описывать.

Итак, сегодня мы рассмотрим:

  • настройку профиля бота в Telegram
  • написание кода для бота на Python

Погнали!

Настройка профиля бота в Telegram

Чтобы настроить новый бот, нам нужно сначала зарегистрировать его. Таким образом мы получим токен для доступа к Telegram API. Если у вас нет учетной записи Telegram, создайте ее здесь.

Щелкните значок поиска в Telegram, затем введите @botfather в строке поиска.

BotFather – это официальный бот, созданный Telegram для облегчения создания пользовательских ботов.

telegram bot na python dlja generacii sluchajnyh citat 08c29e5 - Telegram бот на Python для генерации случайных цитат

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

telegram bot na python dlja generacii sluchajnyh citat 9eb2f2b - Telegram бот на Python для генерации случайных цитат

Введите /start, чтобы начать.

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

telegram bot na python dlja generacii sluchajnyh citat 2bc0e52 - Telegram бот на Python для генерации случайных цитат

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

telegram bot na python dlja generacii sluchajnyh citat 6459ed8 - Telegram бот на Python для генерации случайных цитат

Теперь мы копируем наш токен доступа и сохраняем его где-нибудь у себя. Не забудьте должным образом защитить токен доступа, так как он служит паролем вашего бота. Если другой человек получит доступ к токену, он сможет поменять функциональность вашего бота, сломать его или ещё как-нибудь воспользоваться им в своих целях. Думаю, вы бы этого не хотели.

telegram bot na python dlja generacii sluchajnyh citat bf5f224 - Telegram бот на Python для генерации случайных цитат

Марк Лутц «Изучаем Python»

Скачивайте книгу у нас в телеграм

Скачать ×

Написание кода для бота на Python

Итак, мы создали наш бот в Telegram! Теперь давайте научим его что-нибудь делать!

Создайте новый каталог в своей любимой среде разработки и перейдите в него.

Далее мы создаем виртуальную среду. Виртуальная среда позволяет создавать разные пространства на вашем компьютере с различным набором библиотек и версий.

Создав виртуальную среду, вы сможете установить необходимые библиотеки в конкретный проект без необходимости устанавливать их глобально.

Создайте виртуальную среду env, выполнив следующую команду:

python -m venv env

При создании активируйте виртуальную среду, используя следующую команду:

source env/bin/activate

Затем нам нужно создать группу в Telegram и добавить нашего бота в качестве участника этой группы.

telegram bot na python dlja generacii sluchajnyh citat 3ff9830 - Telegram бот на Python для генерации случайных цитат

Теперь нам нужно получить идентификатор чата, мы можем сделать это, отправив эту команду в виде сообщения в группе Telegram:

/my_id BOT_NAME

После этого нам нужно открыть указанный ниже URL-адрес в браузере, чтобы получить идентификатор нашего чата:

https://api.telegram.org/botBOT_TOKEN/getUpdates  BOT_TOKEN = the token we copied earlier

Мы получаем ответ в виде JSON (это что-то вроде словаря Python), который содержит наш идентификатор чата.

telegram bot na python dlja generacii sluchajnyh citat d5fc912 - Telegram бот на 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

telegram bot na python dlja generacii sluchajnyh citat 3443448 - Telegram бот на Python для генерации случайных цитат

Ура, всё работает!

Давайте сделаем наш бот более интересным. Для этого подключимся к 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 bot na python dlja generacii sluchajnyh citat 4d40ec2 - Telegram бот на Python для генерации случайных цитат

Заключение

Итак, сегодня мы разобрали, как создать Telegram бот на Python.

Наш бот выдает случайные цитаты, но вообще Telegram-боты способны на многое и могут пригодиться для разных целей. Вы вполне можете подключить своего бота к другим API и разместить его на платформе, такой как Heroku, чтобы он был доступен 24/7.

Для получения дополнительной информации о создании ботов изучите документацию по ботам в Telegram.

Вот некоторые API, которые вы можете интегрировать со своим Telegram-ботом:

  • Случайные изображения собак
  • Открыть карту погоды
  • Конвертер валют
  • Футбол
  • Yahoo Finance

Надеемся, эта статья была вам полезна. Успехов в написании кода!

Перевод статьи «Building a Telegram Bot using Python to Generate Random Quotes».

От редакции Pythonist. Возможно, вам также будут интересны следующие статьи:

  • Создание телеграм-бота с веб-интерфейсом при помощи Python и Replit
  • Telegram-бот: от первой строчки до размещения
  • Пишем telegram-бота с задачками на Python и BS4
  • Телеграм бот для e-commerce на Python и Fauna
  • 41 views
  • 0 Comment

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Связаться со мной
Close