Python telegram bot books

Добро пожаловать!

Перед вами то, что я, Groosha, называю книгой по созданию Telegram-ботов на языке Python с помощью фреймворка aiogram 3.x. Её [книгу] можно воспринимать как учебный материал, обращаясь к отдельным главам по необходимости, но для первого прочтения рекомендую это делать в том порядке, в котором указаны главы слева от этого текста.

Возможно, вы ранее читали первую версию, написанную в 2015-2017 годах для библиотеки pyTelegramBotAPI. С тех пор много чего изменилось как в Python, так и в Bot API, да и я, как программист, стал сильнее. В 2019 году перешёл на aiogram, о чём не жалею, и написал гайд по ботам уже под aiogram, но версии 2.x.

В этой, обновлённой версии книги, мы будем использовать фреймворк aiogram 3.х, который на момент создания этого текста находится в состоянии beta-версии, однако уже вполне готовой для повседневного использования.

Для кого эта книга?
Предполагается, что вы знакомы с программированием в целом и языком Python в частности, знаете, что такое «venv» и «pip», а также способны понять и исправить «детские» ошибки вроде SyntaxError и IndentationError. Найдите в интернете пару курсов по Python, пройдите их, а лишь затем принимайтесь за написание ботов, сэкономите себе время и нервные клетки.

Читайте также:  Конвертер curl в php

Во всех главах в качестве операционной системы мы будем использовать что-нибудь семейства GNU/Linux, например, Ubuntu, Python 3.10 (в Virtual Environment) и среду разработки PyCharm, впрочем, не возбраняется и Visual Studio Code. При этом пользователи Windows не в пролёте: всё, что касается кода, будет спокойно работать и у вас, а для специфичных вещей вроде systemd вы можете использовать Ubuntu в VirtualBox.

Текст книги и исходные тексты в соответствующем репозитории полностью бесплатны, издаются под лицензией MIT и доступны любому для скачивания, модификации и использования в любых целях.

Донаты
На написание и актуализацию книги я потратил очень много времени и сил. Если вы из России и хотите отблагодарить автора материально, можете сделать это через Ю.Money (пожалуйста, указывайте в комментариях, что это за книгу).
На всякий случай уточню, что любое пожертвование является добровольным и не даёт никаких преимуществ, кроме плюсика в карму.

Благодарности
За то, что эта книга в её текущем виде возникла и существует по сей день, спасибо создателю aiogram Alex JRootJunior, чатику @aiogram_ru, моему собственному чатику, а также вам, дорогим читателям!

Источник

Python telegram bot books

Reading and Writing Videos using OpenCV

Сисадмин или backend разработчик? Хотите повысить квалификацию и перейти на новый карьерный уровень, но боитесь попасть на очередной «курс-пустышку»?

Тогда обратите внимание на курс «Дата-инженер» от Слёрм! Наш учебный центр для IT инженеров предлагает насыщенную учебную программу с упором на практику, разбор реальных случаев и выполнение «боевых задач» в процессе обучения, а не после него!

Для всех сомневающихся доступен БЕСПЛАТНЫЙ тест-драйв курса, в рамках которого можно изучить часть уроков из курса и узнать:

— из чего состоит экосистема инженера данных и какими инструментами и технологиями ему важно владеть;
— что из себя представляют реляционные базы данных, по каким принципам работают и для чего могут использоваться;
— какие объекты есть в базах данных, как ими манипулировать, их создавать, изменять и удалять;
— что из себя представляют основные процессы инженерии данных: ETL и ELT, их различия и применение, а также в чем суть каждого из этапов E, T и L;
— каковы принципы работы, компоненты и архитектура NiFi.

Пройти тест-драйв, убедиться в пользе и информативности курса можно в любое время, без привязки к датам!

Почему курс от Слёрма по обучению Дата-инженеров достоин вашего внимания?

— Учим не только сбору данных, но и тому, как правильно интерпретировать их.
— Дешевле, чем у других школ.
— Короче, аналогичных курсов.

Источник

Самый полный стартовый гайд по ботам Telegram (python)

QQ Хабр! В этом гайде мы пройдемся по каждому шагу создания ботов в Telegram — от регистрации бота до публикации репозитория на GitHub. Некоторым может показаться, что все разжевано и слишком много элементарной информации, но этот гайд создан для новичков, хотя будет интересен и для тех, кто уже занимался разработкой в Telegram. Сегодня мы будем делать бота, который отвечает на заданные вопросы.

