Как сделать мессенджер на python

Добавил пользователь Валентин П.
Обновлено: 04.10.2024

Как написать мессенджер на Python? Технический директор в Lia Никита Левашов расскажет, как написать свой мессенджер Python, используя инструменты программиста. На вебинаре рассмотрим правила именования на Python и ошибки в Python-коде.

Команда Skillbox нацелена на результат каждого участника онлайн-обучения. По завершению интенсива наши студенты умеют программировать на Python и делать прототип мессенджеров.

00:00 - Начало
21:38 - Практика: создаем мессенджер
2:02:00 - Разбор домашних работ

Видео Разбор правил именования на Python. Создаем свой мессенджер. Интенсив по Python канала Skillbox Программирование

Возможности Телеги по сравнению с другими средствами общения Интернете действительно впечатляют. Секретный чат и боты – очень удобные вещи. И если с созданием первого всё понятно, как найти робота в мессенджере, который будет выполнять функции, нужные именно вам? Остаётся создать что-то своё, и бот для Телеграма на Python – самое распространённое решение для раскрытия скрытого функционала мессенджера. Однако, не самое простое. Поговорим о том, почему Питон не подходит новичкам.

Способы получения собственного бота

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

  1. Написать самостоятельно. Ведущий язык программирования здесь – всем известный Питон. Это – самое трудоёмкое решение нашей задачи, но при этом и самое универсальное – если вы знаете, чего хотите и языки программирования, не придётся тратить много времени и денег для выполнения задачи.
  2. Использовать конструктор. Да, есть такие инструменты, которые помогут вам. Минус здесь разве что в том, что чаще всего функционал у них ограничен, и не все ваши задумки могут воплотиться в жизнь. Но чат-бота или анонимный чат в них создать можно без проблем.
  3. Купить. Да, боты в Телеграм продаются и делаются на заказ. Другое дело, что пишутся они на том же самом Python, и обучающих статей на эту тему есть огромное количество. Поэтому лично меня бы жаба задушила за то, что я заплатила за то, что могла сделать сама. С другой стороны, я пару месяцев назад решила попробовать написать его – и где результат? Нигде, потому что это оказалось сложно, ведь я не знаю Питона.

В чем преимущества и недостатки создания Телеграм бота на Python?

  • Трата времени и сил на изучение языка программирования.

Хотя плюсов и больше, единственный минус может их перевесить.

Как новичку создать бота для Телеграма на Python?

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

Почему создание бота на Python лучше доверить профессионалу?

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

Продвинутый способ создания ботов для Телеграм: осваиваем Python и.

Какой способ создания выбрать?

Итак, мы подошли к главному – вы уже примерно знаете, с чем столкнётесь на каждом из путей, с которым столкнётесь. И какой же выбрать? С одной стороны, если вам не нужен какой-то особенный функционал, и нужно создать, например, чат-бота, достаточно будет обычного конструктора. Зачем в этом случае платить кому-то или тратить время на изучение языков программирования? Если же функционала таких инструментов-помощников вам мало, уже стоит задуматься либо над тем, где изучить Питона, либо над тем, где достать деньги на услуги профессионалов. И здесь уже я не могу дать вам точного ответа – всё зависит от вас. Если ваше время вам дороже, чем деньги, стоит заплатить. Если же наоборот – вперёд навстречу новым знаниям.

Также можете просто найти Телеграм-ботов. О том, где их искать, читайте в статье “Ищем ботов в Телеграм правильно“.

Заключение

Бот для Телеграма на Python – вещь непростая. Для создания его самостоятельно вам нужно понять, как работает эта сторона мессенджера, скрытая от глаз обычного пользователя. И если вы далеки от компьютерной сферы, это будет сложно. Но если вам не хватает конструкторов и денег на то, чтобы заплатить профессионалам, почему бы не попытаться?

Как создать приложение-мессенджер

Если вы сомневаетесь нужно в ли ступать на территорию разработки мессенджеров, просто взгляните на последние цифры. В 2021 году приложением Facebook Messenger пользуются 1,3 миллиарда человек во всем мире, а WhatsApp есть на телефоне у 2 миллиардов пользователей (¼ часть населения земли, на секунду).

Ключевые функции мессенджеров

Давайте сразу к делу — существует список функций, которые нельзя игнорировать при разработке мессенджера . В Purrweb мы считаем, что приложение должно быть, в первую очередь, удобным для пользователя, учитывать боли и запросы клиентов. Поэтому мы всегда советуем начать с командного мозгового штурма — это поможет определить нишу, целевую аудиторию, а также выбрать то, что будет отличать вас от конкурентов. После это можно думать, как создать свой мессенджер , и выбирать, какие функции нужны вашему приложению. Основываясь на нашем опыте, мы составили 2 списка — must-have и nice-to have функций — для по-настоящему классного приложения-мессенджера.

