Как добавлять ботов в Telegram

Рассказываем, как подключить платежную систему к Telegram-боту и разместить его на сервере.

Введение

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

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

Платежные системы Telegram

Сейчас мессенджер поддерживает оплату в более чем 200 странах через такие шлюзы, как: Stripe, YooMoney, Sberbank, LiqPay, PayMaster и другие.

Все начинается с установки библиотеки aiogram. Сейчас, пожалуй, это самая популярная библиотека для разработки ботов на Python.

python -m pip install aiogram

Переходим в Telegram и пишем тут BotFather’у команду /newbot. Вводим имя нового бота. Важно, чтобы оно заканчивалось словом Bot.

Telegram web app. Онлайн магазин с корзиной + чат-бот

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

Связать бота с приложением

Создаем файл config.py и вписываем в него токен, который выдал BotFather. В основном файле main.py прописываем базовый код любого бота.

Обратите внимание на один важный момент: бот должен обрабатывать каждое сообщение с серверов Telegram. Для этого при запуске бота обязательно нужно поставить аргумент skip_updates в значение False. Это спасет от проблем при обработке платежей.

Теперь можно запустить код и проверить, работает ли бот. Убедившись, что все хорошо, приступаем к подключению платежей.

Возвращаемся к BotFather’у, даем команду /mybots и выбираем из списка своего бота.

В открывшемся меню кликаем на кнопку «Payments». Из предоставленного списка выбираем нужный платежный шлюз. В качестве теста используем PayMaster. Чтобы подключить оплату в Telegram-бота, сначала нужно выполнить тест, поэтому выбираем «PayMaster Test».

Следуем простым инструкциям бота платежной системы и получаем тестовый токен PayMaster. Его сразу же можно сохранить в config.py.

TOKEN = «5432877141:AAHEwBEb2mwnZX56oaHM10o33ZBZwVkvv-s» PAYMENTS_TOKEN = «1744374395:TEST:f14d9f0d42528b780370»

Возвращаемся к коду бота. Для того, чтобы запросить оплату товаров/услуг, нужно сгенерировать invoice с деталями платежа. Отправить его клиенту и обработать результат.

Подключаем оплату

Указываем список доступных цен на продукты. В качестве цены нужно передать целочисленное значение в минимально возможных единицах валюты. Если речь идет о рублях, то стоимость нужно указывать в копейках. То есть место 500 рублей мы тут укажем 500 * 100 или же 50 000 копеек. В случае с долларами будет почти также, $1=100 центов.

БОТ РАЗДАЮЩИЙ ТЕЛЕГРАМ ПРЕМИУМ БЕСПЛАТНО #телеграм #премиум #телегрампремиум #раздача #бесплатно

Если предполагается работа с другими валютами, можно использовать currencies.json от Telegram API.

Дальше в коде бота платежной системы мы создаем обработчик команды /buy. Команда будет генерировать и отправлять пользователю invoice платежа. В примере используется оплата месячной подписки.

Еще по теме:  Как быстро отправлять сообщения в Телеграмме на Айфоне

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

Настройки платежей

Обратите внимание на аргумент is_flexible. Его нужно указывать в значение True только в том случае, если финальная стоимость зависит от выбранного способа доставки, если речь идет о продаже какого-то физического продукта.

О других параметрах метода send_invoice вы всегда можете прочитать в официальной документации Telegram API.

Теперь нужно создать еще два обработчика: Pre Checkout Query и Successful Payment.

Pre Checkout Query отвечает за обработку и утверждение платежа перед тем, как пользователь его совершит. Так можно проверить доступность товара на складе или уточнить стоимость.

Важно, что серверам Telegram ответ нужен в течение 10 секунд. Если его не будет, платеж не пройдет.

Successful Payment отвечает за обработку успешно проведенного платежа.

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

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

Получив invoice на оплату от бота, нажимаем «Оплатить». Поскольку сначала мы проводим тестирование бота, воспользуемся специальной тестовой картой.

Вводим данные и оплачиваем подписку — все работает. При переходе на боевой проект важно не забыть выбрать правильный счет.

Теперь возвращаемся в BotFather, чтобы получить реальный токен от выбранного платежного шлюза. Если есть запрос на разные тарифы или способы оплаты, лучше запросить сразу 2-3 токена от разных платежных шлюзов. Далее нужно будет генерировать invoice с помощью токена выбранного провайдера.

