Как записать сообщение в переменную telebot

Обновлено: 25.06.2024

В настоящее время существует достаточно много разных популярных мессенджеров. Достоинством мессенджера Telegram является наличие богатого API, позволяющего взаимодействовать с мессенжером не людям, а программам, то есть писать боты.

Краткое введение в Telegram Bot API

Можете изучить полную документацию на Telegram Bot API, но непосредственно этим API мы пользоваться не будем. Но нужно понять, как это устроено внутри.

Самый простой пример тестовой страницы, которую можно загрузить при помощи API:

  1. Название бота (произвольное текстовое имя),
  2. Имя пользователя для бота (уникальное, из латинских букв, цифр, символа подчёркивания, должно заканчиваться на bot ).

В ответ вы получите от @BotFather токен.

Дальнейшее описание Telegram Bot API не нужно для выполнения заданий (т.к. мы будем использовать упрощающую разработку ботов библиотеку), но полезно для понимания.

Пример простого запроса getMe для проверки токена, который можно просто ввести в адресную строку браузера, заменив на токен вашего бота:

В ответ вы должны получить небольшой JSON с информацией о вашем боте.

Библиотека pytelegrambotapi (telebot)

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

Её необходимо установить при помощи pip, в pip она называется pytelegrambotapi. Соответствующая консольная команда может выглядеть, например, так:

Сразу же установите библиотеку requests, она пригодится для выполнения ряда заданий.

Под Windows команда называется просто pip . Параметр --user необходим, если вы запускаете pip под обычным пользователем и хотите установить библиотеку в пользовательский каталог.

Немного более подробно ознакомиться с написанием простейших ботов можно, например, в следующих статьях:

Реализация клавиатуры

Команды, набираемые пользователем, сложно декодировать, да и пользователь может ошибиться в их написании. Поэтому в Телеграме у ботов есть возможность использования клавиатуры для выбора стандартных действий пользователя. Есть два типа клавиатуры: ReplyKeyboardMarkup (более древняя) и InlineKeyboardMarkup (более современная и богатая возможностями), на второй и остановимся.

Теперь нам необходимо сделать обработчики кнопок. Это отдельные функции, которые необходимо зарегистрировать при помощи декоратора callback_query_handler . Эта функция будет получать объект callback_obj , которых хранит информацию о нажатии кнопки. В частности, помимо обычных данных о пользователе, чате и т.д. у этого объекта есть поле data , в котором хранится та самая информация, которая была привязана к кнопке. Пример такого обработчика:

Обратите внимание на вызов метода answer_callback_query . Он сообщает серверу телеграма, что обработка данного callback-запроса завершена. Если этот метод не вызвать, то на кнопке будут изображены часики, а сама кнопка будет недоступна для повторного нажатия.

Есть и другой способ определить, какая кнопка была нажата. Обратите внимание на параметр декоратора: func=lambda call: True . Это лямбда-функция, которая в данном случае всегда возвращает True . Это означает, что данный обработчик будет применяться ко всем callback-запросам. Но если эта функция будет возвращать не всегда True , то так можно установить обработчик для отдельных callback-запросов, а именно, будет вызван тот обработчик, для которого эта функция вернёт True .

Используем это для того, чтобы сделать разные обработчики для разных кнопок.

Как написать telegram-бота на python с помощью библиотеки telebot

Установка и настройка

Для начала давайте скачаем сам python. Сделать это можно на официальном сайте. Не забудьте поставить галочку add to PATH во время установки! После установки python’a нам понадобится хороший редактор кода. На помощь приходит компания JetBrains со своим бесплатным PyCharm. Мы уже близко, осталось скачать библиотеку telebot. Для этого заходим в командную строку и пишем:

Если всё прошло успешно, мы можем продолжать!

Думаю все знают о блокировки telegram в России и единственным решением как всегда остаётся vpn. Лично я рекомендую NordVPN.

Bot Father

В поиске telegram находим Bot Farher’a и создаем своего бота с помощью команды /newbot. Затем вводим имя и юзернейм. Обратите внимание, что юзернейм должен оканчиваться на bot!