Must-have функции

Авторизация

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

Доступ к контактам

как создать приложение-мессенджер

как создать приложение-мессенджер

Обмен файлами

Возможность обмена медиафайлами — еще одна причина, почему люди будут регулярно обращаться к вашему сервису. Разрешите им отправлять друг другу фотографии, видео, гифки и документы, и тогда многие будут использовать чаты в качестве облачного хранилища (да-да, мы все искали когда-нибудь фотографию карты или паспорта в переписках).

Push-уведомления

Защита данных

READ MORE Давай упрощай: как с помощью дизайна привлечь новичков в сложный мир инвестиций. Кейс Purrweb

Nice-to-have функции

Звонки

Современные чат-приложения — это гораздо больше, чем просто обмен текстами и смайликами. Если хотите сделать не просто мессенджер, а настоящую вселенную для общения, вам следует подумать о добавлении голосовых и видеозвонков. Может быть, это не так уж необходимо на первом этапе разработки мессенджера , но как только появятся ресурсы, хорошо бы подумать о расширении функциональности и внедрении фичи со звонками.

Чат-боты

как создать приложение-мессенджер

Как создать свой мессенджер, который принесет прибыль?

  • Реклама в приложении;
  • Технология переадресации звонков. Например, звонит вам кто-то из-за границы — звонок не идет через оператора, а переносится в Viber, который получает за это деньги;
  • Брендированные стикеры, созданные в коллаборации с брендами;
  • Пожертвования от пользователей. Да, это тоже вариант, и именно так живет и здравствует Telegram);

Как найти надежного разработчика?

Помимо этого, для стартапа важно соблюдать бюджет и сроки. Поэтому мы искренне советуем выбрать того, кто разрабатывает приложения на React Native. Почему? Сейчас объясним.

React Native — это фреймворк, который был создан Facebook 5 лет назад. Код приложений пишется на JavaScript – одном из самых популярных языков программирования во всем мире. Есть 3 основных преимущества работы с компанией, которая работает на React Native.

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

Единая общая кодовая база. При разработке двух отдельных версий приложения для Android и iOS код в них будет совпадать примерно на 65-70%. Что это значит для вашего бизнеса? Во-первых, это значительно сокращает время разработки (примерно в 2 раза). Во-вторых, не нужно нанимать и платить (!) двум отдельным командам — это осталось в прошлом. Не нужно будет думать, как создать мессенджер на iOS ? Как создать мессенджер на Android ? Кто за это возьмется? Достаточно будет найти ту самую команду, которая работает с фреймворком React Native.

Нативные UI-элементы. Компании Facebook принадлежат бесконечные библиотеки нативных UI-элементов для интерфейса. Как это поможет вашей бизнес-идее? Очень просто — это означает, что ваше будущее приложение функционировать как нативное. Производительность мессенджера будет такой же, как если бы вы разработали его на Java или Swift.

Мы работаем с React Native последние 4 года и еще ни разу не разочаровались. Фреймворк позволяет нам создавать MVP (минимально-жизнеспособный продукт)для наших клиентов за 3 месяца. Это означает, что вы придете к нам с идеей, и через 90 дней у вас будет рабочая версия продукта, которую можно тестировать, собирать обратную связь и показывать потенциальным инвесторам.

Сколько стоит создать приложение-мессенджер?

Вот мы и дошли до самой важной части статьи — той, которая про стоимость и сроки. Разработка мессенджера – сложный процесс, в котором участвует команда разработчиков, дизайнеров, проектных менеджеров и QA-специалистов. Выбросить кого-то из команды и при этом сделать крутой продукт нельзя 🙂

Мы предлагаем полный цикл разработки приложения на React Native — включая UI / UX дизайн, API, услуги разработки Frontend и тестирование — и все, что нужно, чтобы ваше приложение попало в топ AppStore и Google Play. Наша философия – быть максимально открытыми и прозрачными для клиентов, поэтому мы предпочитаем обсуждать вопросы сроков и стоимости на берегу. Кроме того, в историях с разработкой мессенджеров , мы отдельно обсуждаем безопасность данных, протоколы шифрования и соединение с серверами. В это время наши дизайнеры смогут углубиться в изучение ЦА приложения, спроектируют логику будущего сервиса, продумают визуальную составляющую.

Мы подробно рассказали о том, как создать свой мессенджер и как его можно монетизировать. Теперь давайте посчитаем, сколько это стоит!

как создать приложение-мессенджер

Key in your e-mail address to get a full breakdown of the estimation with all details

Thank you! You will be contacted soon!

Итого

Над разработкой мессенджера, будет работать команда из 6 человек. Если судить по похожим проектам, над которыми мы работали, итоговая стоимость мессенджера вроде Telegram, составляет от $80.000 до $100.000: с готовым прототипом, UI/UX дизайном, iOS и Android версиями, тестированием и менеджментом проекта. Разработка своего мессенджера с Purrweb займет 5 месяцев.

Смотрите наше дизайн-портфолио и читайте отзывы клиентов . Мы также всегда на связи в самых популярных мессенджерах – в Telegram и WhatsApp .

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

Время переходить к делу и узнать наконец, как создавать ботов в Telegram.

Шаг №0: немного теории об API Telegram-ботов

Начать руководство стоит с простого вопроса: как создавать чат-ботов в Telegram?

Токен — уникальная строка из символов, которая нужна для того, чтобы установить подлинность бота в системе. Токен генерируется при создании бота. METHOD_NAME — это метод, например, getUpdates , sendMessage , getChat и так далее.

Токен выглядит приблизительно так:

Для выполнения запросов используются как GET, так и POST запросы. Многие методы требуют дополнительных параметров (методу sendMessage , например, нужно передать chat_id и текст). Эти параметры могут быть переданы как строка запроса URL, application/x-www-form-urlencoded и application-json (кроме загрузки файлов). Еще одно требование — кодировка UTF-8.

После отправки запроса к API, вы получаете ответ в формате JSON. Например, если извлечь данные с помощью метода getME , ответ будет такой:

Список всех типов данных и методов API Telegram-бота можно найти здесь (ENG) или с переводом здесь (ру) .

Есть два варианта.

Первый — вручную создавать запросы с помощью метода getUpdates . В качестве объекта вы получите массив объектов Update . Этот метод работает как технология длинных опросов (long polling), когда вы отправляете запрос, обрабатываете данные и начинаете повторяете процесс. Чтобы избежать повторной обработки одних и тех же данных рекомендуется использовать параметр offset .

Как выбрать оптимальный метод? Метод getUpdates лучше всего подходит, если:

Метод с Webhook лучше подойдет в таких случаях:

  1. Вы используете веб-языки (например, PHP).
  2. У бота низкая нагрузка, и нет смысла делать запросы вручную.
  3. Бот на постоянной основе интегрирован в веб-сервер.

В этом руководстве будет использоваться метод getUpdates .

Еще один вопрос: как создать зарегистрировать бота?

@BotFather используется для создания ботов в Telegram. Он также отвечает за базовую настройку (описание, фото профиля, встроенная поддержка и так далее).

Существует масса библиотек, которые облегчают процесс работы с API Telegram-бота. Вот некоторые из них:

По своей сути, все эти библиотеки — оболочки HTML-запросов. Большая часть из них написана с помощью принципов ООП. Типы данных Telegram Bot API представлены в виде классов.

В этом руководстве будет использоваться библиотека pyTelegramBotApi.

Шаг №1: реализовать запросы курсов валют

Весь код был проверен на версии Python==3.7 c использование библиотек:
pyTelegramBotAPI==3.6.6
pytz==2019.1
requests==2.7.0

Создадим файл pb.py со следующим кодом:

Были реализованы три метода:

  • load_exchange : загружает курсы валют по указанному URL-адресу и возвращает их в формате словаря(dict).
  • get_exchange : возвращает курсы валют по запрошенной валюте.
  • get_exchanges : возвращает список валют в соответствии с шаблоном (требуется для поиска валют во встроенных запросах).

Шаг №2: создать Telegram-бота с помощью @BotFather

Его нужно сразу настроить. Необходимо добавить описание и текст о боте (команды /setdescription и /setabouttext ), фото профиля ( /setuserpic ), включить встроенный режим ( /setinline ), добавить описания команд ( /setcommands ). Потребуется использовать две команды: /help и /exchange . Стоит описать их в /setcommands .

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

Шаг №3: настроить и запустить бота

Начнем с создания файла config.py для настройки:

Создадим файл bot.py . Нужно импортировать все необходимые библиотеки, файлы с настройками и предварительно созданный pb.py . Если каких-то библиотек не хватает, их можно установить с помощью pip .

Создадим бота с помощью библиотеки pyTelegramBotAPI. Для этого конструктору нужно передать токен:

Шаг №4: написать обработчик команды /start

