Простой Telegram-бот на Python за 30 минут. Как сделать бота в телеграмме python?

Добавим еще один обработчик для получения текстовых сообщений. Когда робот получает «Привет», он также говорит «Привет». Все остальные сообщения определяются как нераспознанные:

Как всё будет работать

В этом проекте есть три соединения: наш компьютер Python, сервер Telegram и клиент Telegram.

На компьютере запускается интерпретатор Python, а в интерпретаторе выполняется программа Python. Он отвечает за весь контент: у него есть все шаблоны текста, вся логика, все поведение.

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

Когда клиент Telegram запрашивает график бота, запрос достигает сервера, а сервер отправляет его на наш компьютер. Запрос обрабатывается программой на языке Python, ответ отправляется на сервер Telegram, а сервер возвращает ответ клиенту. Просто:

Телеграм-бот на Python

Обратите внимание, что наш робот работает только тогда, когда компьютер включен и на нем запущена программа Python. Если компьютер выключится, если вы потеряете доступ в Интернет или выключите переводчик, робот перестанет работать: Запросы будут поступать, но никто не будет отвечать. В следующей статье мы запустим все это на удаленном сервере и будем доступны в любое время.

Что будем делать

Если мы запишем наш план шаг за шагом, он будет выглядеть следующим образом:

  1. Регистрируем бота в Телеграме.
  2. Устанавливаем Python-библиотеку для работы с Телеграмом.
  3. Добавляем библиотеку в программу с гороскопом и учим программу реагировать на сообщения в чате.
  4. Пишем там же код, который покажет кнопки для выбора знаков зодиака.
  5. Сделаем так, чтобы по кнопкам появлялся гороскоп для этого знака.
  Инсталляция Python в Windows 10. Как установить питон на windows 10.

Давайте теперь разберем каждый пункт по очереди.

Регистрация нового бота

Найдите канал @BotFather в Telegram, который отвечает за подписку новых ботов:

Нажмите Start и введите команду /newbot. Он будет спрашивать по очереди имя и ник бота (мы нашли его только с третьей попытки, потому что остальные были заняты):

Часть 2: Подготовка к написанию кода

Как указано в заголовке, мы будем писать бота на языке Python. В этой статье описывается работа с библиотекой PyTelegramBotAPI (Telebot). Если у вас не установлен Python, сначала нужно сделать следующее: в терминале Linux введите.

sudo apt-get install python python-pip

Если вы используете Windows, вам нужно будет загрузить Python с официального сайта.

Затем в терминале Linux или в командной строке Windows введите следующее

pip install pytelegrambotapi

Теперь вы готовы к написанию кода.

Часть 3: Получаем сообщения и говорим «Привет»

Небольшое отступление. Telegram может информировать бота о действиях пользователя двумя способами: через запрос к серверу (длинный опрос) и через webhook, когда сервер Telegram сам отправляет сообщение, информирующее бота о том, что написал пользователь. Второй способ кажется очевидно лучшим, но требует выделенного IP-адреса и установки SS

if message.text == «Hello»: bot.send_message(message.from_user.id, «Здравствуйте, я могу вам помочь?») elif message.text == «/help»: bot.send_message(message.from_user.id, «Напишите Hello») else: bot.send_message(message.from_user.id, «Я вас не понимаю. Напишите /help.»)

Эта часть кода не нуждается в комментариях, как мне кажется. Теперь нам нужно добавить всего одну строчку в наш код (без всех методов).

bot.polling(none_stop=True, interval=0)

Теперь наш бот будет постоянно спрашивать сервер Telegram: «Кто-нибудь опросил меня?», и когда мы опросим нашего бота, Telegram передаст ему наше сообщение. Сохраните весь файл и запишите его в консоль.

Здесь bot.py - это имя нашего файла.

Теперь мы можем написать боту и посмотреть результат:

Отправлять сообщения, безусловно, весело, но еще веселее вести диалог с пользователем, задавать ему вопросы и получать ответы. Допустим, наш бот теперь поочередно спрашивает имя, фамилию и возраст пользователя. Для этого мы используем метод register_next_step_handler бота:

имя = »; фамилия = »; возраст = 0? @bot.message_handler(content_types=’text’) def start(message): if message.text == ‘/reg’: bot.send_message(message.from_user.id, «What is your name?»); bot.register_next_step_handler(message, get_name); bot. register_next_step_handler(message, get_name); #следующим шагом будет функция get_name else: bot. send_message(message.from_user.id, ‘Write /reg’); def get_name(message): #get name global name; name = message.text; bot.send_message(message.from_user. id, ‘Какая у вас фамилия?’); bot. register_next_step_handler(message, get_surname); def get_surname(message): global surname; surname = message.text; bot.send_message(‘Сколько вам лет?’); bot. register_next_step_handler(message, get_age); def get_age(message): global age; while age == 0: #confirm that age has changed try: age = int(message. text) #проверить, что возраст был введен правильно except Exception: bot.send_message(message.from_user.id, ‘Numeric, please’); bot.send_message(message.from_user.id, ‘Are you ‘+str(age)+’ old, your name ‘+name+’ ‘+lastname+’?’)

  Запуск контейнера Docker. Docker как запустить контейнер

И вот как мы записали данные пользователя. В данном примере показан очень упрощенный пример. Хорошо хранить промежуточные данные и состояния пользователя в базе данных, но сегодня мы работаем с роботом, а не с базой данных. Последний штрих — попросить пользователя подтвердить, что все правильно, не просто так, а с помощью ключей! Для этого нам необходимо немного изменить код метода get_age

def get_age(message): global age; while age == 0: #проверить, изменился ли возраст try: age = int(message.text) #проверить, правильный ли возраст except Exception: bot.send_message(message.from_user.id, 'In digits, please'); keyboard = types.InlineKeyboardMarkup(); #Наш T

@bot.callback_query_handler(func=lambda call: True) def callback_worker(call): if call.data == «yes»: #call.data — это данные обратного вызова, которые мы указали при объявлении кнопки. #код для сохранения или редактирования данных bot.send_message(call.message.chat.id, ‘Remember : )’); elif call.data == «no»:. #повтор

Теперь осталось добавить строку в начало файла:

из telebot импортированные типы

Вот и все, сохраните и запустите нашего бота:

Вы можете загрузить Python с официального сайта (о том, как установить пакет на Centos 8, читайте в этом посте), но мы не будем с этим возиться.

image

Часть 4: Кнопки и ветки сообщений

Чтобы установить пакет pyTelegramBotAPI, используйте pip :

pip install pytelegrambotapi

Теперь все готово, и мы можем приступить к написанию бота.

Поскольку наш бот является тестовой средой и не будет содержать много кода, я напишу его непосредственно на сервере, на котором установлена Centos 8 и который использует процессор Nano по умолчанию. Создайте файл bot.py, открыв его с помощью nano:

Сначала мы импортируем библиотеку pyTelegramBotAPI:

Импортный телебот

Затем установите переменную token, равную токену, который вы получили от BotFathe r для связи с Telegram Bot Api:

token = 'ваш токен api'

bot = telebot.TeleBot(token)

  Как победить любого соперника в крестики нолики | Принципы игры. Как выиграть в крестиках ноликах?

Установка Python и библиотеки pyTelegramBotAPI

Далее мы определяем декоратор. Пока что наш бот будет обрабатывать только команду start:

@bot.message_handler(commands=’start’)

pip install pytelegrambotapi

def start_message(message): bot.send_message(message.chat.id, ‘Hi!’)

Пишем Telegram Bot на Python

Если вы хотите, чтобы бот постоянно ждал запроса пользователя, напишите это в конце:

В конце мы получаем код:

import telebot token = 'Your token api' bot = telebot.TeleBot(token) @bot.message_handler(commands='start') def start_message(message): bot.send_message(message.chat.id, 'Hi!') bot.polling()

Далее откроем наш бот (вы можете найти его по имени) и дадим ему команду /start :

Поздравляем с первыми словами нашего бота PocketAdmin!
При запуске сценария может возникнуть следующая ошибка:

requests.exceptions.ConnectionError: (‘Соединение было прервано.’, ConnectionResetError(104, ‘Соединение сброшено сверстником’)).

Чтобы устранить проблему, можно попробовать подключиться через прокси-сервер:

из telebot import apihelper apihelper.proxy =

где login:password@ip:port - соответствующие данные для подключения к прокси-серверу.

Если вы получаете такие ошибки, как: Схема прокси Socks5 не поддерживается или отсутствуют зависимости Для поддержки SOCKS необходимо установить модули:

pip install requestsocks PySocks

telegram bot api start

Использование прокси в telebot

<'https':'socks5://login:password@ip:port'>

Оцените статью
Бизнес блог