Пишем telegram-бота на python с помощью библиотеки telebot часть 1

Как вы видите нам выдали специальный api токен, с помощью которого вы сможете управлять своим ботом (в моём случае это: 776550937:AAELEr0c3H6dM-9QnlDD-0Q0Fcd65pPyAiM). Свой токен Вы можете запомнить, но я рекомендую его записать.

Настал момент, которого ждали все. Открываем PyCharm и создаем новый проект.

Как написать telegram-бота на python с помощью библиотеки telebot

Тут рекомендую поставить всё как у меня (название, конечно можно изменить). После создания проекта, давайте создадим файл, в котором будет наш код. Кликните правой кнопкой по папке с вашем проектом, затем New → Python File. Отлично, начнем писать код. Импортируем библиотеку telebot, с помощью:

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

Напишем декоратор bot.message_handler(), с помощью которого наш бот будет реагировать на команду /start. Для этого в круглых скобках пишем commands=[‘start’]. В итоге у нас должно получиться это:

Как написать telegram-бота на python с помощью библиотеки telebot

Как написать telegram-бота на python с помощью библиотеки telebot

Вот что у вас должно получиться:

Как написать telegram-бота на python с помощью библиотеки telebot

Ну и второй способ, для тех, кто не ищет лёгких путей. Создаем новый декоратор bot.message_handler(), вот только в скобочки пишем content_types=[‘sticker’]. Далее всё как обычно. Создаем функцию, принимающую параметр message, а вот в ней пропишем print(message). Запускаем бота.

Как написать telegram-бота на python с помощью библиотеки telebot

Как написать telegram-бота на python с помощью библиотеки telebot

Как написать telegram-бота на python с помощью библиотеки telebot

Ну а на этом всё! Конечно, это не все возможно ботов в telegram, но основные возможности я вам показал. Спасибо за внимание.

Что такое message?

Теперь когда мы вводим команду /start, наш бот присылает огромное кол-во информации. Все, что мы сейчас получили — это ответ в формате json. Json — это простой формат для хранения структурированных данных. Все выводится в формате: ‘ключ’: значение. Давайте посмотрим на то, что получил я:

Смотрите, у ключа chat есть еще несколько ключей: first_name, last_name, username… и у каждого из них есть свои значения. Теперь обратимся к ключу id:

Как вы видите для того чтобы получить нужное значение необходимо просто записать название ключей через точку. А теперь смотрим на ответ от сервера:

Все идет как надо! Мы получили id чата, собственно как и хотели! А теперь получим имя отправителя. Тут, как вы заметили нужно использовать ключ from_user.

Теперь достанем значение у ключа first_name:

Ну вот и все! За пару секунд мы смогли получить id чата и мое имя в telegram. И еще раз, для тех кто не понял:

Как написать telegram-бота на python с помощью библиотеки telebot

Чтобы получить значение ключа first_name, нам нужно сначала обратиться к ключу chat, а только потом уже к first_name!

Заключение

Ну а на этом всё! Надеюсь вы поняли как получать данные от сервера, обрабатывать их и использовать где нужно. Спасибо за внимание.

В этой статье я покажу как сделать простого бота для Telegram, который умеет конвертировать валюту.

У вас должен быть установлен Python 3. Если нет, то вы можете прочитать здесь как это сделать на Windows.


Откройте Телеграм и найдите через Поиск бота BotFather.


Вы найдете много чего с таким названием. Вам нужен тот, что с галочкой синей. Выберите этого бота и запустите нажав на кнопку "Start". BotFather вам покажет все свои команды, используя которые, вы будете потом управлять своими ботами.

Для создания нового бота, вам нужно нажать на команду /newbot или вы можете сразу написать ему так. Вас попросят дать название своему боту.

Здесь вы можете ввести любое имя. Имя можно потом изменить. Я назову своего бота "Валютный бот". После ввода имени нужно придумать уникальный ник для бота(username). Этот ник должен быть на английском и всегда заканчиваться на слово Bot. И еще там не должно быть пробелов. Имейте ввиду, что все популярные названия уже заняты кем-то другим. Поэтому я назову Currency005Bot.