Теперь чат-бот на Python работает и постоянно посылает запросы с помощью метода getUpdates . Параметр none_stop отвечает за то, чтобы запросы отправлялись, даже если API возвращает ошибку при выполнении метода.

Из переменной бота возможно вызывать любые методы API Telegram-бота.

Начнем с написания обработчика команды /start и добавим его перед строкой bot.polling(none_stop=True) :

Это было просто, не так ли?

Шаг №5: создать обработчик команды /help

Давайте оживим обработчик команды /help с помощью встроенной кнопки со ссылкой на ваш аккаунт в Telegram. Кнопку можно озаглавить “Message the developer”.

Как видно в примере выше, был использован дополнительный параметр ( reply_markup ) для метода send_message . Метод получил встроенную клавиатуру ( InlineKeyboardMarkup ) с одной кнопкой ( InlineKeyboardButton ) и следующим текстом: “Message the developer” и url='telegram.me/artiomtb' .

Код выше выглядит вот так:

обработчик команды /help

Шаг №6: добавить обработчик команды /exchange

Обработчик команды /exchange отображает меню выбора валюты и встроенную клавиатуру с 3 кнопками: USD, EUR и RUR (это валюты, поддерживаемые API банка).

Вот как работает InlineKeyboardButton . Когда пользователь нажимает на кнопку, вы получаете CallbackQuery (в параметре data содержится callback-data ) в getUpdates . Таким образом вы знаете, какую именно кнопку нажал пользователь, и как ее правильно обработать.

Вот как работает ответ /exchange:

обработчик команды /exchange

Шаг №7: написать обработчик для кнопок встроенной клавиатуры

В библиотеке pyTelegramBot Api есть декоратор @bot.callback_query_handler , который передает объект CallbackQuery во вложенную функцию.

Давайте реализуем метод get_ex_callback :

Все довольно просто.

Запишем в get_update_keyboard текущий курс валют в callback_data в форме JSON. JSON сжимается, потому что максимальный разрешенный размер файла равен 64 байтам.

Кнопка t значит тип, а e — обмен. Остальное выполнено по тому же принципу.

У кнопки Share есть параметр switch_inline_query . После нажатия кнопки пользователю будет предложено выбрать один из чатов, открыть этот чат и ввести имя бота и определенный запрос в поле ввода.

Методы serialize_ex и дополнительный serialize_exchange_diff нужны, чтобы показывать разницу между текущим и старыми курсами валют после нажатия кнопки Update .

Как видно, метод serialize_ex получает необязательный параметр diff . Ему будет передаваться разница между курсами обмена в формате . Это будет происходить во время сериализации после нажатия кнопки Update . Когда курсы валют отображаются первый раз, он нам не нужен.

Вот как будет выглядеть бот после нажатия кнопки USD:

отображение курса валют ботом

Шаг №8: реализовать обработчик кнопки обновления

Теперь можно создать обработчик кнопки Update . После дополнения метода iq_callback_method он будет выглядеть следующим образом:

Если данные обратного вызова начинаются с get- ( get-USD , get-EUR и так далее), тогда нужно вызывать get_ex_callback , как раньше. В противном случае стоит попробовать разобрать строку JSON и получить ее ключ t . Если его значение равно u , тогда нужно вызвать метод edit_message_callback . Реализуем это:

Как это работает? Очень просто:

Метод get_ex_from_iq_data разбирает JSON из callback_data :

Метод get_exchange_diff получает старое и текущее значение курсов валют и возвращает разницу в формате :

get_edited_signature генерирует текст “Updated…”:

отображение курса валют ботом

И вот так — если изменились:

обновление курса валют ботом

Шаг №9: реализовать встроенный режим

Реализация встроенного режима значит, что если пользователь введет @ + имя бота в любом чате, это активирует поиск введенного текста и выведет результаты. После нажатия на один из них бот отправит результат от вашего имени (с пометкой “via bot”).

Обработчик встроенных запросов реализован.

Библиотека передаст объект InlineQuery в функцию query_text . Внутри используется функция answer_line , которая должна получить inline_query_id и массив объектов (результаты поиска).

Используем get_exchanges для поиска нескольких валют, подходящих под запрос. Нужно передать этот массив методу get_iq_articles , который вернет массив из InlineQueryResultArticle :

Теперь при вводе “@exchangetestbost + пробел” вы увидите следующее:

инлайн режим бота

Попробуем набрать usd, и результат мгновенно отфильтруется:

инлайн режим бота: ввод параметра

Проверим предложенный результат:

инлайн режим бота: результат

Кнопка “Update” тоже работает:

инлайн режим бота: работа

Отличная работа! Вы реализовали встроенный режим!

Выводы

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