Telegram Bot
Телеграм бот на Python / #1 – Разработка ботов с нуля. Как создать Telegram Bot?
Представляем курс для начинающих по разработке Telegram ботов на Python. За курс вы с нуля научитесь создавать Телеграм ботов в разных жанрах и с использованием разных библиотек.
Видеоурок
Разработка ботов
За последние несколько лет боты стали неотъемлемой частью многих интернет компаний. За счет ботов компании могут автоматизировать рутинную работу и могут позволить пользователю быстро получить необходимую информацию.
В связи с этим сфера их разработки сейчас действительно очень популярна. Многие компания хотят иметь своего телеграмм бота и поэтому ищут специализированных разработчиков. Приятно в этом то, что на изучение разработки вам придется потратить всего пару дней (за исключением изучения самого языка программирования). После пары дней тренировок вы уже сможете брать заказы на фрилансе и получать за их выполнение деньги.
Почему Telegram?
В современном мире мессенджеры стали основным способом для общения в интернете. Существует много мессенджеров, но с уверенностью можно сказать что одним из самых популярных является Телеграм.

Поэтому, если вы решили создавать ботов, то логично начать сразу с наиболее популярной платформы в этой сфере. Изучив разработку Telegram ботов вы позже сможете переключиться и на разработку ботов под другие мессенджеры или соц сети. Принцип работы всех ботов примерно одинаков. Разница заключается лишь в использовании разных библиотек и методов в них.
Инструменты разработчика
На самом деле для разработки ботов вы можете использовать любые языки программирования. Можно писать на PHP, C#, Java и даже на JavaScript.
Многие разработчики выбирают тот язык, на котором они пишут в повседневной жизни. Если же такого языка нет, то одним из наилучших в этом плане является язык Python. Он легок в использовании и позволяет быстро добавить необходимый функционал для вашего бота.

Такая легкость в частности обеспечена обилием библиотек, что были разработаны под этот язык для быстрого описания и выполнения команд.
Плюс выбор падает на Питон, так как на его основе можно создавать ботов и под другие мессенджеры, что очень удобно, ведь синтаксис будет такой же.
План курса
В ходе курса вы с нуля научитесь создавать Telegram ботов под разные сферы и цели применения. Вы научитесь работать с несколькими библиотеками для построения ботов, а также внедрите в код разные API системы для интеграции полезных функций.
К концу курса у вас будут хорошие навыки по созданию ботов. Вы сможете создавать ботов, что будут представлять из себя набор полезных действий или даже полноценный магазин с покупками.
Дополнительный курс
На нашем сайте вы также найдете курс « Профессия Python разработчик ». В ходе огромной программы вы изучите язык Python, научитесь работать с базами данных, тестированием и научитесь создавать веб сайты за счёт фреймворка Django.
За курс вы изучите массу нового и к концу программы будете уметь работать с языком Питон, создавать на нём полноценные ПК приложения на основе библиотеки Kivy и создавать веб сайты на основе библиотеки Джанго.
Задание к уроку
Создание бота
Создайте нового бота через Телеграм. Укажите что ваш бот будет иметь название: «ВашеИмяФамилия My Bot».
Посмотреть ответ
Для создания бота зайдите в Телеграм и найдите официального бота @BotFather .
Запустите его и пропишите команду «/newbot». Далее укажите название для бота и его программный адрес.
Большое задание по курсу
Вам необходимо оформить подписку на сайте, чтобы иметь доступ ко всем большим заданиям. В задание входит методика решения, а также готовый проект с ответом к заданию.
PS: подобные задания доступны при подписке от 1 месяца
Как создать Telegram-бота с помощью библиотеки python-telegram-bot

Делимся инструкцией, как написать бота с помощью библиотеки python-telegram-bot за считанные минуты. На примере гайда от программиста Давида Мастроматтео.
Курс Project Manager.
Впроваджуйте покроковий алгоритм управління проєктами вже зараз. У цьому вам допоможе Павло Харіков — Head of IoT у Veon Group (Kyivstar).
Установка python-telegram-bot
Для создания бота понадобится пакет python-telegram-bot — оболочка для API от Telegram. Написать бота с помощью этой библиотеки очень просто, так как она полностью совместима с Python 3.6+.
Первое, что нужно сделать — установить python-telegram-bot. Вот ссылка на официальную документацию библиотеки .
$ pip install python-telegram-bot –upgrade
Создание бота
Теперь можно взяться за создание бота. Для этого даже не нужно писать код. Перейдите в Telegram и найдите канал @BotFather, который отвечает за регистрацию новых ботов. Начните общаться с ботом и введите команду /newbot . Затем BotFather спросит у вас имя и юзернейм.
Курс Финансовый директор.
Отримайте комплексне розуміння фінансової діяльності. Час підніматись по карʼєрним сходам.