В самом начале есть ссылка на вашего бота, начинающаяся на t.me/. Нажав на нее вы перейдете к вашему боту. Также эту ссылку можно отправлять всем.

А красным цветом внизу написан токен вашего бота. Этот токен как пароль от вашего бота. Его не нужно никому сообщать. Мы будем использовать его при написании программы для бота.

У вас официально есть бот! Конечно, он пока ничего не умеет. Только родился.

2. Первое слово бота Чтобы продолжить дальше, вам нужно научиться работать в Командной строке. Вы можете прочитать статью Работа в терминале в Windows, Linux и MacOS (cli, shell, bash, cmd) .

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

Откройте ваш любимый редактор кода (Sublime Text, PyCharm, Notepad++, Idle и т.п.). Создайте новый пустой файл. Сохраните его с названием bot.py в любую папку(желательно не слишком глубоко, а для начала можно сразу в корне диска С: ).

В этом файле будет написана наша программа для бота. Давайте для начала напишем простую программу, которая печатает текст "Hello World!". Для этого напишите в файле:

Теперь попробуем запустить его. Откройте Командную строку(Windows) или Terminal(Linux, Mac). Использую команду cd перейдите в папку, где вы сохранили файл bot.py.

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

И нажмите Enter. Ваша программа запустится и напечатает "Hello, World!". Мы умеем запускать программы на Python.

Команда print() в языке Python печатает текст на экране. А в скобках нужно указать что именно нужно напечатать. Наш текст для печати мы указали в кавычках. В Python в кавычках записывает любые текстовые данные. И текстовые данные называются строкой или string.

Кроме текстовых данных есть еще числовые данные. И команда print() также умеет их тоже печатать:

Как вы заметили для чисел кавычки не нужны.

Переменные
Переменные в программировании это временные хранилища данных, т.е. они могут сохранять в себе какое-либо значение. И записываются они как в математике:

Мы сначала сохранили в переменной х строку "Hello world" а потом распечатали x. Если вы сохраните такой файл и запустите его снова в командной строке командой:

То вы увидите что программа напечатала на экран не "х", а "Hello World". Потому x - это переменная, которая хранит в себе значение "Hello World".

Также в переменной можно сохранить любые другие значения. И они могут называться как угодно, не только x или y.

Скачиваем библиотеку для создания бота

Чтобы написать бота в Python, нам нужно скачать библиотеку(или пакет) python-telegram-bot для Python. Библиотеки - это дополнительные ресурсы для Python, которые улучшают его способности. Если Python что-то не умеет, вы можете скачать ему библиотеку и он научится как это делать.

Чтобы скачать библиотеку мы будем использовать команду pip. А Pip - это штучка, которая умеет скачивать библиотеки и удалять их. Его еще называют Пакетным менеджером.

Откройте командную строку и напишите:

Значит успешно установлено. Теперь мы можем использовать его.

Пишем программу для бота

Откройте ваш код и удалите все что вы там написали. И для начала создайте переменную token и присвойте этой переменной токен вашего бота. Помните? Когда мы создавали бота, BotFather отправил нам красный токен. У вас будет примерно так:

Токен это строка, поэтому она в кавычках. Здесь мой токен, а вы используйте свой.

Теперь мы подключим разные классы(классные штучки) с библиотеки телеграма, чтобы использовать их в своей программе. Уберите токен вниз и в самой первой строчке напишите:

Мы подключили два класса: Updater и MessageHandler. В языке Python имеет значение регистр букв(заглавные, строчные буквы). Обязательно нужно писать именно так.

а про CommandHandler расскажу чуть ниже.

Давайте создадим новый объект Updater и запустим его. Создается он вот так:

Теперь запускаем Updater:

Первая строчка запускает, а вторая строчка ждет пока вы нажмете Ctrl+C, а когда нажмете завершает работу бота.

Сейчас ваш код должен выглядеть примерно таким:

я незаметно добавил строчку print("Бот запущен. Нажмите Ctrl+C для завершения"). Вы тоже добавьте. Пора попробовать запустить бота. Сохраните файл. И запустите его:

Хотя бот запущен, он все равно ничего не имеет. Какой бесполезный бот! Нажмите Ctrl+C чтобы завершить его работу. Обычно завершение занимает 3-5 секунд.

Добавляем обработчик команды
У ботов есть команды. Они начинаются со знака / (слэш). Например: /newbot, /start. У каждого бота они свои. Но у всех есть команда /start, которая запускается когда кто-то начинает чат с ботом.

Мы сейчас сделаем так, чтобы наш бот представлялся, когда кто-то пишет ему команду /start. Для этого нам нужно создать обработчик для команды start. Такой обработчик создается с помощью класса CommandHandler.

Мы скажем этому диспетчеру, что у нас есть новый обработчик для команды start:


PyCharm и Python3

Пришло время установить Python (язык программирования на котором мы будем писать нашего бота ), и среду разработки PyCharm. Конечно по началу можно обойтись стандартными средствами операционной системы, простым Блокнотом или другим текстовым редактором. Но как показывает практика, Python очень привередлив к синтаксису и оформлению кода, поэтому лучшим решением будет, использовать среду разработки.

Писать код я буду под Виндой, поэтому:

Переходим на официальный сайт Python и выбираем нужную нам версию 3.6.4: для 32-разрядных или версию для 64-разрядных систем (зависит от твоего компьютера; узнать разрядность можно, открыв ПроводникЭтот компьютер — и по нажатию на правую кнопку мыши выбрать пункт Свойства).

Когда мы скачали нужную версию Python, запускаем установщик.

Важно: на самом первом этапе установки необходимо отметить Add Python 3.6 to PATH , это очень упростит нашу работу в будущем. Затем нажимаем на Install now и ждём окончания установки.


Чтобы проверить, правильно ли установился Python, открываем меню Пуск и в строке поиска набираем командная строка (в Windows 10 открыть поиск можно, просто нажав на лупу рядом с кнопкой Пуск) или Win+R.

В открывшемся окне командной строки выполняем команду python . В ответ должна открыться консоль Python (начинается с >>> ) как на картинке ниже.


Выполняем команду exit() , чтобы выйти из режима интерпретатора Python. Менеджер пакетов pip так же должен быть установлен, чтобы проверить, выполни команду pip -V . В ответ в консоли должна отобразиться версия pip :

pip 9.0.1 from c : \ users \ hpstr \ appdata \ local \ programs \ python \ python36 \ lib \ site - packages ( python 3.6 )

Возвращаемся в терминал (или в командную строку) и выполняем следующую команду:

Что здесь просиходит? Мы обращаемся к pip и хотим установить ( install ) волшебный модуль pyTelegramBotAPI , который и отвечает за создание и работу ботов.

Если модуль успешно установился, то мы должны увидеть надпись Successfully installed pyTelegramBotAPI-x.x.x. Собственно говоря, существует множество других модулей для Python (и не только), с помощью которых можно быстро запустить Telegram-бота; простыми словами pyTelegramBotAPI — это такой “конструктор”, в котором содержатся все необходимые нам компоненты-“кубики”.

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

Могу порекомендовать отличную и бесплатную среду — PyCharm от JetBrains. Эта компания специализируется на создании профессиональных сред для программирования. Если Microsoft Office практически всегда используется для работы с таблицами/презентациями и текстовыми документами, то программы от JetBrains занимают лидирующее положение среди программистов.

Итак, переходим на страницу скачивания PyCharm. Для скачивания доступно две версии: профессиональная и версия для сообщества. Версия для сообщества бесплатная. Ее и скачаем:



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


Дальше откроется окно самого редактора.

Теперь вы готовы начать писать программы на Python!

Начинаем писать код

Можно переходить к самой интересной части — написанию кода нашего бота. Открываем

Перво-наперво подключаем модуль telebot, который мы установили с помощью pip. Делаем это так:

Читайте также: