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

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

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

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

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

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

II. Кодинг

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

pip3 install pytelegrambotapi

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

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

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

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

Кнопки

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

from telebot import types

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

  • Inline-кнопки

  • Keyboard-кнопки

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)

Выглядит это так

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

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

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)

Вот как это выглядит

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

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

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

@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 telebotfrom telebot import typesbot = 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 Bot API

Встроенные кнопки в Telegram Bot API - pyTelgramBotApi

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

FAQs

How to send Python output to Telegram? ›

Using Python to post to a Telegram Channel
  1. Create a telegram bot. ...
  2. Create the channel you wish to send messages to, then set your newly created bot to be an administrator. ...
  3. Find the chat ID for your new channel.
  4. Publish a message to the channel using the requests library.
Jan 12, 2023

How to run Python code in Telegram? ›

Creating a Python Telegram bot in PyCharm
  1. Python. Before we start, you need to install a recent version of Python on your machine. ...
  2. Telegram. Of course downloading Telegram would be a good idea if you're following this tutorial because you'll want to check that your code works! ...
  3. PyCharm. ...
  4. The Bot Code.
Mar 8, 2023

How can I send message to Telegram channel using API? ›

Getting Started
  1. Configure the Send a Text Message or Reply action. Connect your Telegram Bot account. Configure Chat ID. Optional- Configure Text. ...
  2. Select a trigger to run your workflow on HTTP requests, schedules or app events.
  3. Deploy the workflow.
  4. Send a test event to validate your setup.
  5. Turn on the trigger.

How to send programming code in Telegram? ›

Copy and paste the code after the backticks.
  1. Press Ctrl + C (Windows) or ⌘ Cmd + C (macOS) to copy a highlighted section of code.
  2. Switch to the Telegram chat you want to paste the code into.
  3. Press Ctrl + V (Windows) or ⌘ Cmd + V (macOS). This pastes the copied code into the typing area.
Mar 29, 2024

How to extract data from Telegram? ›

Open the “SPF Pro” and “Create a case”.
  1. Fill in “Case Information”.
  2. Connect the mobile phone to SPF Pro;
  3. Click on “Cloud Data Extraction” and select Telegram; For login verification, you can choose “QR code login” or “Verification code login”, and finally extract data from Telegram.
Feb 28, 2024

How to scrape everything from Telegram using Python? ›

Here is the code block to scrape all comments from Telegram Group or Channels. Not: You have to past your api_id, api_hash, phone and username. When you run code you have to paste group or channel name url or entity id. After run the code, you will get all messages/comments from group or channel in a JSON file.

How to automate messages on Telegram in Python? ›

  1. Create a Telegram bot. To use the Telegram API, you will need to create a Telegram bot and obtain its API key. ...
  2. Install the python-telegram-bot library. Next, you will need to install the python-telegram-bot library using pip. ...
  3. Send a message to a channel. ...
  4. Test your code.
Jan 1, 2023

Which programming language is best for Telegram bot? ›

The libraries we need for our bot are: Flask: A micro web framework built in Python. Python-telegram-bot: A Telegram API wrapper in Python.

Where to deploy Python-Telegram-bot? ›

Heroku. Heroku is a PaaS provider for hosting dynamic backend applications. A Telegram bot is a backend application in one form, and so can be hosted on Heroku. Heroku is generally easy to use and is well-documented, which means you shouldn't struggle to deploy your bot.

Is it possible to scrape a Telegram? ›

Several ways can be used for scrapping data from telegram. These include libraries like telethon and pyrogram for python. In this article, we will go through how to use pyrogram. For this article, I will be using Vscode as my text editor.

How to send Python output to Telegram bot? ›

1 Answer
  1. Make A Telegram Bot Using BotFather for Telegram Search for BotFather in your Telegram client by opening it. ...
  2. Obtaining a chat ID To send Telegram messages using Python, we require the conversation ID that each chat in Telegram holds.
Jan 14, 2023

Can we download Telegram data? ›

Open the app and go to 'Settings'. Select 'Advanced', then find 'Download Path'. Choose or create a new folder where you want all files to be saved. This is useful for keeping work and personal files separate, or if you need quick access to Telegram downloads for projects.

How to send message from bot to user in Telegram? ›

In order to send a message to "@Username", you will need them to start your bot, and then store the username with the user_id. Then, you can input the username to find the correct user_id each time you want to send them a message.

Top Articles
Latest Posts
Article information

Author: Msgr. Benton Quitzon

Last Updated:

Views: 6602

Rating: 4.2 / 5 (63 voted)

Reviews: 86% of readers found this page helpful

Author information

Name: Msgr. Benton Quitzon

Birthday: 2001-08-13

Address: 96487 Kris Cliff, Teresiafurt, WI 95201

Phone: +9418513585781

Job: Senior Designer

Hobby: Calligraphy, Rowing, Vacation, Geocaching, Web surfing, Electronics, Electronics

Introduction: My name is Msgr. Benton Quitzon, I am a comfortable, charming, thankful, happy, adventurous, handsome, precious person who loves writing and wants to share my knowledge and understanding with you.