У BotFather можно запросить много других интересных вещей. Например, изменить изображение профиля бота.
Теперь нужно принять важное решение: определиться с главной задачей бота. В этой инструкции мы сделаем бота, который предоставляет информацию о биоритмах пользователей . Будьте осторожны: речь идет о псевдонаучных теориях, так что б от будет такой же полезный, как и гороскопы. Но если дойдете до конца — сможете создавать любых ботов.
Освоить язык программирования Python вам могут помочь онлайн курсы от наших партнеров Mate Academy и Powercode. Получите качественный уровень знаний от практикующих специалистов.
Программирование бота
Пакет python-telegram-bot состоит из оболочки API Telegram. Этот инструмент доступен через telegram.Bot- классы. Помимо них, есть еще модуль telegram.ext , который значительно упростит работу.
Модуль telegram.ext содержит много классов, но самые важные — telegram.ext.Updater и telegram.ext.Dispatcher . Updater отвечает за выборку новых обновлений от Telegram. Также он передает их в Dispatcher , после чего они обрабатываются с помощью Handler .
Приступим к программированию:
# mastrobot_example.py from telegram.ext import Updater, CommandHandler, MessageHandler, Filters # function to handle the /start command def start(update, context): update.message.reply_text('start command received') # function to handle the /help command def help(update, context): update.message.reply_text('help command received') # function to handle errors occured in the dispatcher def error(update, context): update.message.reply_text('an error occured') # function to handle normal text def text(update, context): text_received = update.message.text update.message.reply_text(f'did you said "" ?') def main(): TOKEN = "insert here your token and don't share it with anyone!" # create the updater, that will automatically create also a dispatcher and a queue to # make them dialoge updater = Updater(TOKEN, use_context=True) dispatcher = updater.dispatcher # add handlers for start and help commands dispatcher.add_handler(CommandHandler("start", start)) dispatcher.add_handler(CommandHandler("help", help)) # add an handler for normal text (not commands) dispatcher.add_handler(MessageHandler(Filters.text, text)) # add an handler for errors dispatcher.add_error_handler(error) # start your shiny new bot updater.start_polling() # run the bot until Ctrl-C updater.idle() if __name__ == '__main__': main()
В функции main создан класс Updater , который автоматически сгенерировал объект Dispatcher , доступный через .dispatcher- свойства класса Updater .
Добавьте несколько обработчиков:
-
команда /start вызывает функцию start() , которая отвечает пользователю информативным сообщением;
Курс QA Manual.
Успішна кар’єра в IT-сфері без необхідності глибоких знань програмування. Очікуйте заробітню плату в розмірі 600$ після завершення навчання.
Сейчас в коде прописаны функции обратного вызова, которые используют полученные данные для отправки сообщений пользователю.
Тестирование
Теперь можно протестировать бота. Запустите его.
Пошлите ему команду /start .
Ура, бот работает!
Но это не конец. Надо создать бота, который сообщает пользователю его ежедневный биоритм. Для этого следует применить команду /start . С ее помощью при запуске чата можно получить данные о дне рождения пользователя. Затем надо создать функцию для обработки новой команды /biorhythm , чтобы отправить ответ пользователю с его личным биоритмом.
Чтобы узнать день рождения пользователя, для начала нужно изменить функцию, обрабатывающую команду /start . Чтобы упростить задачу, попросите пользователя указать год, месяц и день рождения.
Курс UI/UX для геймдеву.
Під час навчання ви розробите проекти для портфоліо, що складається з 5 ключових аспектів UX/UI-дизайну, та отримаєш необхідні навички для професійного росту.
# function to handle the /start command def start(update, context): first_name = update.message.chat.first_name update.message.reply_text(f"Hi , nice to meet you!") start_getting_birthday_info(update, context)
В параметре update можно найти полезную информацию о пользователе, например, его имя.
В самом начале скрипта определите новую переменную STATE , которая нужна, чтобы понять, на какой вопрос отвечает пользователь.
STATE = None BIRTH_YEAR = 1 BIRTH_MONTH = 2 BIRTH_DAY = 3
Теперь необходимо реализовать функцию start_getting:_birthday_info() , она вызывается с помощью команды start() . После запуска вы получите информацию о дне рождения от пользователя.
def start_getting_birthday_info(update, context): global STATE STATE = BIRTH_YEAR update.message.reply_text(f"I would need to know your birthday, so tell me what year were you born in. ")
Для переменной STATE устанавливается значение BIRTH_YEAR , чтобы после ответа пользователя было понятно, что вопрос касался года рождения. Затем отправляется сообщение, чтобы узнать год рождения.
Теперь пользователь ответит обычным текстом, поэтому нужно изменить функцию text() .
def text(update, context): global STATE if STATE == BIRTH_YEAR: return received_birth_year(update, context) if STATE == BIRTH_MONTH: return received_birth_month(update, context) if STATE == BIRTH_DAY: return received_birth_day(update, context)
В функции text() необходимо понять, на какой вопрос отвечает пользователь, используя переменную STATE . После чего остается вызвать функцию для обработки каждого ответа.
Эти функции можно записать так:
def received_birth_year(update, context): global STATE try: today = datetime.date.today() year = int(update.message.text) if year > today.year: raise ValueError("invalid value") context.user_data['birth_year'] = year update.message.reply_text(f"ok, now I need to know the month (in numerical form). ") STATE = BIRTH_MONTH except: update.message.reply_text("it's funny but it doesn't seem to be correct. ") def received_birth_month(update, context): global STATE try: today = datetime.date.today() month = int(update.message.text) if month > 12 or month < 1: raise ValueError("invalid value") context.user_data['birth_month'] = month update.message.reply_text(f"great! And now, the day. ") STATE = BIRTH_DAY except: update.message.reply_text("it's funny but it doesn't seem to be correct. ") def received_birth_day(update, context): global STATE try: today = datetime.date.today() dd = int(update.message.text) yyyy = context.user_data['birth_year'] mm = context.user_data['birth_month'] birthday = datetime.date(year=yyyy, month=mm, day=dd) if today - birthday < datetime.timedelta(days=0): raise ValueError("invalid value") context.user_data['birthday'] = birthday STATE = None update.message.reply_text(f'ok, you born on ') except: update.message.reply_text("it's funny but it doesn't seem to be correct. ")
Когда получен год рождения пользователя, остается проверить, допустимое ли это значение. Если да, то оно сохраняется в словаре context.user_data[] . Продолжайте устанавливать значения для переменной STATE и задавать следующие вопросы.
Когда зададите последний вопрос и будете знать день рождения, создайте переменную даты и сохраните ее в context.user_data[] словаре.
Если пользователь вводит недопустимое значение, то получает ответ, что оно неверно. Значение переменной STATE не меняется, поэтому пользователь застревает на этом вопросе, пока не ответит правильно.
Получить новые знания в языке программирования Python вам могут помочь специальные курсы от Hillel и ШАГ . Получите качественный уровень знаний от практикующих специалистов.
Создание команды
Теперь нужно обработать команду /biorhythm .
Добавьте новый обработчик команд в функцию main() .
Напишите функцию расчета биоритма:
# This function is called when the /biorhythm command is issued def biorhythm(update, context): user_biorhythm = calculate_biorhythm( context.user_data['birthday']) update.message.reply_text(f"Phisical: ") update.message.reply_text(f"Emotional: ") update.message.reply_text(f"Intellectual: ") def calculate_biorhythm(birthdate): today = datetime.date.today() delta = today - birthdate days = delta.days phisical = math.sin(2*math.pi*(days/23)) emotional = math.sin(2*math.pi*(days/28)) intellectual = math.sin(2*math.pi*(days/33)) biorhythm = <> biorhythm['phisical'] = int(phisical * 10000)/100 biorhythm['emotional'] = int(emotional * 10000)/100 biorhythm['intellectual'] = int(intellectual * 10000)/100 biorhythm['phisical_critical_day'] = (phisical == 0) biorhythm['emotional_critical_day'] = (emotional == 0) biorhythm['intellectual_critical_day'] = (intellectual == 0) return biorhythm
В примере представлены две разные функции: одна для обработки команды, а другая для расчета биоритма. Таким образом удается разделить ответственность этих функций.
Полный код бота
# mastrobot_example2.py import datetime import math from telegram.ext import Updater, CommandHandler, MessageHandler, Filters STATE = None BIRTH_YEAR = 1 BIRTH_MONTH = 2 BIRTH_DAY = 3 # function to handle the /start command def start(update, context): first_name = update.message.chat.first_name update.message.reply_text(f"Hi , nice to meet you!") start_getting_birthday_info(update, context) def start_getting_birthday_info(update, context): global STATE STATE = BIRTH_YEAR update.message.reply_text( f"I would need to know your birthday, so tell me what year were you born in. ") def received_birth_year(update, context): global STATE try: today = datetime.date.today() year = int(update.message.text) if year > today.year: raise ValueError("invalid value") context.user_data['birth_year'] = year update.message.reply_text( f"ok, now I need to know the month (in numerical form). ") STATE = BIRTH_MONTH except: update.message.reply_text( "it's funny but it doesn't seem to be correct. ") def received_birth_month(update, context): global STATE try: today = datetime.date.today() month = int(update.message.text) if month > 12 or month < 1: raise ValueError("invalid value") context.user_data['birth_month'] = month update.message.reply_text(f"great! And now, the day. ") STATE = BIRTH_DAY except: update.message.reply_text( "it's funny but it doesn't seem to be correct. ") def received_birth_day(update, context): global STATE try: today = datetime.date.today() dd = int(update.message.text) yyyy = context.user_data['birth_year'] mm = context.user_data['birth_month'] birthday = datetime.date(year=yyyy, month=mm, day=dd) if today - birthday < datetime.timedelta(days=0): raise ValueError("invalid value") context.user_data['birthday'] = birthday STATE = None update.message.reply_text(f'ok, you born on ') except: update.message.reply_text( "it's funny but it doesn't seem to be correct. ") # function to handle the /help command def help(update, context): update.message.reply_text('help command received') # function to handle errors occured in the dispatcher def error(update, context): update.message.reply_text('an error occured') # function to handle normal text def text(update, context): global STATE if STATE == BIRTH_YEAR: return received_birth_year(update, context) if STATE == BIRTH_MONTH: return received_birth_month(update, context) if STATE == BIRTH_DAY: return received_birth_day(update, context) # This function is called when the /biorhythm command is issued def biorhythm(update, context): print("ok") user_biorhythm = calculate_biorhythm( context.user_data['birthday']) update.message.reply_text(f"Phisical: ") update.message.reply_text(f"Emotional: ") update.message.reply_text(f"Intellectual: ") def calculate_biorhythm(birthdate): today = datetime.date.today() delta = today - birthdate days = delta.days phisical = math.sin(2*math.pi*(days/23)) emotional = math.sin(2*math.pi*(days/28)) intellectual = math.sin(2*math.pi*(days/33)) biorhythm = <> biorhythm['phisical'] = int(phisical * 10000)/100 biorhythm['emotional'] = int(emotional * 10000)/100 biorhythm['intellectual'] = int(intellectual * 10000)/100 biorhythm['phisical_critical_day'] = (phisical == 0) biorhythm['emotional_critical_day'] = (emotional == 0) biorhythm['intellectual_critical_day'] = (intellectual == 0) return biorhythm def main(): TOKEN = "insert here your token and don't share it with anyone!" # create the updater, that will automatically create also a dispatcher and a queue to # make them dialoge updater = Updater(TOKEN, use_context=True) dispatcher = updater.dispatcher # add handlers for start and help commands dispatcher.add_handler(CommandHandler("start", start)) dispatcher.add_handler(CommandHandler("help", help)) # add an handler for our biorhythm command dispatcher.add_handler(CommandHandler("biorhythm", biorhythm)) # add an handler for normal text (not commands) dispatcher.add_handler(MessageHandler(Filters.text, text)) # add an handler for errors dispatcher.add_error_handler(error) # start your shiny new bot updater.start_polling() # run the bot until Ctrl-C updater.idle() if __name__ == '__main__': main()
Пришло время проверить его:

