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

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

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

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

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

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

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

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

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

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

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

  1. Регистрируем бота в Телеграме.
  2. Устанавливаем Python-библиотеку для работы с Телеграмом.
  3. Добавляем библиотеку в программу с гороскопом и учим программу реагировать на сообщения в чате.
  4. Пишем там же код, который покажет кнопки для выбора знаков зодиака.
  5. Сделаем так, чтобы по кнопкам появлялся гороскоп для этого знака.
  Visual Studio Code. Visual studio code что это?

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

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

Найдите канал @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+’?’)

  Первый взгляд на SharePoint. Sharepoint что это за программа.

И вот как мы записали данные пользователя. В данном примере показан очень упрощенный пример. Хорошо хранить промежуточные данные и состояния пользователя в базе данных, но сегодня мы работаем с роботом, а не с базой данных. Последний штрих — попросить пользователя подтвердить, что все правильно, не просто так, а с помощью ключей! Для этого нам необходимо немного изменить код метода 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)

  Сквозные тесты. E2e тестирование что это.

Установка 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'>

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