I. Регистрация бота

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

На этом процесс регистрации бота завершен, можно приступать к самому интересному — кодингу

II. Кодинг

Итак, бота мы будем писать на python. Для начала установим библиотеку pytelegrambotapi. Для этого в командной строке (или в терминале, если у вас MacOS) пишем:

pip3 install pytelegrambotapi

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

import telebot bot = telebot.TeleBot('BOT-TOKEN')

Вместо BOT-TOKEN пишем токен, который получили от BotFather

Сейчас можно уже и поговорить о кнопках

Кнопки

Для того, чтобы кнопки заработали нужно импортировать типы, для этого после импорта библиотек пишем:

from telebot import types

Бывает два вида кнопок, это:

Inline-кнопки

Для создания таких кнопок используется метод InlineKeyboardMarkup, например, сделаем кнопку, которая ведет на сайт Хабра

@bot.message_handler(commands = ['start']) def url(message): markup = types.InlineKeyboardMarkup() btn1 = types.InlineKeyboardButton(text='Наш сайт', url='https://habr.com/ru/all/') markup.add(btn1) bot.send_message(message.from_user.id, "По кнопке ниже можно перейти на сайт хабра", reply_markup = markup) 

Более подробно про такие кнопки можно почитать в этой статье

Keyboard-кнопки

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

@bot.message_handler(commands=['start']) def start(message): markup = types.ReplyKeyboardMarkup(resize_keyboard=True) btn1 = types.KeyboardButton("🇷🇺 Русский") btn2 = types.KeyboardButton('🇬🇧 English') markup.add(btn1, btn2) bot.send_message(message.from_user.id, "🇷🇺 Выберите язык / 🇬🇧 Choose your language", reply_markup=markup)

Обратно к коду

Теперь уже точно можно вернуться к кодингу, давайте добавим стартовую команду и кнопку

@bot.message_handler(commands=['start']) def start(message): markup = types.ReplyKeyboardMarkup(resize_keyboard=True) btn1 = types.KeyboardButton("👋 Поздороваться") markup.add(btn1) bot.send_message(message.from_user.id, "👋 Привет! Я твой бот-помошник!", reply_markup=markup)

Далее делаем реакцию бота на кнопки (здесь то уже есть комментарии)

@bot.message_handler(content_types=['text']) def get_text_messages(message): if message.text == '👋 Поздороваться': markup = types.ReplyKeyboardMarkup(resize_keyboard=True) #создание новых кнопок btn1 = types.KeyboardButton('Как стать автором на Хабре?') btn2 = types.KeyboardButton('Правила сайта') btn3 = types.KeyboardButton('Советы по оформлению публикации') markup.add(btn1, btn2, btn3) bot.send_message(message.from_user.id, '❓ Задайте интересующий вопрос', reply_markup=markup) #ответ бота

Теперь по этому примеру продолжаем плодить бота

elif message.text == 'Как стать автором на Хабре?': bot.send_message(message.from_user.id, 'Вы пишете первый пост, его проверяют модераторы, и, если всё хорошо, отправляют в основную ленту Хабра, где он набирает просмотры, комментарии и рейтинг. В дальнейшем премодерация уже не понадобится. Если с постом что-то не так, вас попросят его доработать.\n \nПолный текст можно прочитать по ' + '[ссылке](https://habr.com/ru/sandbox/start/)', parse_mode='Markdown') elif message.text == 'Правила сайта': bot.send_message(message.from_user.id, 'Прочитать правила сайта вы можете по ' + '[ссылке](https://habr.com/ru/docs/help/rules/)', parse_mode='Markdown') elif message.text == 'Советы по оформлению публикации': bot.send_message(message.from_user.id, 'Подробно про советы по оформлению публикаций прочитать по ' + '[ссылке](https://habr.com/ru/docs/companies/design/)', parse_mode='Markdown')

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

bot.send_message(message.from_user.id, 'Подробно про советы по оформлению публикаций прочитать по ' + '[ссылке](https://habr.com/ru/docs/companies/design/)', parse_mode='Markdown')

Как мы видим, чтобы сделать гиперссылку мы берем в квадратные скобки слово, которое будет ссылкой, а саму ссылку берем в круглые. В конце строки добавляем parse_mode=’Markdown’

Когда мы дописали основной код нужно вставить важную строку

bot.polling(none_stop=True, interval=0) #обязательная для работы бота часть

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

Полностью наш код выглядит так:

import telebot from telebot import types bot = telebot.TeleBot('BOT-TOKEN') @bot.message_handler(commands=['start']) def start(message): markup = types.ReplyKeyboardMarkup(resize_keyboard=True) btn1 = types.KeyboardButton("👋 Поздороваться") markup.add(btn1) bot.send_message(message.from_user.id, "👋 Привет! Я твой бот-помошник!", reply_markup=markup) @bot.message_handler(content_types=['text']) def get_text_messages(message): if message.text == '👋 Поздороваться': markup = types.ReplyKeyboardMarkup(resize_keyboard=True) #создание новых кнопок btn1 = types.KeyboardButton('Как стать автором на Хабре?') btn2 = types.KeyboardButton('Правила сайта') btn3 = types.KeyboardButton('Советы по оформлению публикации') markup.add(btn1, btn2, btn3) bot.send_message(message.from_user.id, '❓ Задайте интересующий вас вопрос', reply_markup=markup) #ответ бота elif message.text == 'Как стать автором на Хабре?': bot.send_message(message.from_user.id, 'Вы пишете первый пост, его проверяют модераторы, и, если всё хорошо, отправляют в основную ленту Хабра, где он набирает просмотры, комментарии и рейтинг. В дальнейшем премодерация уже не понадобится. Если с постом что-то не так, вас попросят его доработать.\n \nПолный текст можно прочитать по ' + '[ссылке](https://habr.com/ru/sandbox/start/)', parse_mode='Markdown') elif message.text == 'Правила сайта': bot.send_message(message.from_user.id, 'Прочитать правила сайта вы можете по ' + '[ссылке](https://habr.com/ru/docs/help/rules/)', parse_mode='Markdown') elif message.text == 'Советы по оформлению публикации': bot.send_message(message.from_user.id, 'Подробно про советы по оформлению публикаций прочитать по ' + '[ссылке](https://habr.com/ru/docs/companies/design/)', parse_mode='Markdown') bot.polling(none_stop=True, interval=0) #обязательная для работы бота часть

Этот код я написал за 10 минут, при желании код можно сделать намного больше. Полноценный бот выглядит так. Этого бота я делал для конкурса и написал его за 3,5 часа.

Важно: если вы делаете полноценного бота, которого будете куда-то публиковать, очень стоит добавить в него эмодзи: кнопки, сообщения — все должно включать в себя эмодзи, это важно для красоты

III. Публикация репозитория на GitHub

Для этого на потребуется приложение GitHub Desktop

Создаем новый репозиторий, после этого в папке по умолчанию появится папка с названием вашего проекта. В нее закидываем файлы проекта и в приложении нажимаем кнопку Commit to main. После этого нажимаем на кнопку Publish Repository. Готово! При желании, можно создать Readme.md

IV. Заключение

Здесь я расписал все, что я вспомнил о разработке ботов для telegram, если есть, что предложить — комментарии открыты для вас. Надеюсь, вам это было полезно.

Источник

Учебник по разработке бота для Telegram на Python

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

Учебник по разработке бота для Telegram на Python 1

Учебник здесь

Все исходные коды к урокам расположены в этом репозитории

Читайте анонсы и посты целиком в ЖЖ, Medium, Голосе и Яндекс.Дзен!

Поддержите мой блог финансово. Все донаты пойдут на оплату хостинга и развитие сайта!

wargm.ru - рейтинг серверов

Telegram

Последние

Рубрики

СЧЕТЧИКИ

РЕКЛАМА И ДОНАТЫ

Социальные сети

©2016-2023 Блог Евгения Левашова. Самое интересное и полезное из мира ИТ. Windows 10, Linux, Android и iOS. Обзоры программ и веб-сервисов. Статьи о мотивации и продуктивности.

Использование материалов разрешается с активной ссылкой на levashove.ru.

Данный блог является личным дневником, содержащим частные мнения автора. В соответствии со статьей 29 Конституции РФ, каждый человек может иметь собственную точку зрения относительно его текстового, графического, аудио и видео наполнения, равно как и высказывать ее в любом формате. Блог не имеет лицензии Министерства культуры и массовых коммуникаций РФ и не является СМИ, а, следовательно, автор не гарантирует предоставления достоверной, не предвзятой и осмысленной информации. Сведения, содержащиеся в этом блоге не имеют никакого юридического смысла и не могут быть использованы в процессе судебного разбирательства. Автор блога не несёт ответственности за содержание комментариев к его записям.

Источник

Оцените статью