Поздравляем! Telegram-бот на Python полностью готов.
Бот, созданный для примера, был сохранен. Его можно протестировать по имени пользователя @mastro35_mastrobot.
Как создать бота в Telegram: большая инструкция

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

Освойте профессию
«Python-разработчик»
Что такое Telegram-бот?
Telegram — популярный мессенджер, позволяющий пользователям обмениваться сообщениями, видео, музыкой и файлами. Блогеры используют сервис для публикации своего контента, а бизнес — чтобы продавать товары и услуги. Кроме всего прочего, в Telegram есть возможность создавать собственных ботов — программы внутри мессенджера, автоматизирующие общение. У каждого бота есть уникальное имя, поэтому его можно легко найти в строке поиска Telegram. Также ботов можно добавлять в чаты и каналы, чтобы они выполняли роль модератора или администратора. С недавних пор Telegram-боты могут быть полноценными веб-приложениями с собственным пользовательским интерфейсом.
Python-разработчик
Освойте Python, самый популярный язык программирования
3 075 ₽/мес 6 150 ₽/мес

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

Например, при помощи телеграм-бота можно автоматизировать запись на услуги в салон или к врачу и разгрузить администраторов. Бот может принять заявку в любое время суток, в выходные и праздники, а также и перенести информацию о записи в календарь компании.
Боты для продвижения и продаж
Бот может отвечать на вопросы клиентов, предлагать промокоды, рассказывать о новых продуктах. Telegram-бот здесь может взять на себя функцию социальных сетей, email-рассылки и продавца-консультанта.
Чатбот поможет в форме непринужденной беседы подвести клиента к покупке вашего продукта. Источник
Боты для общения и развлечения

