Bot — помогите с heroku


Содержание

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

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

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

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

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

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

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

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

  1. Войдите в свой аккаунт и создайте первый проект, нажав на \»Create new app\».

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

  • После создания проекта, вам будет предложены варианты деплоя (размещения) вашего проекта на Heroku.
  • Тут есть несколько вариантов. Я опишу только первые два.

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

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

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

    1. Скачайте Heroku CLI для работы с Herokue сервером.
    2. Войдите в аккаунт Heroku через CLI.
    1. Зайдите в папку вашего проекта через консоль (терминал).
    1. И выполните эти две команды по очереди. (Если вы уже инициализировали Git, то первую команду выполнять не надо).

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Python-сообщество

    Уведомления

    #1 Апрель 8, 2020 22:06:15

    Как написать webhook к боту telegram и разместить его потом на heroku

    Не могу написать вебхук к боту телеграмм, помогите люди добрые
    Облазил интернет, вроде бы нашел подходящую тему, но все равно не получается
    Вот мой код бота V

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

    И потом стоит еще вопрос как его потом разместить на сервисе Heroku…
    Если поможите могу отблагодарить денюшкой на киви(куда перевсти, ответите в личку или в теме)

    Отредактировано leet896 (Апрель 8, 2020 22:12:40)

    #2 Апрель 9, 2020 09:54:24

    Как написать webhook к боту telegram и разместить его потом на heroku


    у меня кириллица вызывает исключения, так что убрал русские слова из сообщений
    возможно коде/декоде поможет

    А на Heroku даже видео есть как чего установить, flask для примера

    Думаю если на Heroku свои сертификаты стоят то просто установить там flask и юзать этот код из примера

    Отредактировано Kasta_neda (Апрель 9, 2020 13:17:22)

    #3 Апрель 10, 2020 15:46:48

    Как написать webhook к боту telegram и разместить его потом на heroku

    Kasta_neda
    у меня кириллица вызывает исключения, так что убрал русские слова из сообщенийвозможно коде/декоде поможетУрок 4. ВебхукиПримерздесь обсуждалиА на Heroku даже видео есть как чего установить, flask для примераДумаю если на Heroku свои сертификаты стоят то просто установить там flask и юзать этот код из примера

    Отредактировано leet896 (Апрель 10, 2020 15:48:42)

    #4 Апрель 10, 2020 20:42:13

    Как написать webhook к боту telegram и разместить его потом на heroku

    Kasta_neda
    у меня кириллица вызывает исключения, так что убрал русские слова из сообщенийвозможно коде/декоде поможетУрок 4. ВебхукиПримерздесь обсуждалиА на Heroku даже видео есть как чего установить, flask для примераДумаю если на Heroku свои сертификаты стоят то просто установить там flask и юзать этот код из примера

    2020-04-10T16:20:57.290131+00:00 heroku: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
    2020-04-10T16:20:57.290228+00:00 heroku: Stopping process with SIGKILL
    2020-04-10T16:20:57.428102+00:00 heroku: Process exited with status 137
    2020-04-10T16:20:57.439610+00:00 heroku: State changed from starting to crashed

    #5 Апрель 10, 2020 20:54:40

    Как написать webhook к боту telegram и разместить его потом на heroku

    Если вам нужен только бот, без вэбхука то этот код рабочий вариант

    Цукерберг рекомендует:  Книги - С каких книг лучше начать, какие языки лучше сочетать.

    Давайте для начала разберемся, как боты принимают сообщения. Первый и наиболее простой вариант заключается в периодическом опросе серверов Telegram на предмет наличия новой информации. Всё это осуществляется через т.н. Long Polling, т.е. открывается соединение на непродолжительное время и все обновления тут же прилетают боту. Просто, но не очень надежно. Во-первых, серверы Telegram периодически начинают возвращать ошибку 504 (Gateway Timeout), из-за чего некоторые боты впадают в ступор. Даже pyTelegramBotAPI, используемый мной, не всегда может пережить такое.
    Во-вторых, если одновременно запущено несколько ботов, вероятность столкнуться с ошибками возрастает. Это вдвойне обидно, если сами боты используются не очень часто.
    Вебхуки работают несколько иначе. Устанавливая вебхук, вы как бы говорите серверам Telegram: “Слышь, если кто мне напишет, стукни сюда — (ссылка)”. Отпадает необходимость периодически самому опрашивать серверы, тем самым, исчезает неприятная причина падений ботов. Однако за это приходится платить необходимостью установки полноценного веб-сервера на ту машину, на которой планируется запускать ботов. Что ещё неприятно, надо иметь собственный SSL-сертификат, т.к. вебхуки в телеграме работают только по HTTPS

    tgvkbot

    Общайтесь ВКонтакте с помощью Telegram бота

    Создание и развёртывание бота.

    В первую очередь, почему же нужно создавать именно своего бота?

    • Ограничения Telegram
    • Ограничения VK
    • Гарантия сохранности переписки и полного контроля над ботом

    Бот имеет полностью открытый исходный код, с которым можно ознакомиться перейдя по ссылке View on GitHub в верхнем углу станицы.

    Heroku

    Развёртывать бота мы будем на Heroku, поэтому там нужно завести аккаунт heroku.com

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

    Подробнее можно ознакомиться тут

    По ссылке нужно создать своё Standalone-приложение, затем во вкладке Настройки перевести Состояние в Приложение включено и видно всем, не забудьте сохранить изменения!

    На этом этапе мы сохраняем себе куда-нибудь ID приложения

    Telegram


    Создаём бота, в качестве имени удобно будет использовать VK, юзернейм роли не играет. Сохраняем токен бота, который мы получили от BotFather

    Настройка команд бота

    Логотип VK для аватарки бота.

    Heroku + VK + Telegram

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

    Нажав на кнопку ниже вы попадёте на страницу развёртывания, где будут поля:

    • Имя приложения — можно оставить пустым, Heroku выберет за вас.
    • Регион развёртывания — выбираем Европу, чтобы бот был пошустрее.
    • Telegram API Token — токен бота полученный ранее.
    • VK APP ID — ID приложения ВКонтакте полученный ранее.

    После успешного развёртывания можно смело пользоваться ботом.

    Если вы вдруг что-то напутали с токеном и/или ID, их всегда можно настроить перейдя в Settings->Config Vars соответствующего приложения в своей панели управления dashboard.heroku.com

    Если всё прошло гладко, то можно ознакомиться с Использованием

    Обновление

    Обо всех ВАЖНЫХ обновлениях можно будет узнать в Telegram канале

    К сожалению простого механизма обновления бота нет и не предусмотрено, поэтому единственный способ — повторное развёртывание бота на Heroku с уже имеющимися токеном бота и >/start

    How to Deploy Your Slack Bots to Heroku

    Listen to this article

    Whether they’re publishing notifications, responding to /slash commands or carrying a conversation, bots have become an integral part of the way we work with Slack. A bot can do any number of things for your team as part of your day-to-day work, you’re only limited by your imagination. For some first-hand experience, check out the Heroku Button Gallery, where users have created all types of bots: from fun bots like poker and Jeopardy!, to more practical ones like a bot that tracks the satisfaction of your team members or one that reminds your team to review existing pull requests.

    That said, the real power and fun of Slack bots comes once you know how to build your own. In this post, we’ll show you how to create and deploy a Slack bot that will respond to /slash commands in order to show the top trending repos in GitHub. While a Slack bot can be built in practically any language, today we’re going to build ours with Node, and not just because I �� Node. Anything beyond a simple notification bot depends on Slack’s WebSocket-based RTM (Real Time Messaging) API, and WebSockets and Node go together like ����.

    We’ve got a lot of ground to cover, here’s an outline of the journey we’re about to take:

    Getting Started

    Let me introduce you to �� Starbot, the example we’ll be working with today. It’s soon-to-be the easiest way to stay apprised of hip repos on GitHub, from the comfort of your favorite Slack channel.

    Before you begin

    Here’s what you’ll need:

    • A (free or better) Heroku account
    • The Heroku Toolbelt
    • A Slack team to abuse
    • Node (5.7.* preferably)
    • The burning desire to scream IT’S ALIVE.

    This guide bounces between Slack, Heroku and your local development machine — so I’ve prefixed the sub-titles with the applicable logo where appropriate.

    Create a custom Slack integration

    We’re going to make a custom integration bot designed explicitly for your team. As a bonus, I’ll show you how to easily distribute your bot using the Heroku Button, so that you can share your creation with everyone – even grandma.

    (Note that if you are building a serious bot, you will ultimately want to run it on Hobby rather than Free dynos to avoid any issues with dyno sleeping and idling. But Free dynos are great for building and testing.)

    First, visit slack.com/apps/build and select «Make a Custom Integration» as seen below.


    Run Starbot locally

    Starbot is essentially a bare-bones Express app, you can find detailed instructions on running it locally in the projects README.md .

    Clone the project

    Install dependencies

    Copy .env-example to .env

    Start Starbot

    That’s it! Visit localhost:3000 and make sure Starbot is running.

    Deploy Starbot to Heroku

    We could push our code to Heroku without ever visiting the command line, but what fun would that be?

    Create a Heroku app, with the Heroku Toolbelt

    Push our code

    Did we just deploy this application in two commands? Yes, yes we did! Heroku installed the dependencies in Starbot’s package.json file automatically, and gave us a URL so that we can visit our newly deployed app.

    Open the app in a browser

    Now Starbot is running on Heroku, but it doesn’t know anything about Slack, and Slack doesn’t know anything about it. I expect they’ll soon be fast friends, so let’s make introductions.

    Publish Notifications to Slack

    While publishing notifications to Slack is the simplest of custom integrations, it’s still pretty darn cool, especially with a sprinkling of Heroku Add-ons. Let’s show Starbot how to find trending GitHub projects and publish them to a Slack channel every morning. In this case, Starbot is using the BotKit framework from the folks at Howdy.ai.

    Set up an «Incoming WebHook» on Slack

    Slack will provide us with the API endpoint, or webhook; later, we’ll POST data to this endpoint. Select «Incoming WebHooks» and choose a channel.

    Again, the above selection can be found at .slack.com/apps/build/custom-intergration

    Now you’re the proud new owner of a Slack «Incoming WebHook»! The configuration page includes a lot of great information about formatting and delivering messages to your new webhook, but what we need first is the «Webhook URL». It should look something like this: https://hooks.slack.com/services/T0..LN/B0..VV1/br..dd

    Found it? �� Now let’s move right along.

    Publish a Notification to Slack from Heroku

    Now that we’ve deployed our Starbot to Heroku and added an incoming webhook on Slack, it’s time to connect the dots.

    First, remember the webhook URL I had you save? Let’s put it to work by setting a WEBHOOK_URL config var. This makes the value available to Starbot.

    Heroku Add-ons allow us to quickly extend the functionality of our application, in this case, we’re going to use the Scheduler add-on to deliver trending GitHub repos to Slack daily.

    We can provision the add-on from the dashboard, or from the CLI with the Heroku Toolbelt.

    Then add a scheduled task, and configure it to run daily.

    Our new scheduled task will create a one-off dyno and execute npm run notify , which is defined in this bit of our package.json .

    We could wait patiently for the task we scheduled to fire—or we could just run our own one-off dyno, and trigger the notification ourselves. Immediate gratification, FTW.

    Let the notifications commence.


    Receive and Respond to /slash Commands

    Slash commands are a personal favorite—enabling you to listen for a custom command, across channels, and triggering a POST or GET request to a configurable endpoint. In this case, that endpoint will be the Starbot application we deployed earlier, and responding to /slash commands will let our bot do a lot more than post once a day!

    Creating a /starbot slash command

    Return to the «Build a Custom Integration» page and select «Slash Commands».

    Next, pick a name, it must begin with / .

    Now that we’ve created the command, we need to configure it. Starbot is expecting a POST request to arrive at /commands/starbot .

    Slack has also provided us with a token specific to this command, something like: JzRR6hEuh3f749iXY3qEpVgN . We’re going to use this to verify the payload Starbot receives is coming from Slack.

    It wouldn’t hurt to choose an appropriate name, icon, descriptive label and some autocomplete text—you could make something up, or use the suggestions provided in Starbot’s readme.

    Configuring the /starbot command on Heroku

    We’ve already deployed Starbot to Heroku, so it’s waiting patiently for POST requests from Slack, but at the moment Slack’s requests are going to receive a 402 (Unauthorized) response. To fix that, we’ll need to authenticate the bot with Slack, which is easy. We’ll just use the Heroku Toolbelt to set a STARBOT_COMMAND_TOKEN config var.

    Your slash is my command

    Connecting a Bot to the Slack RTM API

    And finally the star of the show, a developer’s best friend, the real-time bot. Fortunately, no matter how tricky your bot is to build, configuring and deploying it to Heroku is simple.

    Connecting a bot to the Slack RTM API

    Ok, one last trip to the «Build a Custom Integration» page and this time we’re going to select «Bots».

    We get to give our bot a name!

    And again, we’re presented with the opportunity to customize the bot we’ve just created by giving it a name, description, icon, etc. You’ll notice that the bot isn’t currently following any channels. Bots are like vampires: they must be invited to a channel before they can follow it (any takers for BuffyBot?).

    Take note of the API token, which is going to look like this: xoxb-253973540645-lAJG4hL34343f3pk52BE6JO . Without it, we won’t be able to authenticate.

    Configuring the bot on Heroku

    The Starbot bot won’t attempt to connect to Slack’s RTM API without a token, so once more, let’s use the Heroku Toolbelt to set a SLACK_TOKEN config var.

    That’s it! Head over to your Slack channel and use the /invite command to invite our @starbot bot to the channel. Then say hello to him, or her!

    It’s alive, it’s alive, it’s ALIVE!

    Share Your Bot with the Heroku Button

    The Slack Button makes it easy for other Slack users to add your bot to their team, but the Heroku Button makes it just as easy for other developers to deploy and manage your bot themselves.

    Adding a button to your bot is as simple as creating an app.json file, and adding the button to our GitHub readme.

    Creating an app.json

    The app.json file is a manifest format for describing web apps. Here’s the interesting bits from Starbot’s app.json :

    As you can see above, we begin by specifying our apps name, description and repo. We then declare the environment variables Starbot requires to run. Learn more about the app.json schema on the Dev Center.

    Adding the Heroku Button to the repo

    The last thing we must do before people can begin deploying Starbot with the Heroku Button, is to add it to the project’s README.md :


    Heroku will automatically infer the repository URL from the referrer header when someone clicks on the button.

    Epilogue

    Now that you’ve got the basics down, a whole new world of functionality is at your team’s fingertips. Not just your team’s either–with a little more work you can offer your bot as a service for others on Slack through the App Directory. Peruse the directory to see the many ways teams are extending Slack, whether it’s with the outside world through Customer Support apps, or internally with HR or Office Management. To learn more about offering your app, check out their getting started guide.

    Как я Telegram бота на Go писал. Часть третья. Публикация.

    В предыдущих частях был разработан и улучшен бот, помогающий найти заклинания для Dungeon and Dragons.

    Теперь требуется разместить бота на какой-либо платформе. Рассмотрим два варианта: vscale.ru и heroku.

    vscale.ru

    Плюсы

    1. Простота развёртывания для новичка
    2. Отдельный VDS со всеми преимуществами (устанавливай всё, что требуется)
    3. Удобная панель для управления
    4. Минимальный сервер — 200 рублей в месяц
    5. Реферальная программа (при регистрации по реферальной ссылке вам на счёт упадёт 400 рублей)
    6. Документация на русском

    Минусы

    1. Платный (от 200 рублей в месяц (на текущий момент))
    2. Отдельный VDS со всеми недостатками (самостоятельное администрирование)
    3. На сегодняшний день сервера доступны только в Москве и Санкт-Петербурге

    Развёртывание

    Надеюсь, проблем с регистрацией на vscale не возникнет и сразу перейду к главному — к публикации бота.

    Во-первых, требуется создать сервер (на vscale так же их называют «скалет»). Для бота более чем достаточно самой дешёвой конфигурации за 200 рублей: 512 Mb RAM, 20 Gb диск, 1 ядро и 1 Tb трафика. ОС — Ubuntu 16.04.

    Во-вторых. Надеюсь, код бота, который будет работать на этом сервере уже на github или bitbucket?

    В-третьих, необходимо настроить доступ к серверу. Можно воспользоваться инструкцией разработчиков vscale на habrahabr (см. шаг 5 и 6).

    В-четвёртых, подключаемся к серверу и настраиваем окружение. Так как бот написан на Go, то требуется установить его компилятор командой sudo apt-get install golang-stable , задать переменные среды GOPATH, GOROOT и добавить GOROOT в PATH. На habrahabr есть статья, подробно объясняющая как это сделать.

    Далее, в-пятых, клонируем репозиторий на сервер и компилируем.

    В-шестых, наконец-то, запускаем нашего бота командой ./dndspellsbot (ну или как он называется?). Чтобы бот не умирал при отключении от сервера, можно воспользоваться стандартной UNIX утилитой nohup: nohup ./dndspellsbot . На этом всё — можете обращаться к своему новому боту.


    heroku

    Плюсы

    1. Бота можно хостить бесплатно
    2. Если наловчиться, то можно довольно просто публиковать приложения
    3. Широкий выбор дополнительных возможностей (за деньги)

    Минусы

    1. Для бесплатного размещения требуется доработка бота
    2. Практически за всё дополнительное требуют деньги (в USD)
    3. В первый раз довольно сложно разобраться что к чему
    4. Документация на английском

    Развёртывание

    С heroku всё несколько сложнее. В первую очередь, как мне показалось, сервис предназначен для веб-проектов (веб-сайты, веб-приложения и всё такое). Бот — немного (на самом деле ощутимо) отличается от этого и поэтому потребуется немного его доработать. Об этом ниже.

    Создание приложения

    Расскажу про то, как сам публиковал бота (в картинках!). Но для начала не забудьте установить на ваш ПК Heroku CLI — пригодится в дальнейшем.

    Заходим на https://dashboard.heroku.com/ и создаем новое приложение:

    Задаём ему имя (по этому имени в будущем можно будет обращаться к нашему приложению в браузере) и регион:

    Для простоты продублировал репозиторий с bitbucket на github (с ним heroku работает «из коробки»). Привязал аккаунт на github к heroku и из списка доступных репозиториев выбрал бота:

    Теперь доступна возможность заdeployить бота на сервер при помощи соответствующего раздела:

    Однако, ничего не выйдет, т.к. во-первых, необходимо указать buildset и, во-вторых, добавить Godep для того, чтобы heroku знал, как собирать проект.

    С buildset всё просто: идём в настройки приложения и выбираем там тот, который нам подходит (heroku/go, конечно):

    Окей, с buildset разобрались, теперь надо понять, что за зверь такой Godep.

    Всё, что было написано в этом разделе можно так же провернуть в Heroku CLI. Однако, не так просто. Для дальнейших манипуляций потребуется воспользоваться этой самой CLI и для этого необходимо залогиниться в heroku командой heroku login , которая запросит логин и пароль от вашего аккаунта.

    Особенность Heroku #1

    Если вкратце, что Godep — это утилита для управления зависимостями (что-то типа npm, nuget, pip и вот это всё). В использовании довольно проста, но иногда выдаёт странные финты.

    Устанавливается как обычный пакет Go командой

    Теперь в консоли должна появится команда godep , которая позволит создать всё требуемое для heroku (в частности Godep.json). Если команда godep не работает, то найти эту утилиту можно в папке bin с установленным Go.


    После выполнения команды godep save в папке проекта будет создана новая директория Godeps с нужными для heroku файлами. Далее добавляем новый remote, указывающий на heroku, для нашего репозитория:

    и pushим все изменения в него: git push heroku master . При этом heroku автоматически попытается собрать проект и запустить его. Если всё сделано правильно, то теперь наш бот будет работать недолго, но счастливо и умрёт через непродолжительное время. Почему? На это есть две причины, про которые ниже.

    Особенность Heroku #2

    Как я понимаю, heroku предполагает, что ваше приложение — веб-сайт (веб-приложение) и пробует к нему подключиться по некоторому порту (из переменной окружения). При неудачной попытке подключиться приложение падает и больше не поднимается. Если взглянете на логи приложения в heroku (командой heroku logs ), то увидите там сообщения приблизительного следующего содержания:

    Это значит, что ваше приложение завершилось по таймауту. Чтобы отложить столь скорую смерть бота на чуть более длительный период, необходимо добавить возможность нашему боту как-то реагировать, если к нему стучаться через HTTP(S).

    Для этого в Go есть решение «из коробки» в пакете «net/http» :

    Код выше необходимо добавить в код бота перед циклом получения обновлений. Не сложно догадаться, что в случае, если к серверу, где живёт бот, будут стучаться по порту означенной в переменной окружения PORT , то бот ответит ему сообщением «Hi there! I’m DndSpellsBot!» . Это можно легко проверить добавив переменную окружения PORT и запустив бота локально. Если открыть браузер по адресу http://localhost:PORT , то браузер должен показать этот ответ.

    Итого: после добавления обработки запросов на указанный порт можно смело заpushить изменения на heroku и посмотреть, что из этого выйдет. А выйдет то, что приложение не будет завершаться так быстро, как в прошлый раз, но, к сожалению, всё равно, будет умирать. Почему? Это еще одна особенность heroku.

    Особенность Heroku #3

    Проблемы с умиранием процесса не было бы, если бы наше приложение было веб-сайтом, если бы мы занесли денег в heroku либо наш бот был написан немного по-другому.

    Затык в том, что бесплатное приложение должно не менее 8 часов в сутки «спать» и платформа «оптимизирует» это убивая его, если к нему никто не обращается по адресу, которое оно (наше приложение) получило. Так как наше приложение — бот, то никто и не должен обращаться к нему через браузер или как-то еще, кроме как через мессенджер. И для решения этого потребуется еще раз доработать бота.

    Если вы читали документацию telegram, то знаете, что получать сообщения можно либо через long pooling (как было реализовано в нашем боте ранее), либо через webhook. Так вот боты, работающие на платформе heroku, будут себя чувствовать гораздо лучше, если будут получать обновления через webhook. Займёмся этим.

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

    Далее требуется объяснить telegramу, что теперь следует общаться с ботом через webhook на определённом адресе. Для этого достаточно перейти в браузере по следующему адресу:

    Таким образом мы говорим, что если боту пришло сообщение, то необходимо отправить запрос на адрес https://ИМЯHEROKUПРИЛОЖЕНИЯ.herokuapp.com/ТОКЕН_БОТА.

    В общем, это, кажется, всё, что было необходимо, чтобы поднять бота на heroku. Осталось только лишь заpushить изменения на сервер heroku и проверить как наш бот работает. Если всё сделано правильно, то бот будет отвечать нам как и прежде.

    Деплоймент бота на Heroku

    Dima Kit · Май 24, 2020 в 2:40 дп

    Предисловие

    Рано или поздно в разработке ботов вы столкнетесь с проблемой хостинга бота. Скорее всего, у вас нет своего собственного сервера, а платить за виртуальный не каждый хочет, да и настройка виртуального сервера может казаться чем-то непосильным для начинающих разработчиков. К счастью, есть много сервисов, предоставляющих хостинг приложений бесплатно. Одним из таких есть Heroku. Сегодня я расскажу, как легко и быстро развернуть простенького бота на данной платформе.

    Почему именно Heroku? Она была одной из первых платформ, предоставляющих услуги типа PaaS (Platform as a Service) и есть лидером в этой сфере. Используя такие облачные сервисы, разработчик должен предоставить только приложение. Обо всем остальном — серверное железо, операционная система, интерпретатор языка и база данных, позаботится сервис.

    По умолчанию, Heroku предлагает до 5 приложений на аккаунт и дает 550 бесплатных дино-часов в месяц. Если же подключить к аккаунту банковскую карту, их к-во расширится до 1000. Подробнее о фри дино-часах можно почитать здесь.

    Регистрация и установка клиента Heroku

    Прежде всего, для использования Heroku, нужно авторизироваться. Если у вас нет аккаунта, создайте его, перейдя по этой ссылке. Затем нужно установить Heroku Toolbelt. Эта утилита на данный момент поддерживает основные ОС: Windows, macOS и Linux.

    Скачать и установить Heroku CLI на Windows или macOS можно прямо отсюда. На Ubuntu/Debian платформах вам понадобится ввести данную комманду:

    После установки, чтобы убедиться, что все установилось, откройте консоль и введите heroku :

    Если все работает, логинимся, используя данные, введенные при регистрации:

    Развернуть Telegram Бота на Heroku

    Как развернуть Telegram бота написанного на Python на Heroku?

    Залил я бота. Но он не работает…


    Вот полный код бота:

    Ввожу heroku ps:scale web=1 , получаю:

    Как его туда установить?

    1 Ответы

    Привет! Тоже ботов пишу, ты на хероку requirements.txt заливал? У тебя проблема не в коде,а в подключаемых библиотеках

    Создание requirements.txt

    Создаешь в глав.директории своего бота пустой фай с именем requirements.txt, открываешь через любой редактор и кидаешь туда все либы, которые подключил, вот к примеру мой:

    Узнать название и версии либ можно консольной командой pip freeze ну или для удобства выгрузи куда-нибудь их pip freeze > C:\libs.txt

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

    tgvkbot

    Общайтесь ВКонтакте с помощью Telegram бота

    Создание и развёртывание бота.

    В первую очередь, почему же нужно создавать именно своего бота?

    • Ограничения Telegram
    • Ограничения VK
    • Гарантия сохранности переписки и полного контроля над ботом

    Бот имеет полностью открытый исходный код, с которым можно ознакомиться перейдя по ссылке View on GitHub в верхнем углу станицы.

    Heroku

    Развёртывать бота мы будем на Heroku, поэтому там нужно завести аккаунт heroku.com

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

    Подробнее можно ознакомиться тут

    По ссылке нужно создать своё Standalone-приложение, затем во вкладке Настройки перевести Состояние в Приложение включено и видно всем, не забудьте сохранить изменения!

    На этом этапе мы сохраняем себе куда-нибудь ID приложения

    Telegram

    Создаём бота, в качестве имени удобно будет использовать VK, юзернейм роли не играет. Сохраняем токен бота, который мы получили от BotFather

    Настройка команд бота

    Логотип VK для аватарки бота.

    Heroku + VK + Telegram

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

    Нажав на кнопку ниже вы попадёте на страницу развёртывания, где будут поля:

    • Имя приложения — можно оставить пустым, Heroku выберет за вас.
    • Регион развёртывания — выбираем Европу, чтобы бот был пошустрее.
    • Telegram API Token — токен бота полученный ранее.
    • VK APP ID — ID приложения ВКонтакте полученный ранее.

    После успешного развёртывания можно смело пользоваться ботом.

    Если вы вдруг что-то напутали с токеном и/или ID, их всегда можно настроить перейдя в Settings->Config Vars соответствующего приложения в своей панели управления dashboard.heroku.com

    Если всё прошло гладко, то можно ознакомиться с Использованием

    Обновление

    Обо всех ВАЖНЫХ обновлениях можно будет узнать в Telegram канале

    К сожалению простого механизма обновления бота нет и не предусмотрено, поэтому единственный способ — повторное развёртывание бота на Heroku с уже имеющимися токеном бота и >/start

    Почему бот на сервере Heroku не отвечает?

    Я запрограммировал простого бота, который подключен к API Google Sheets. Он задает пользователю несколько вопросов и сохраняет его на листе, который у меня есть. Когда я использую bot.polling, он работает нормально, но я пробовал веб-крючок, чтобы я мог использовать Heroku, чтобы мой бот работал 24/7.

    У меня есть файл requirements.txt и Procfile , который сейчас выглядит следующим образом:

    Я попробовал несколько вещей в Procfile , но это единственное, что не дало ошибки.

    Когда я увидел журнал, это то, что я получил:

    Может ли кто-нибудь помочь мне понять, почему бот не отвечает ни на какие команды?

    Загрузить telegram бота на heroku

    Смотрите также:

    Похожие задания

    Другие задания в категории «Web-разработка»

    Помочь с идеями по дизайну гостиной, только мебель

    Необходимо нарисовать девушку карандашом за пол часа. Оплата всем нарисовавшим . Работу отправлять в ватсапе Оплата гарантируется всем

    Нужно нарисовать ювелирное изделие от руки для клиента. Изделия из драгоценных металлов и драгоценных камней.

    Добрый день! Мы небольшая компания, которая ежегодно радует детишек Письмами от Деда Мороза. В этом году мы хотим создать уникальный красивый дизайн конвертов и макетов писем. Что нам нужно? 1) Разработать.

    Разработка листовки/флаера для однодневного семинара по Коучингу. Текст готов, нужно текст интегрировать в фото

    Понравилась статья? Поделиться с друзьями:
    Все языки программирования для начинающих