Бот для краша сервера в Телеграмме

About — Что умеет этот бот? (выводится при открытии бота по середине экрана)
Description — Описание (доступно при просмотре профиля бота)
Botpic — Картинка — логотип бота
Commands — набор команд (доступно при вызове в диалоге с ботом командой / )

Методы взаимодействия с Bot API

Есть два взаимоисключающих способа получения обновлений для бота — getUpdates и webHook . Входящие обновления хранятся на сервере Telegram до тех пор, пока бот не получит их, но они не будут храниться дольше, чем 24 часа.

Независимо от того, какой вариант вы выбрали, вы получите в результате JSON-сериализованные объекты (WIKI).

В случае с getUpdates вам необходимо будет настроить периодическое снятие (например, 1 раз в секунду) с сервера Telegram обновлений (данных полученных от взаимодействия пользователя с ботом — сообщения, картинки . ).

В случае с webHook обновления вам будут доставляться Bot API по указанному адресу сразу же как только они появятся. Если в ответ API получит статус обработки его запроса не 200 OK, а другой, например, 500 (ошибка сервера) то обновления подвиснут и будут периодически к вам стучатся, и успокоятся только в случае получения в ответ статуса 200 ОК.

Лучший бот для заработка в телеграмме без вложений

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

Устанавливаем WebHook

Для установки WebHook есть специальный метод setWebHook . Нам просто необходимо в параметре url передать web-адрес где будут обрабатываться данные отправленные Telegram Bot API. Допустим, что у вас такой же хостинг как у меня, и за работу бота будет отвечать файл index.php , который лежит в директории bots в корне сайта.

public_html |__cgi-bin |__bots |__index.php

Если структура файлов у вас совпадает, и у вас есть доменное имя, а также установленный SSL сертификат, тогда назначаем webHook используя вот этот URL:

https://api.telegram.org/botВАШ_ТОКЕН/setwebhook?url=https://ВАШ_ДОМЕН/bots/index.php

Вставляем его в адресную строку браузера и переходим, в случае если все прошло без ошибок, на экране у вас выведется вот такая информация:

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

Дополнительные настройки WebHook

Также вместе с параметром url в методе setWebHook можно передать:

max_connections — максимальное разрешенное количество одновременных HTTPS-подключений к webhook для доставки обновления, 1-100. По умолчанию 40.

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

certificate — сертификат открытого ключа, чтобы проверить используемый корневой сертификат, если у вас например самописный сертификат.

В случае если будет необходимо переназначить webHook, то нужно вызвать метод setWebHook еще раз и указать в качестве значения параметра url новый адрес обработчика данных от Bot API.

Для удаления webHook и перехода к getUpdates используйте метод deleteWebhook , параметры передавать не требуется.

Для получения, текущего состояние webHook используйте метод getWebhookInfo , параметры передавать не требуется.

Методы вызываются при помощи:

https://api.telegram.org/botВАШ_ТОКЕН/METHOD_NAME

Источник: imakebots.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

TELEGRAM bot. ОБХОД БЛОКИРОВКИ API TELEGRAM

telegram bot

Всем привет, с вами Низамов Илья и сегодня мы будем обходить блокировку Telegram по IP адресу при работе через webhook. Если ваш провайдер применяет именно такую блокировку Telegram, то обойти ее поможет прокси сервер на nginx установленный на виртуальном сервере в другой стране.

Если вам нужно только отлаживать чат бот Telegram то советую не заморачиваться, а использовать сервис ngrok. Если же у вас рабочий бот и вы не можете получать входящие запросы от webhook Telegram, то посмотрев данное видео вы сможете обойти это ограничение. Главное условие, чтобы ваш http сервис 1С был опубликован на web сервере и имел белый статичный IP адрес.

Очень много информации я вынес из статьи пользователя PlugFox, советую пройти и почитать ее полностью.

Аренда VDS

Для начала я арендовал сервер VDS хостера. Сервер расположен в Цюрихе, Швейцария.

Доступ к нему мы получим по протоколу SSH с помощью утилиты Putty.

Настройка VDS

apt update apt upgrade

apt install ufw

Ставим web сервер nginx

apt install nginx

Проверяем по адресу http://91.245.225.114 что web сервер работает