Telegram-боты нужны не только для того, чтобы продавать. Они также могут помочь выбрать кино на вечер, предложить забавный тест или сгенерировать мем. Например, студенты Skillfactory разработали для Московского зоопарка Telegram-бот, который имитирует общение с манулом Тимофеем и предлагает поучаствовать в викторине.
Конструкторы для настройки ботов
Для создания простых ботов можно использовать сервисы-конструкторы. С их помощью получится реализовать наиболее частые сценарии использования: ответы на вопросы, выдачу информации по запросу и обработку данных пользователя. Такие сервисы не требуют знания программирования, их можно освоить за несколько часов. Популярные конструкторы для создания ботов Telegram: Manybot — сервис для создания ботов с помощью сообщений в чате. Подойдет для самых простых сценариев использования. У Manybot есть встроенная реклама и нет возможности отключить ее с помощью подписки; botmother — редактор ботов, который умеет работать не только с Telegram, но и с другими популярными мессенджерами. Есть возможность обрабатывать медиа, файлы и обращаться к сторонним сервисам. PuzzleBot — мощный конструктор, позволяющий создать бота практически любой сложности и без единой строчки кода. При этом важно понимать основы программирования: переменные, циклы и условия. Есть премиальная версия по подписке.

Станьте разработчиком на Python и решайте самые разные задачи: от написания кода до автоматизации процессов
Какие технологии нужны, чтобы создать чат-бота в Telegram с нуля?
Если от бота нужны нестандартные сценарии использования или в проекте важно полностью контролировать поведение и обработку данных, то без программирования не обойтись. У Telegram открытое API с хорошей документацией, поэтому ботов можно разрабатывать практически на любом языке программирования, но удобнее использовать для этого уже готовые библиотеки. Разработчики Telegram активно развивают мессенджер, поэтому от библиотеки важно, чтобы она обновлялась так же часто и поддерживала все новшества сервиса. Ботов чаще всего пишут на Python из-за простоты и удобства этого языка. Для Python существуют следующие библиотеки для ботов Telegram: aiogram — комплексная библиотека с отличной документацией, поддержкой и активным сообществом. Есть русскоязычное сообщество разработчиков, которое поможет с трудностями и ответит на вопросы. Библиотека aiogram поддерживает асинхронность, работу с машиной состояний и рассчитана на разработку сложных ботов с большим количеством ежедневных пользователей. Сейчас у aiogram две активные версии, и лучше сразу выбирать версию 3.0, которая пока находится в бете, но работает стабильно. Библиотека подразумевает глубокие знания Python и опыт в программировании, поэтому может быть сложной для начинающих; telebot (pyTelegramBotAPI) — библиотека для простых ботов с небольшим количеством пользователей, поддерживающая работу с основными методами Telegram API. С telebot сложнее организовать асинхронность и управлять большой нагрузкой, но новичкам в разы легче и приятнее с ней работать.
Читайте также Полезные библиотеки для Python: чем пользуются разработчики
В статье мы будем использовать библиотеку telebot и писать код на Python, поэтому нам понадобится редактор кода. Сейчас разработчики в основном используют один из двух редакторов: Visual Studio Code — бесплатный редактор кода от компании Microsoft с задатками полноценной среды разработки. VS Code можно использовать практически с любыми языками программирования и технологиями. Для этого компания предусмотрела маркетплейс плагинов, расширяющих возможности редактора. VS Code полностью бесплатный и доступен для Windows, macOS и Linux. PyCharm — полноценная среда разработки на Python от компании JetBrains. Более тяжеловесная, чем VS Code, и включает в себя дополнительные инструменты для профессиональной работы над большими проектами. Есть как бесплатная версия, так и продвинутая по подписке. Для разработки даже самых сложных ботов хватит возможностей бесплатной версии PyCharm.
Как создать своего бота в Telegram
Разработка Telegram-бота начинается с его создания в мессенджере. Для этого команда сервиса предусмотрела специального бота BotFather, через которого осуществляется управление другими ботами пользователя. Важно отметить, что BotFather доступен только под этим именем и оснащен синей галочкой верификации. Найти его можно через строку поиска или по ссылке.
После перехода в BotFather нажимаем на кнопку «Начать». В чат придет сообщение со списком всех команд, доступных в боте. Так как мы создаем нового бота, то нам нужна команда `/newbot`. Ее можно выбрать из списка или ввести с клавиатуры и отправить в чат.
После этого BotFather попросит ввести название бота, которое пользователи будут видеть в его профиле и списке своих чатов. Оно может быть любым, но должно передавать суть бота и его возможности. Мы разрабатываем бота для комплиментов, так его и назовем — «Комплименты».
Теперь нашему боту надо задать имя пользователя, по которому его можно будет найти в Telegram. В этом случае уже есть несколько правил оформления:
- имя бота должно заканчиваться словом `bot`: к примеру, `SuperBot` или `super_bot`. Это обязательное требование Telegram, чтобы пользователи могли отличать обычные профили от ботов. Исключение делается только для внутреннего BotFather, имя которого начинается с ключевого слова, а не заканчивается им;
- имя бота должно быть уникальным, а учитывая, что многие создают ботов ради эксперимента и не удаляют их, то найти подходящий свободный вариант может быть проблематично.
Исходя из всего этого, подбираем звучное имя, состоящее из ключевых слов, которые бы точно описывали его суть. Для экспериментов можно использовать просто набор символов. В нашем случае имя `compliment_bot` уже было занято, поэтому использовали `super_compliment_bot`. Получилось слишком длинно, но отражает суть.
После регистрации BotFather передаст нам токен для доступа к нашему боту и подскажет ссылки на официальную документацию по разработке ботов для Telegram. Важно запомнить, что токен надо держать в секрете. С его помощью можно полностью управлять ботом и сообщениями, которые он отправляет. Посторонние лица, не имеющие отношения к разработке вашего бота, не должны его знать.