Перенос бота на боевой сервер

Чтобы бот работал 24/7 вне зависимости от того, включен компьютер или нет, зальем его на реальный сервер.

Для этого воспользуемся облачным сервером линейки Shared Line от Selectel. Калькулятор панели управления позволяет выбрать гибкую конфигурацию сервера и сразу узнать, сколько будет стоить решение. Все продукты и услуги собраны у провайдера в одном месте, поэтому ими легко управлять. Арендовать сервер можно от 10 ₽/день, а в консоли есть возможность быстро масштабировать вычислительные ресурсы при необходимости.

Регистрируемся и входим в панель управления my.selectel.ru. Переходим в раздел «Облачная платформа» и выбираем «Серверы». Создаем сервер — после этого шага он загорится в списке как «ACTIVE».

Настраиваем конфигурацию. Для примера используем 1 ядро, 512 МБ DDR4 и 5 ГБ на диске.

Теперь переходим к выгрузке бота на боевой сервер. Сначала нужно подключиться к серверу через SSH. Для этого мы можем воспользоваться программой WinSCP для Windows. В Linux и MAC для этого есть свои встроенные инструменты.

Запускаем WinSCP. В качестве имени хоста указываем IP адрес нашего нового сервера. Логин и пароль можно взять во вкладке «Консоль» в панели управления.

Теперь перенесем сюда файлы нашего бота: config.py и main.py. Далее открываем отдельное соединение с сервером по SSH в консоли.

Для этого в WinSCP нажать кнопку и открыть PuTTY. Можно также воспользоваться командной строкой, принципиальной разницы нет.

Настройка бота с Payments 2.0

Подключившись к серверу, нужно выполнить ряд простых действий.

  • Обновить Python до версии 3.10.
  • Установить PIP.
  • Поставить библиотеку Aiogram.
Еще по теме:  Как отключить пересылку сообщений в Телеграмме в канале

Ирина Егорова

Постоянный автор и редактор блога AFlife.ru

Специализируюсь на финансовых обзорах, банковских темах (кредитование, ипотека, вклады, инвестирование, дебетовые и кредитные карты и многое другое). Большой опыт работы в банке, знаю специфику работы «от и до». Могу рассказать о ней грамотным и понятным языком.

Изучаю социальные сети и мессенджеры, а так же способы их раскрутки.

Источник: aflife.ru

Как разместить Telegram-бота на сервере?

Уже не первый раз меня спрашивали о том, как разместить своего бота на сервере и запустить его. В этой статье, я постараюсь коротко и ясно объяснить об этом. Но делать я это буду на бесплатном хостинге — Heroku.

  1. Создание бота
  2. Размещение бота на сервере Heroku
  3. Запуск бота на сервере Heroku
  4. Размещение бота на своём сервере
  5. Запуск бота на своём сервере

Я разбил статью на 5 глав. Как я сказал ранее, статья будет короткой. И с помощью этой навигации будет проще ориентироваться по требуемой информации.

Создание бота

Статью о том, как написать своего Telegram-бота на NodeJS я уже писал. Думаю я объяснил там всё достаточно понятно. Изучить её, если у вас еще нету бота и вы хотите его разработать на NodeJS. Если вы написали своего бота не на JavaScript, то можете пропускать эту часть и приступать ко второй главе.

Размещение бота на Heroku

Я люблю этот сервис за то, что я могу протестировать свои проекты в режиме «продакшн». Это дает мне гарантию, что мой проект будет работать стабильно, когда я его запущу в «боевом режиме».

Особой разницы в размещении бота на Heroku или на отдельном сервере нету. Тут всё достаточно просто.

  1. Зарегистрируйтесь на сайте Heroku
  1. Войдите в свой аккаунт и создайте первый проект, нажав на «Create new app».
  1. Придумайте название своему проекту. Название должно быть уникальным. Выбор региона не принципиален.
  2. После создания проекта, вам будет предложены варианты деплоя (размещения) вашего проекта на Heroku.

Тут есть несколько вариантов. Я опишу только первые два.

  • Heroku Git — с помощью CLI от Heroku, вы можете очень просто разместить своего бота на сервере Heroku.
  • GitHub — вы можете подключить свой аккаунт GitHub и склонировать ваш репозиторий на сервер Heroku.

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

Следуя простой инструкции, указанной в разделе «Deploy», можно загрузить свой проект на сервер Heroku.

  1. Скачайте Heroku CLI для работы с Herokue сервером.
  2. Войдите в аккаунт Heroku через CLI.

heroku login

  1. Зайдите в папку вашего проекта через консоль (терминал).

cd my-telegram-bot

  1. И выполните эти две команды по очереди. (Если вы уже инициализировали Git, то первую команду выполнять не надо).

heroku git:remote -a archakov-im-telegram-bot

Первая — инициализирует Git в вашей папке. Вторая — установит ссылку на репозиторий Heroku, для деплоя (размещения) вашего проекта на сервере.

Когда внесли все правки и убедились, что всё должно работать нормально, создайте в папке с вашим проектом — Procfile. Без расширения, просто — Procfile.

Внутри этого файла, вам нужно указать команду, которая будет выполняться при запуске вашего проекта на Heroku. То есть, Heroku должен знать, что ему нужно запускать. В файле Procfile указана соответствующая команда, которая запустит бота.

Еще по теме:  Почему Телеграмм блокирует каналы

web: node index.js

В моем случае, это npm start . Так как у меня код написан на ES6, мне нужно конвертировать ES6 в ES5 с помощью Babel. И только после этого, у меня запускается команда запуска бота, типа: node index.js .

Запуск бота на сервере Heroku

Почти готово. Вам осталось теперь просто запушить вашего бота на сервер Heroku и запустить бота.

git commit -m «init»
git push heroku master

Если вам лень каждый раз вбивать эти команды, пропишите в package.json в scripts, следующую команду:

«deploy»: «git add . git commit -m ‘fix’ git push heroku master»

Если же бот не запустился после пуша, выполните последнюю команду для запуска бота на Heroku и готово!

heroku ps:scale web=1

Размещение бота на своём сервере

Тут тоже достаточно всё просто. Если вы не хотите публиковать своего бота на GitHub’e, вы можете использовать BitBucket.

Регестрируемся. Создаем репозиторий, нажав на плюсик слева.

Называем репозиторий как хотим, тут всё так же, как и на GitHub.

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

cd my-telegram-bot

У вас должна быть другая ссылка на репозиторий. Кликните на «I have an existing project» и ниже указана команда с вашим репозиторием.

Пушим всё на BitBucket репозиторий. На своём сервере клонируем репозиторий с BitBucket и любые изменения просто скачиваем командой:

git pull origin master

Запуск бота на своём сервере

После того как вы склонировали репозиторий и установили все зависимости на вашем сервере, вам остается запустить бота в фоновом режиме — Запуск Node.js в фоновом режиме.

nohup nodejs index.js > /dev/null 2>
ps aux | grep node

Или же есть еще два варианта запуск бота:

  1. Nodemon — следит за любыми изменениями в файле и перезапускает бота (скрипт).
  2. Docker — более сложный, но грамотный вариант для запуска бота. При правильной настройке Docker-контейнера, можно поставить автоматически запуск при фейле бота.

Если у вас бот не запустился, проверьте логи, командой heroku logs .

Если вы рассчитываете на халяву от Heroku и ожидаете, что ваш бот будет хоститься на их сервере, то мне придётся вас огорчить. Ваш бот будет работать 30 секунд, после чего отключается. Переодично включается, когда как. В общем, Heroku подходит для теста бота в «боевом режиме».

Это уже 6 или 7 статья по разработке телеграм ботов. Думаю, мой блог скоро превратится в «блог о программировании телеграм ботов». Что самое странное, я написал больше 55 статей про разные темы, но 90% запросов из поисковых систем, связаны с телеграм ботами. Тем не менее приложу к этой статье несколько своих статей по Telegram.

  • NodeJS: Делаем кнопки в Telegram API (inline-keyboards)
  • Полезные чаты Telegram для веб-разработчиков
  • Node.JS: Делаем своего Telegram бота
Archakov Dennis

Fullstack Developer (ReactJS, NodeJS) / UI Designer.

Источник: archakov.im

Рейтинг
( Пока оценок нет )
Загрузка ...