Так как Telegram работает только по https, то для нашего сервера надо генерировать самоподписанный сертификат и настроить наш web сервер для работы с ним.

Генерация сертификата SSL для Telegram bot

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/nginx-selfsigned.key -out /etc/ssl/certs/nginx-selfsigned.crt

При использовании OpenSSL нужно также создать ключи Диффи-Хеллмана, которые нужны для поддержки PFS (совершенной прямой секретности). Подробнее читаем в википедии.

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

openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Настройка nginx

Продолжаем настраивать web сервер. Создадим сниппет, в котором укажем расположение SSL сертификата и ключа

С помощью текстового редактора nano создадим сниппет. Со временем вы можете забыть, что указано в сниппетах, по-этому советую называть их соответственно.

в конфиге укажем директивы

ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt;
ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key;

Выходим и сохраняем данные.

Теперь создадим отдельный сниппет с настройками SSL.

Все эти параметры влияют в основном на безопасность и выполняют оптимизацию HTTPS-сервера
Подробнее о каждом параметре вы можете почитать в русскоязычной документации по web серверу nginx в разделе Настройка HTTPS-серверов

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers «EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH»;
ssl_ecdh_curve secp384r1;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
add_header Strict-Transport-Security «max-age=63072000; includeSubdomains; preload»;
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
ssl_dhparam /etc/ssl/certs/dhparam.pem;

Выходим и сохраняем данные.

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

И прописываем конфиг нашего сервера

server listen 8443 ssl http2 default_server;
listen [::]:8443 ssl http2 default_server;
server_name 91.245.225.114;
include snippets/self-signed.conf;
include snippets/ssl-params.conf;
location / proxy_pass http://100.102.171.125/tl/hs/tg;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
client_max_body_size 100M;
>
>

Директива listen указывает на то какие порты мы будем прослушивать. На текущий момент отправка обновлений через вебхуки доступна только на порты: 443, 80, 88, 8443. По-этому я указываю порт 8443.

Параметр ssl указывает на то, что все соединения, принимаемые на данном порту, должны работать в режиме SSL.

Параметр http2 позволяет принимать на этом порту HTTP/2 соединения, подробнее вы можете почитать в wikipedia.

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

Вторая строка listen настраивает все тоже самое, только для протокола IPv6

Директива server_name – задаёт имя нашего виртуального сервера, так как мы не покупали хостинг, то здесь указываем IP адрес нашего сервера VDS.

Директива include – включает в конфигурацию другой файл с директивами. Ранее мы описали там подключение сертификатов и ключей SSL, а так же настройки протокола.

Директива location – устанавливает конфигурацию в зависимости от URI запроса. В нашем случае запросы к https://91.245.225.114:8443 будут обрабатываться по правилам в следующем блоке.

Следующий блок <> описывает перенаправление запросов на наш сервер.

Директива proxy_pass – задаёт протокол и адрес проксируемого сервера. В нашем случае это протокол http, далее IP адрес и потом адрес нашего http сервиса в 1С http://10.240.150.46/tl/hs/tg/

Директива proxy_set_header – позволяет переопределять или добавлять поля заголовка запроса, передаваемые нашему серверу.

proxy_set_header Host $http_host — передаем поле заголовка запроса

proxy_set_header X-Real-IP $remote_addr — передаем IP адрес запрашивающего в заголовке X-Real-IP (иначе в логах Apache будут адреса Nginx сервера, а не реальных клиентов)

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for — передаем IP клиента и список IP всех прокси-серверов, через которых прошёл запрос, разделённые запятыми. Подробнее читать тут.

proxy_set_header X-Forwarded-Proto $scheme – нужно для определения исходного протокола (например HTTPS или HTTP)

Директива client_max_body_size – задаёт максимально допустимый размер тела запроса клиента

Сохраняем конфиг и выходим.

Для активизации сайта надо создать символическую ссылку с помощью команды ниже.

ln -s /etc/nginx/sites-available/telegram.conf /etc/nginx/sites-enabled/telegram.conf

Проверяем настройки сервера командой.

Ругнется на настройки ssl, но это не страшно, а остальное должно быть ОК.

systemctl restart nginx

И настраиваем брандмауэр.

ufw allow 8443
ufw allow 1080
ufw allow 443

Источник: nizamov.school

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