Оформление бота
Бот создан, и его можно найти в строке поиска Telegram или по ссылке. Но в таком виде пользователю будет очень сложно понять, для чего нужен бот и какие задачи он выполняет. Поэтому оформим его, добавив описание, иконку и приветственное изображение.

Для этого опять откроем BotFather, введем команду `/mybots` и выберем из списка только что созданного бота. Перед нами откроется меню управления ботом.

Коротко о каждом пункте меню:
API Token — можно узнать токен, если потеряли его. Также можно отозвать имеющийся токен и сгенерировать новый, если кто-то все же узнал его и перехватил на себя управление ботом;
Edit Bot — меню редактирования бота, в котором можно изменить имя, добавить описание, иконку, приветственное изображение и команды;
Bot Settings — тут можно выдавать боту права на взаимодействия с сообщениями в групповых чатах и каналах, добавлять кнопки и включить инлайн-режим;
Payments — бот может принимать платежи, к примеру, можно предлагать его функции по подписке или продавать через него товары. В этом пункте меню можно подключить платежную систему для обработки платежей и банковский счет. Есть поддержка российских платежных систем;
Transfer Ownership — бот принадлежит пользователю, который его создал, но права на владение и управление можно передать с помощью этого пункта меню;
Delete Bot — если бот больше не нужен, то его можно удалить, освободив список свободных уникальных имен.
У нашего бота пока есть только название. Теперь зададим ему описание, которое будет видно в окне его профиля. Для этого в меню бота выбираем Edit Bot → Edit About и присылаем в чат короткое описание. После зададим расширенное описание, выводящееся в чате новым пользователям. Переходим в Edit Bot → Edit Description и присылаем текст.
Для узнаваемости боту надо установить иконку, которую будет видно в списке чатов пользователя. Для иконок есть ограничения:
- формат файла должен быть jpg или png;
- квадратное изображение не меньше 300×300px и не больше 1280×1280px. Лучше всего использовать изображения размером 500×500px;
- изображение надо отправить BotFather в виде фото, а не файла.
Также боту можно задать изображение с описанием его возможностей. Его будут видеть новые пользователи при переходе в чат. Можно использовать картинки размером 640×360px или гифки 320×120px/640×360px. На таком изображении можно тезисно указать возможности бота и оставить QR-код с ссылкой на сайт компании или разработчика для пользователей, которые используют настольную версию Telegram.
Иконку бота можно задать, перейдя в Edit Bot → Edit Botpic, а изображение-описание — Edit Bot → Edit Description Picture. После настройки наш Telegram-бот выглядит так:

Начинаем программировать
Теперь у нас есть готовый оформленный бот, который ничего не умеет. Если открыть и запустить бота командой `/start` или кнопкой, то ничего не произойдет. Поэтому надо его оживить и научить обрабатывать сообщения от пользователя. Наш бот будет присылать в чат случайный комплимент из собственной коллекции.
Сперва надо установить среду разработки. В этой статье будем использовать PyCharm от JetBrains. Скачать установочный файл можно с официального сайта разработчика. Скачать и установить Python можно с официального портала. Проверить установленную версию Python можно с помощью следующей команды:

При создании бота мы будем в основном работать с библиотекой telebot. Поэтому ее надо установить. Заходим в PyCharm и создаем новый проект с названием `bot`. PyCharm создаст необходимое окружение, в котором мы установим библиотеку. Для этого надо открыть вкладку Terminal в редакторе кода и ввести команду `pip install pyTelegramBotAPI` для Windows или `pip3 install pyTelegramBotAPI` для macOS.
В папке проекта должен был автоматически появиться файл `main.py`. Если этого не произошло, то создаем его сами. Теперь научим нашего бота здороваться. Для этого в файле `main.py` импортируем `telebot`, создадим переменную `token` с нашим токеном и передадим его экземпляру бота.
import telebot # Импортируем telebot token = ('Ваш токен') bot = telebot.TeleBot(token)
Теперь создадим хендлер для обработки команды `/start`. Хендлер (Heandler) или обработчик — функция, которая вызывается в ответ на наступление определенного события. В случае с Telegram хендлер запускает функцию при получении сообщения.
В самом хендлере создадим функцию `start_message` с текстом сообщения, которым бот будет отвечать на полученную команду. Нам нужно бесконечное выполнение кода, чтобы бот работал всегда и был доступен в любое время суток. Поэтому завершим все строкой `bot.polling(none_stop=*True*, interval=0)`, которая будет запускать бесконечное выполнение.
import telebot # импортируем telebot # передаём значение переменной с кодом экземпляру бота token = ('Ваш токен') bot = telebot.TeleBot(token) # хендлер и функция для обработки команды /start @bot.message_handler(commands=['start']) def start_message(message): bot.send_message(message.chat.id, "Привет ✌️") # бесконечное выполнение кода bot.polling(none_stop=True, interval=0) Встроить код
Сейчас можно попробовать запустить код в PyCharm и открыть бота в Telegram. Если отправить ему команду `/start`, то он ответит сообщением, которое мы передали ему в коде. Бот работает, значит, можно наращивать его возможности.

