telegram bot python примеры кода

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

15 минут — и можете запускать своего первого бота.

В первой части мы сделали гороскоп на Python, который выдаёт нам прогноз на день по знаку зодиака. Сегодня пойдём дальше: теперь этот же генератор гороскопов будет встроен в Телеграм в виде бота.

Да. То, что обычно на курсах продают за 50 тысяч рублей, мы вам сейчас расскажем за 15 минут бесплатно.

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

В этом проекте три звена: наш компьютер с Python, сервер Телеграма и Телеграм-клиент.

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

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

Когда клиент с Телеграмом запрашивает у бота гороскоп, запрос приходит на сервер, а сервер отправляет его на наш компьютер. Запрос обрабатывается программой на Python, ответ идёт на сервер Телеграма, сервер отдаёт ответ клиенту. Изи:

telegram bot python примеры кода. bot. telegram bot python примеры кода фото. telegram bot python примеры кода-bot. картинка telegram bot python примеры кода. картинка bot. 15 минут — и можете запускать своего первого бота.

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

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

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

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

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

В Телеграме находим канал @BotFather — он отвечает за регистрацию новых ботов:

telegram bot python примеры кода. 01. telegram bot python примеры кода фото. telegram bot python примеры кода-01. картинка telegram bot python примеры кода. картинка 01. 15 минут — и можете запускать своего первого бота.Первый в списке со специальным значком подтверждения — это он.

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

telegram bot python примеры кода. 02 1. telegram bot python примеры кода фото. telegram bot python примеры кода-02 1. картинка telegram bot python примеры кода. картинка 02 1. 15 минут — и можете запускать своего первого бота.С третьей попытки нам дали нового бота и токен для управления. Токен нужен для управления ботом, поэтому на экране его нет.

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

Есть два основных способа работать с телеграмом в Python: через библиотеку telebot и с помощью Webhook. Мы будем использовать библиотеку — так проще и быстрее.

Чтобы её установить, запускаем командную строку от имени администратора (если у вас Windows) и пишем команду pip install pytelegrambotapi

telegram bot python примеры кода. 03 1. telegram bot python примеры кода фото. telegram bot python примеры кода-03 1. картинка telegram bot python примеры кода. картинка 03 1. 15 минут — и можете запускать своего первого бота.В конце видим сообщение об успешной установке, значит всё сделали правильно.

Подключаем библиотеку и получаем сообщения

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

Единственное, о чём нужно не забыть — заменить слово «токен» на настоящий токен, который дал нам @BotFather. Открываем программу гороскопа и добавляем.

Теперь научим бота реагировать на слово «Привет». Для этого добавим после строчек с импортом новый метод и сразу пропишем в нём реакцию на нужное слово. Если не знаете, что такое метод и зачем он нужен, — читайте статью про ООП.

И последнее, что нам осталось сделать до запуска, — добавить после метода такую строчку:

Она скажет программе, чтобы она непрерывно спрашивала у бота, не пришли ли ему какие-то новые сообщения. Запускаем программу и проверяем, как работает наш бот.

telegram bot python примеры кода. 04 1. telegram bot python примеры кода фото. telegram bot python примеры кода-04 1. картинка telegram bot python примеры кода. картинка 04 1. 15 минут — и можете запускать своего первого бота.Бот отвечает именно так, как мы запрограммировали. Класс. telegram bot python примеры кода. 05 1. telegram bot python примеры кода фото. telegram bot python примеры кода-05 1. картинка telegram bot python примеры кода. картинка 05 1. 15 минут — и можете запускать своего первого бота.Такая ошибка во время запуска программы означает, что компьютер не может соединиться с сервером telegram.org, потому что его блокирует Роскомнадзор. Что делать? Сложно сказать. Если бы вы жили в другой стране, этой проблемы бы не было. Ещё можно использовать какие-то средства, которые направляют ваш трафик через другую страну, но рассказ об этих средствах является в России преступлением, поэтому тут мы вам ничего не можем подсказать.

Добавляем кнопки

Чтобы пользователям нашего бота было удобно, покажем им сразу все знаки зодиака в виде кнопок. А потом сделаем так, что когда на них нажимаешь — появляется гороскоп для этого знака на сегодня.

Добавляем код с кнопками в раздел, который реагирует на «Привет»:

telegram bot python примеры кода. 06 1. telegram bot python примеры кода фото. telegram bot python примеры кода-06 1. картинка telegram bot python примеры кода. картинка 06 1. 15 минут — и можете запускать своего первого бота.Кнопки есть, но пока не работают. Сейчас исправим.

Добавляем обработчик кнопок

Давайте сделаем обработчик кнопок, который будет реагировать на ‘zodiac’ и выдавать случайный текст, как в исходной программе. Для этого добавим новый метод в программу:

telegram bot python примеры кода. 07 1. telegram bot python примеры кода фото. telegram bot python примеры кода-07 1. картинка telegram bot python примеры кода. картинка 07 1. 15 минут — и можете запускать своего первого бота.Нажимаем на кнопку — получаем текст гороскопа.

Убираем лишнее

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

Как видно, большую часть кода занимает тупое перечисление всех знаков зодиака. Мы могли бы автоматизировать это через циклы, но на улице такая хорошая погода, что мы это отложим.

Что дальше

Впереди — безграничные возможности:

Напишите в комментариях, что бы вы хотели от такого бота? Что должен уметь идеальный бот с гороскопом?

Источник

Простой Telegram-бот на Python за 30 минут

На Хабре, да и не только, про ботов рассказано уже так много, что даже слишком. Но заинтересовавшись пару недель назад данной темой, найти нормальный материал у меня так и не вышло: все статьи были либо для совсем чайников и ограничивались отправкой сообщения в ответ на сообщение пользователя, либо были неактуальны. Это и подтолкнуло меня на написание статьи, которая бы объяснила такому же новичку, как я, как написать и запустить более-менее осмысленного бота (с возможностью расширения функциональности).

Часть 1: Регистрация бота

Самая простая и описанная часть. Очень коротко: нужно найти бота @BotFather, написать ему /start, или /newbot, заполнить поля, которые он спросит (название бота и его короткое имя), и получить сообщение с токеном бота и ссылкой на документацию. Токен нужно сохранить, желательно надёжно, так как это единственный ключ для авторизации бота и взаимодействия с ним.

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

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

После, в терминале Linux, или командной строке Windows вводим

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

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

Небольшое отступление. Телеграмм умеет сообщать боту о действиях пользователя двумя способами: через ответ на запрос сервера (Long Poll), и через Webhook, когда сервер Телеграмма сам присылает сообщение о том, что кто-то написал боту. Второй способ явно выглядит лучше, но требует выделенного IP-адреса, и установленного SSL на сервере. В этой статье я хочу рассказать о написании бота, а не настройке сервера, поэтому пользоваться мы будем Long Poll’ом.

Открывайте ваш любимый текстовый редактор, и давайте писать код бота!

Первое, что нужно сделать это импортировать нашу библиотеку и подключить токен бота:

Теперь объявим метод для получения текстовых сообщений:

В этом участке кода мы объявили слушателя для текстовых сообщений и метод их обработки. Поле content_types может принимать разные значения, и не только одно, например

Будет реагировать на текстовые сообщения, документы и аудио. Более подробно можно почитать в официальной документации

Теперь добавим в наш метод немного функционала: если пользователь напишет нам «Привет», то скажем ему «Привет, чем я могу помочь?», а если нам напишут команду «/help», то скажем пользователю написать «Привет»:

Данный участок кода не требует комментариев, как мне кажется. Теперь нужно добавить в наш код только одну строчку (вне всех методов).

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

Где bot.py – имя нашего файла.

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

telegram bot python примеры кода. hoooc8j1mwnptnjfde8ll7nqzea. telegram bot python примеры кода фото. telegram bot python примеры кода-hoooc8j1mwnptnjfde8ll7nqzea. картинка telegram bot python примеры кода. картинка hoooc8j1mwnptnjfde8ll7nqzea. 15 минут — и можете запускать своего первого бота.

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

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

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

И теперь наш бот отправляет клавиатуру, но если на нее нажать, то ничего не произойдёт. Потому что мы не написали метод-обработчик. Давайте напишем:

Остаётся только дописать в начало файла одну строку:

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

Источник

Введение, простой echo-бот

Приветствую тебя, читатель! Telegram Bot API – это мощный инструмент для вообще чего угодно. Автоматизация действий, работа с пользователями, онлайн-магазины, игры и много чего ещё. В этом учебнике мы научимся писать ботов для Telegram на языке Python.

Язык программирования будет Python 3, но это не означает, что любители PHP, Ruby и т.д. в пролёте; все основные принципы совпадают. Я не буду особо останавливаться на описании самого языка, желающие могут ознакомиться с документацией по Python здесь.

Подготовка к запуску

Взаимодействие ботов с людьми основано на HTTP-запросах. Чтобы не мучаться с обработкой «сырых» данных, воспользуемся библиотекой pyTelegramBotAPI, которая берет на себя все нюансы отправки и получения запросов, позволяя сконцентрироваться непосредственно на логике. Установка библиотеки предельно простая:

Теперь можно выйти из режима Python-консоли (Ctrl+Z или Ctrl+D, или exit() )

Пишем простого echo-бота

Теперь надо научить бота реагировать на сообщения. Напишем обработчик, который будет реагировать на все текстовые сообщения.

Теперь запустим бесконечный цикл получения новых записей со стороны Telegram:

Функция infinity_polling запускает т.н. Long Polling, бот должен стараться не прекращать работу при возникновении каких-либо ошибок. При этом, само собой, за ботом нужно следить, ибо сервера Telegram периодически перестают отвечать на запросы или делают это с большой задержкой приводя к ошибкам 5xx)

Источник

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

BotFather

telegram bot python примеры кода. image loader. telegram bot python примеры кода фото. telegram bot python примеры кода-image loader. картинка telegram bot python примеры кода. картинка image loader. 15 минут — и можете запускать своего первого бота.Создание бота

Telebot и сила python

Сила python заключается в его популярности. А, как следствие, в появлении огромного количества сторонних библиотек практически под все нужды. Именно это сделало возможным написание примитивного бота (который просто отвечает однотипно на сообщения) в 6 (ШЕСТЬ!) строчек кода. А именно:

telegram bot python примеры кода. image loader. telegram bot python примеры кода фото. telegram bot python примеры кода-image loader. картинка telegram bot python примеры кода. картинка image loader. 15 минут — и можете запускать своего первого бота.Первое сообщение

Flask & Requests

Для работы бота нужно немного больше, а именно нужно добавить функцию отправки сообщений. Я не хочу полностью переписывать статью (habr), а воспользуюсь результатом и пойду с конца. Так выглядит программа, которая заставляет бота посылать “Hello!” на любое входящее сообщение:

К сожалению, в таком варианте программа работать не будет. Точнее будет, но не сразу. Проблема заключается в том, что телеграмм пока что не знает, куда посылать информацию о полученных сообщениях. Для ее решения у telegram API есть метод setWebhook. Суть метода заключается в том, что мы просто отправляем телеграмму url, по которому мы хотим получать информацию о новых обращениях к боту (в нашем случае это http://localhost:5000/). Однако, мы не можем просто сказать телеграмму: «Посылай запросы на localhost», ведь для каждого сервера localhost будет разным. Еще одна проблема заключается в том, что метод setWebhook поддерживает только https url-ы. Для решения этих проблем можно воспользоваться программой ngrok, которая строит туннель до локального хоста. Скачать ее можно по ссылке ngrok, а для запуска туннеля достаточно ввести команду “ngrok http 5000”. Должно получиться так:

telegram bot python примеры кода. image loader. telegram bot python примеры кода фото. telegram bot python примеры кода-image loader. картинка telegram bot python примеры кода. картинка image loader. 15 минут — и можете запускать своего первого бота.ngrok

Теперь можно задействовать метод setWebhook, например, через postman. Нужно отправить post запрос на https://api.telegram.org/bot /setWebhook с указанием в теле нужного url. Должно получиться аналогично:

telegram bot python примеры кода. image loader. telegram bot python примеры кода фото. telegram bot python примеры кода-image loader. картинка telegram bot python примеры кода. картинка image loader. 15 минут — и можете запускать своего первого бота.setWebhook

Соединение

Чем больше я работал с библиотекой telebot, тем больше она мне нравилась. Хотелось бы, используя приложение на flask’e, не терять эту возможность. Но как это сделать? Во-первых, мы можем вместо нашей функции send_message использовать готовую из библиотеки. Это будет выглядеть так:

Здесь мы пользуемся методом set_webhook, аналогично тому, как мы делали это ранее через postman, а на пустом роуте прописываем «немного магии», чтобы успешно получать обновления бота. Конечно, это не очень хороший способ, и в дальнейшем лучше самостоятельно прописывать функционал для обработки входящих сообщений. Но для начала, я считаю, это лучшее решение.

Заключение

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

Источник

Делаем простого бота в Telegram на Python. Интеграция с Excel

«История ничему не учит, а только наказывает за незнание уроков.»
(с) В.О. Ключевский

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

Краткое описание бота

Наш бот будет создан на тематику Белого движения в гражданской войне в России (1917-1922) /сегодня разговор не о политике. Это просто пример/

По команде /start бот будет приветствие и посылать стикер;

После приветствия появится клавиатура под строкой набора сообщений с двумя кнопками «Вывести случайную цитату белогвардейца» и «Литература»

Нажатие на кнопку «Литература» выдаст инлайновую клавиатуру (далее будет прояснение, для тех кто не понял что это) с названиями произведений белогвардейских авторов или о белогвардейцах.После нажатия клавиатура пропадёт (просто этим навыком, думаю, необходимо обладать), начнётся загрузка pdf файла и появится оповещение «Приятного чтения!»

Вот такой простенький бот у нас по выйдет.

Начало. Создание бота и добавление библиотек.

Для начала добавим библиотеку pyTelegramBotAPI обычным пипом в cmd.

Время импортировать все необходимые библиотеки.

Далее нужно создать самого бота в телеграме. Для этого пройдёмся по следующим шагам:

Найти в поиске телеграма @BotFather

Написать ему команду /newbot

Первым сообщение отправить имя бота, а вторым его юзернейм (который пишется с @). Он должен быть уникальный и оканчиваться на Bot или _bot

После этих шагов батя пришлёт нам ссылку на нашёго бота и его API.

telegram bot python примеры кода. image loader. telegram bot python примеры кода фото. telegram bot python примеры кода-image loader. картинка telegram bot python примеры кода. картинка image loader. 15 минут — и можете запускать своего первого бота.Нужно скопировать всю строку, которая на скрине закрыта красным прямоугольником

Если коротко, то API — это контракт, который предоставляет программа. «Ко мне можно обращаться так и так, я обязуюсь делать то и это».
(Более подробная инфа тут API)

Кодим

Раз библиотеки уже добавили, значит создаём переменную, определяющую бота с помощью API.

В начале, при написании команды /start, бот у нас выдаст приветствие. Соответственно, вставляем декоратор обработчика сообщений.

Если кто не знает что такое декораторы, то есть достаточно подробная статья, рекомендую ознакомиться.

Коротко: Декораторы — это, по сути, просто своеобразные «обёртки», которые дают нам возможность делать что-либо до и после того, что сделает декорируемая функция, не изменяя её.

Теперь наш бот понимает команду /start, но ещё ничего не делает. Создаём функцию приветственного сообщения.

Пробежимся по коду

telegram bot python примеры кода. image loader. telegram bot python примеры кода фото. telegram bot python примеры кода-image loader. картинка telegram bot python примеры кода. картинка image loader. 15 минут — и можете запускать своего первого бота.

Последней строкой отправляем стикер bot.send_sticker(message.chat.id,stic)

telegram bot python примеры кода. image loader. telegram bot python примеры кода фото. telegram bot python примеры кода-image loader. картинка telegram bot python примеры кода. картинка image loader. 15 минут — и можете запускать своего первого бота.Приветственное сообщение и клавиатура

Время дать возможность боту коммуницировать

Далее идёт строка с текстом. ВАЖНО текст должен совпадать с названием кнопки клавиатуры, которую указывали выше.

telegram bot python примеры кода. image loader. telegram bot python примеры кода фото. telegram bot python примеры кода-image loader. картинка telegram bot python примеры кода. картинка image loader. 15 минут — и можете запускать своего первого бота.

Со спокойной душой вызываем на файл на чтение
rb = xlrd.open_workbook(‘citat/citat.xls’, formatting_info=True), указываем лист с которого считываем инфу sheet = rb.sheet_by_index(0) индексы как у массива (первый элемент нулевой).

telegram bot python примеры кода. image loader. telegram bot python примеры кода фото. telegram bot python примеры кода-image loader. картинка telegram bot python примеры кода. картинка image loader. 15 минут — и можете запускать своего первого бота.Вышло как-то так

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

Определяем клавиатуру inMurkup = types.InlineKeyboardMarkup(row_width=1) параметр row_width=1 говорит о том, что на одной строке будет одна кнопка. Принцип кнопок создания такой же как и у обычной клавиатуры, но появляется параметр callback_data значения которого примет бот после нажатия на кнопку и поймёт что нужно сделать (далле это всё опишем).

Последней строкой отправляем сообщение и цепляем к нему инлайновую клавиатуру.

Работа с callback_data

мы создаём переменную doc в которую «суём» pdf файл, который сохранили в папку «boo» заранее.

Теперь строкой bot.send_document(call.message.chat.id, doc) отправляем файл в чат.

После леса из наших elif удалим инлайновую клавиатуру, дабы не мешалась. Действие необязательно, но мы же с вами тренируемся, поэтому пусть код будет здесь.

Уведомление призывается заклинанием

Параметр show_alert отвечает за вид оповещения (False простое временное уведомление, True уведомление с кнопкой «Ок»)

telegram bot python примеры кода. e821f8826089dcf91bb8ac17a2c52b68. telegram bot python примеры кода фото. telegram bot python примеры кода-e821f8826089dcf91bb8ac17a2c52b68. картинка telegram bot python примеры кода. картинка e821f8826089dcf91bb8ac17a2c52b68. 15 минут — и можете запускать своего первого бота.1 — False, 2 — True

Завершаем эту ступень кода конструкцией проверки исключений (ошибок).

Именно этой командой и закончим наш код. Теперь бот постоянно проверяет не написал ли ему кто.

В итоге получился такой код:

Пара слов от автора

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

Больше функций, параметров и всего прочего находится в документации. Справочник на русском. Библиотеки pyTelegramBotAPI и xlrd.

Огромное спасибо за прочтение статьи! Надеюсь она оказалась полезной. А если понравилась, то поднимай статью в рейтинге и оставляй комменты)

Приглашаю прочесть мои статьи:

Автор обитает тут: ВК, Инстаграм

Источник

Добавить комментарий

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