Сейчас токен бота находится в одном файле с его кодом. Такой подход можно применять в разработке, но если надо будет поделиться кодом с кем-то или опубликовать его на GitHub, то токен надо будет удалять и тратить на это время. А еще можно просто забыть удалить токен, и тогда безопасность бота будет под вопросом.
Поэтому создадим в папке проекта файл `secrets.py` и в файле инициализируем словарь с ключом `BOT_API_TOKEN` и самим токеном в виде значения ключа.
secrets = Встроить код
Теперь вернемся к файлу `main.py`, импортируем словарь из файла `secrets.py` и сделаем так, чтобы токен подтягивался из файла, а не находился в коде.
import telebot # импортируем telebot from secrets import secrets # импортируем словарь с токеном из файла secrets.py # передаём значение переменной с кодом экземпляру бота token = secrets.get('BOT_API_TOKEN') bot = telebot.TeleBot(token) # хендлер и функция для обработки команды /start @bot.message_handler(commands=['start']) def start_message(message): bot.send_message(message.chat.id, "Привет ✌️") # бесконечное выполнение кода bot.polling(none_stop=True, interval=0)
Снова запускаем код и проверяем. Бот продолжает отвечать на команду `/start`, но в его коде уже нет токена. Поэтому можно спокойно делиться файлом `main.py` и не бояться за безопасность.
Разработчики могут встраивать кнопки для удобного общения с Telegram-ботами. Воспользуемся этой возможностью и создадим несколько кнопок для автоматической отправки команд. Нам потребуется определение типов сообщений, поэтому для этого импортируем `types` из `telebot`. Часть с импортами в коде будет выглядеть так:
import telebot # импортируем telebot from secrets import secrets # импортируем словарь с токеном из файла secrets.py from telebot import types # для определения типов
Теперь перепишем хендлер для обработки команды `/start`. Он будет не только отправлять приветственное сообщение, но и инициализировать кнопки бота. В нашем боте две кнопки: «Старт» будет выводить краткую инструкцию по использованию бота, а «Комплимент» — присылать приятное сообщение из коллекции. Сами кнопки украсим эмодзи.
Вместе с этим заменим текст приветственного сообщения. Будем обращаться к пользователю по имени. Мы не можем знать имен всех пользователей, но их знает Telegram, поэтому спросим у него с помощью конструкции `` . Весь код хендлера выглядит так:
# хендлер и функция для обработки команды /start @bot.message_handler(commands=['start']) def start_message(message): markup = types.ReplyKeyboardMarkup(resize_keyboard=True) start_button = types.KeyboardButton(" Старт") action_button = types.KeyboardButton(" Комплимент") markup.add(start_button, action_button) bot.send_message(message.chat.id, text="Привет, \nВоспользуйся кнопками".format(message.from_user), reply_markup=markup)

Бот обзавелся красивыми кнопками, но если попробовать нажать на них, то ничего не произойдет. Исправим это, дописав функции для ответа. Кнопка в Telegram просто отправляет в чат то, что на ней написано. Поэтому надо научить бота анализировать полученные сообщения и отвечать на сообщения-триггеры.
Для начала создадим коллекцию комплиментов в отдельном файле `compliments.py`:
compliments = ('Выглядишь лучшее всех!', 'Сегодня будет замечательный день!', 'Ты обязательно всё сможешь!', 'Я не встречал людей добрее тебя!', 'С тобой приятно проводить время!',)
После этого импортируем файл и модуль для работы со случайными числами:
import random # для выбора случайного комплимента from compliments import compliments # коллекция комплиментов
Теперь можно приступать к созданию хендлера для обработки кнопок. В условии будем отслеживать, какой текст пришел от пользователя. Если встречаем « Старт», то выводим краткое описание возможностей, если « Комплимент» — присылаем случайное сообщение из коллекции. На все остальные сообщения будем отвечать просьбой воспользоваться кнопками. Весь код хендлера выглядит так:
# хендлер для обработки нажатий кнопок @bot.message_handler(content_types=['text']) def buttons(message): if (message.text == " Старт"): bot.send_message(message.chat.id, text="Я могу поддержать тебя и поднять настроение. Просто попроси об этом") elif (message.text == " Комплимент"): bot.send_message(message.chat.id, text=f"") else: bot.send_message(message.chat.id, text="Я могу отвечать только на нажатие кнопок")

Бот готов, исправно работает, отвечает на сообщения и присылает в чат случайные комплименты из собственной коллекции, а его полный код выглядит так:
import telebot # импортируем telebot from secrets import secrets # словарь с токеном из файла secrets.py from telebot import types # для определения типов import random # для выбора случайного комплимента from compliments import compliments # коллекция комплиментов # передаём значение переменной с кодом экземпляру бота token = secrets.get('BOT_API_TOKEN') bot = telebot.TeleBot(token) # хендлер и функция для обработки команды /start @bot.message_handler(commands=['start']) def start_message(message): # создаём кнопки бота markup = types.ReplyKeyboardMarkup(resize_keyboard=True) start_button = types.KeyboardButton(" Старт") action_button = types.KeyboardButton(" Комплимент") markup.add(start_button, action_button) # приветсвенное сообщение для команды /start bot.send_message(message.chat.id, text="Привет, \nВоспользуйся кнопками".format(message.from_user), reply_markup=markup) # хендлер для обработки нажатий кнопок @bot.message_handler(content_types=['text']) def buttons(message): if (message.text == " Старт"): bot.send_message(message.chat.id, text="Я могу поддержать тебя и поднять настроение. Просто попроси об этом") elif (message.text == " Комплимент"): bot.send_message(message.chat.id, text=f"") else: bot.send_message(message.chat.id, text="Я могу отвечать только на нажатие кнопок") # бесконечное выполнение кода bot.polling(none_stop=True, interval=0)
А полное дерево файлов в проекте выглядит так:
. └── bot/ ├── main.py ├── secrets.py └── compliments.py
Сейчас бот работает только в том случае, если код запущен на компьютере. Поэтому пользователи не могут получить к нему постоянный доступ. Для этого надо арендовать виртуальный сервер, загрузить на него код бота и запустить. В таком случае бот будет доступен в любое время и не будет зависеть от компьютера разработчика.
Как добавить функционал и настроить ответы для бота в Телеграме?
Это можно сделать в конструкторе или прописать при помощи кода. В последнем случае нужно создать бота в Telegram, а затем написать ему серверную часть: код, который при нажатии на определенную кнопку будет высылать конкретный ответ. Для этого нужно создать кнопки, библиотеку ответов и хендлеры, которые организуют связь между действиями пользователя и ответами бота.
Как опубликовать и запустить бота в Телеграме?
Чтобы бот заработал, нужно разместить написанный код на арендованном сервере и создать бот в мессенджере. Код будет отвечать за связь сервера с чатом в Telegram.
Как продвигать и увеличить популярность своего бота в Телеграме?
Расскажите о своем боте на сайте, в социальных сетях и в email-рассылке. Для тестового периода лучше привести в бот теплую аудиторию, которая вас уже знает и читает. Они могут попробовать бот, написать вам об ошибках. После этого можно заняться платной рекламой: купить ее у Telegram или обратиться к блогерам.
На каком языке лучше написать бота?
На любом, который вы знаете. Ботов можно писать на Python, C, Java. Чаще всего для этой задачи выбирают Python, потому что он прост в использовании.
Python-разработчик
Освойте Python с нуля. Подготовим к трудоустройству: дадим много практики, реальные проекты для портфолио, поможем с резюме. Лучшие студенты пройдут стажировки в проектах компаний-партнеров.
Создание бота Telegram с помощью Python: пошаговое руководство

TLDR Ключевая идея видео заключается в том, что изучение Python и создание Telegram-ботов может стать прибыльным навыком для фрилансеров, и в видео приводится пошаговое руководство о том, как создать Telegram-бота.
Summarize any YouTube video Summarize any video by yourself
Install on Safari
Install on Chrome
Ключевые выводы
Изучение того, как создавать Telegram-ботов, может стать прибыльным навыком, позволяющим частным лицам выполнять заказы фрилансеров и зарабатывать реальные деньги за их выполнение.
Python является популярным языком для разработки ботов Telegram благодаря своей простоте использования, обилию библиотек и возможности создавать ботов для других мессенджеров с таким же синтаксисом.
Создание ботов в Telegram может варьироваться от простых действий до полноценных магазинов с покупками, предлагая широкий спектр возможностей для разработчиков.
Имя бота должно состоять из одного целого слова без пробелов, и если выбранное имя уже занято, необходимо указать альтернативное имя.
Токен необходим для подключения к Telegram-боту и управления им, позволяя пользователям добавлять дополнительные характеристики и настраивать его функциональность.
Добавление команд и функциональных возможностей в бота требует написания кода, который будет рассмотрен в следующих уроках.
Get insights from any YouTube video
Install on Safari
Install on Chrome
Просмотреть больше Программирование
- Оптимизация кода на C++: эффективные техники для профессионалов
- Будущее кодирования: упадок ИТ-экспертизы
- Создание документации по коду с комментариями XML в Visual Studio.
- Программирование на Python для начинающих — изучите основы с помощью этого руководства
- Требования к памяти для 1 миллиона потоков на 7 языках: Go, Rust, C#, Elixir, Java, Node, Python
- Советы по прохождению собеседования Frontend-разработчика в Яндексе: алгоритмическая сложность, решение проблем и оптимизация
Отмеченное временем резюме
Боты стали популярны в последние годы, поскольку они автоматизируют рутинную работу и предоставляют быструю и удобную информацию, что делает освоение этого навыка прибыльным для выполнения внештатных заказов.
Python является популярным языком для разработки ботов Telegram благодаря своей простоте использования, обилию библиотек и возможности создавать ботов для других мессенджеров, используя тот же синтаксис.
Вы можете создавать ботов с полезными действиями или даже магазин с покупками, ознакомившись с Python и используя Phaser bot в Telegram.
Нажмите на кнопку "Пуск", укажите имя для бота, и если имя не занято, бот будет создан.
После создания Telegram-бота мы получаем токен для подключения и добавления таких функций, как изображение и описание, с командами, доступными для редактирования, управления и удаления бота.
Спикер демонстрирует, как создать Telegram-бота, включая выбор имени, добавление описания и установку изображения.
Описание, отображаемое в боте, может быть очищено и настроено с помощью команды Set about Text, а дополнительные функциональные возможности могут быть добавлены с помощью кодирования в будущих уроках.
Подключайтесь к действиям в течение года и обрабатывайте их, подписывайтесь на канал и присоединяйтесь к социальным сетям.
Summarize any video by yourself
