Сломался бот в Телеграмме как починить

В Telegram с 24 июня 2015 появились боты, а точнее Telegram Bot API. То есть, теперь мою прошлую задачу получения статуса сервера можно решить гораздо удобнее.

Бот не является “пользовательским аккаунтом”, ему не нужен номер телефона, и самое главное — не нужно ставить клиентское приложение для Telegram на сервере или где вы хотите его использовать. Бот для Telegram — это ну как бы и есть API — веб-запросы к серверам Telegram. Механизм обработки запросов и отправки ответов лежит на вас, как на владельце бота.

Официальная документация по ботам здесь: https://core.telegram.org/bots

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

Нужно написать самому главному боту — BotFather:

BotFather help

…и уважительно попросить создать нового бота:

BotFather newbot

После этого бот будет создан. Обратите внимание на токен — по нему осуществляется доступ к боту, так что светить этот токен нельзя, иначе кто угодно сможет получить доступ к сообщениям бота (перехватывать запросы и отправлять свои ответы).

Не работает чат-бот в телеграм: что делать?

Сейчас, когда у вас уже создан бот и получен токен, я могу на примере продемонстрировать, что конкретно имел в виду под словами “это ну как бы и есть API”. Откройте браузер и перейдите по такому адресу:

В браузере отобразится примерно такое:

Для большей наглядности, вот скриншот браузера:

Telegram бот вызов из браузера

Вот что такое бот в Telegram. Вы отправляете веб-запрос и получаете на него JSON-ответ.

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

Реализация бота

Я выбрал язык Python. Выбор далеко не случаен. Дело в том, что для Python уже есть готовая библиотека, существенно облегчающая реализацию бота — это pyTelegramBotAPI. Собственно, в ней сделано уже всё, что требуется для отправки веб-запросов и получения ответов, вам остаётся только описать команды, которые ваш бот будет уметь выполнять. Однако, какое-то понимание всё же потребуется, потому настоятельно рекомендую изучить документацию по API: https://core.telegram.org/bots/api

Итак, вам нужно поставить Python и какую-нибудь IDE (хотя, конечно, можно и в Блокноте). Вот что у меня:

Итак, у вас установлен Python и pip, ставим pyTelegramBotAPI:

Не запускается бот, что делать?

Теперь создаём файл someTestBot.py , в котором и будет описан функционал бота. Я определил две обязательных команды /start и /help , а также команду отправки статуса сервера /server (забегая вперёд, она предназначена для запуска в Linux, так что при тестировании на Windows её вызов зафейлится):

Скрипт сбора информации о статусе сервера status.sh я взял из прошлой статьи и немного изменил:

Его надо поместить на сервере по пути /root/scrps/status.sh , либо каком другом, но тогда надо не забыть изменить его и в исходниках бота.

На этом реализация бота закончена.

Возвращаемся к BotFather, указываем ему команды, которые знает бот:

BotFather commands

Размещение и запуск бота на сервере

Telegram бот команды

Как я и говорил, команду /server в Windows он обработать не смог, и пойманное исключение записалось в журнал.

Еще по теме:  Если занести незнакомый номер в Телеграм

Кстати, обратите внимание — приложение показывает подсказки о всех командах бота, которые мы добавили через BotFather:

Telegram бот команды

Теперь задача, как сделать так, чтобы бот работал постоянно. Идём на сервер с Linux, создаём каталог /usr/local/bin/someTestBot/ , кладём в него наш someTestBot.py . Кстати, на сервере тоже должен быть установлен pyTelegramBotAPI (разумеется, Python и pip тоже).

Я расскажу о двух способах, как запустить скрипт в качестве сервиса: Supervisor и systemd .

Supervisor

Создаём конфиг для процесса ( /etc/supervisor/conf.d/someTestBot.conf ):

С таким конфигом, надо полагать, бот будет “выполняться” с root правами, что некруто. Скорее всего, можно задать, с какими правами это будет работать. Ну да ладно, нам же надо скорее в продакшн, так что запускаем:

systemd

А можно ничего и не устанавливать, если в системе используется systemd .

В User=someTestBot можно и root указать, но я рекомендовал бы создать под это отдельного юзера. Правда, тогда чтобы работали скрипты, надо будет дать этому пользователю доступ к mysqladmin .

Включаем нашу только что созданную службу:

Ну всё, бот работает, проверяем:

Telegram бот статус сервера

Что ещё можно сделать? Ну, вот эта строка — bot.polling() — в общем-то, означает бесконечно выполняющийся цикл запросов к серверам Telegram, что не очень правильно в плане потребления ресурсов на обеих сторонах. Лучше сделать так, чтобы приложение бота ожидало сообщения от Telegram. Это можно сделать, реализовав webhook. Когда доберусь до этого, дополню статью.

Наконец-то запилил инструкцию на webhook. Решил не добавлять здесь, а запостить новую статью.

Как сделать так, чтобы бот работал постоянно?

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

Для этого нужно использовать любой из существующих хостингов. Например google cloud, если ваш бот не большой. В противном случае придется пользоваться платными хостингами.

Я воспользовался сервисом https://www.pythonanywhere.com там все бесплатно и понятно. Регистрируешься, затем добавляешь файлы с ботом в раздел Files и после запускаешь.

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Как сделать, чтобы на VDS Телеграм бот работал постоянно?

Приветствую! Впервые заливаю бота на сервер, в связи с чем столкнулся с некоторыми проблемами. Для тех кто уже это делал вопросы могут показаться лёгкими, но для меня, увы, пока непонятно! Прошу помочь, а вопросы следующие:

1) Как сделать чтобы бот работал постоянно/круглосуточно + автоматически запускался после краша?
(Сейчас использую PuTTY, как я понял после запуска бота из консоли, в случае закрытия этой самой консоли бот тоже остановится?)

2)Как запускать одновременно на одном серваке несколько ботов, чтобы не было конфликтов между ними.
(Слышал про cmd-команду «screen» для создания виртуальной сессии, а также про systemd, это оно, копать в эту сторону?

3)Webhook предпочтительнее longpolling при одновременной работе нескольких ботов или не суть?

З.Ы. Хост — Fornex; Админка — Vesta; ОС — Debian 9; Терминал клиент — PuTTY; FTP клиент — WinSCP

Запускаем Python-скрипт на сервере, чтобы он работал всё время

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

Сейчас нам нужно такое решение, чтобы бот автоматически перезапускался при любых обстоятельствах. Этим и займёмся.

Коротко — суть

Чтобы было понятно, что тут происходит, вот короткая версия:

  1. Настраиваем удалённый доступ к серверу.
  2. Создаём папку и заливаем в неё скрипт, который в итоге должен будет работать всё время.
  3. Создаём у себя на компьютере файл службы — он управляет настройками автозапуска скрипта.
  4. Отправляем файл службы на сервер.
  5. Обновляем на сервере данные обо всех службах и запускаем нашу.
Еще по теме:  Как закинуть на сервер Телеграмм бота для чайников с нуля

Теперь подробно про каждый шаг.

Предварительная работа

Основное, что мы будем использовать, — это удалённый доступ к серверу по SSH. Для этого он должен быть включён на самом сервере, и там же можно сразу посмотреть параметры доступа. Например, для работы нашего учебного сервера мы пользуемся услугами SpaceWeb, где доступ по SSH включается из панели управления:

Запускаем Python-скрипт на сервере, чтобы он работал всё время

Запускаем Python-скрипт на сервере, чтобы он работал всё время

Ошибка 409 телеграм бот

Что делать, если не получается установить бота (возникает ошибка 409), использующего API Telegram. Исправление ошибок при загрузке чат-бота Телеграм на сервер.

Почему не получается установить бот Api telegram и что делать с ошибкой 409

В 2013-м году братья Дуровы создали инновационный мессенджер Telegram, который за девять лет был установлен на мобильные устройства свыше одного миллиарда раз (если верить статистике). Однако не только компании и обычные пользователи любят Телеграм. Платформу активно используют и разработчики для создания интерактивных чат-ботов. Однако иногда они сталкиваются с ошибкой 409, которая сопровождается сообщением «Не получается установить бот API Telegram».

Причины ошибки

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

Screenshot_4

  1. Пользователь или программа отправляет запрос на сервер в виде функции.
  2. Сервер обрабатывает введенные параметры и сам запрос, а после выдает ответ.
  3. Пользователь считывает полученный ответ и оперирует с ним.

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

  1. Переданы некорректные аргументы или значения. В особенности проверьте правильность указанного токена.
  2. Бот запущен на нескольких серверах сразу. Нельзя указать один и тот же токен на двух хостингах.
  3. Проблема на стороне сервера Telegram. Глобальные сбои бывают редко, но не будем исключать их вероятность.

Отталкиваясь от возможных причин, автор составил список возможных решений. Ознакомиться с ним можете в разделе ниже.

Способы исправления

Примечательно, что автор и сам однажды столкнулся с этой проблемой, когда случайно загружал заброшенного на старом сервере бота на новый хостинг. По правилам разработчик должен сначала остановить чат-бота на старом устройстве, а после только запустить его на новом. Чтобы проверить, запущен ли уже бот, просто отправьте ему сообщение с командой /start. Обычно большинство приложений запрограммировано реагировать на эту команду.

В зависимости от результата ввода команды будут меняться и дальнейшие действия:

  1. Приложение ответило. Значит, оно запущено на старом сервере. Откройте его интерфейс и завершите работу процесса.
  2. Ответ не пришел. В таком случае, скорее всего, проблема кроется в самом токене. Проверьте, указан ли в конфигурациях выданный BotFather токен и укажите корректный идентификатор.

Информационный портал IT Техник

Вам помогло? Поделитесь с друзьями — помогите и нам!

для начала удалите

if __name__ == ‘__main__’: bot.polling(none_stop=True)

а webhook, у меня работает так:

bot.remove_webhook() bot.set_webhook(url=WEBHOOK_URL_BASE + WEBHOOK_URL_PATH, certificate=open(WEBHOOK_SSL_CERT, ‘r’)) cherrypy.config.update(< ‘server.socket_host’: WEBHOOK_LISTEN, ‘server.socket_port’: WEBHOOK_PORT, ‘server.ssl_module’: ‘builtin’, ‘server.ssl_certificate’: WEBHOOK_SSL_CERT, ‘server.ssl_private_key’: WEBHOOK_SSL_PRIV >) cherrypy.quickstart(WebhookServer(), WEBHOOK_URL_PATH, >)

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

Основные причины возникновения ошибки 409:

  • Пользователь обращается к данным, имеющим отличное значение или более новую версию. В итоге, сервер выдает ошибку 409, т.к. существует обновленная версия файла, страницы или скрипта.
  • Ошибка 409 появилась в результате конфликтующих запросов внутри файлов на сервере. Решить проблему может программист.
  • Использование прокси, которое конфликтует с определенными адресами или форматами запрашиваемых данных. Не путайте эту ошибку с ошибкой 407.
  • Более распространенная причина – троян или вирус, который блокирует запросы к определенным сайтам или подгружает файл, который имеет конфликт с конфигурацией браузера.
  • Ошибка 409 Conflicting Request в большинстве случае решается системным администратором или программистом, если это не касается заражения компьютера вирусом или трояном. Как проверить и какой программой расскажем ниже.
Еще по теме:  Автопостинг из одного Телеграм канала в другой

Чистим от вируса или трояна, чтобы убрать ошибку 409

Определить вирус/троян у вас или нет просто – установите программу Cureit от Dr.Web и просканируйте систему этой программой. Она бесплатная и не требует установки. Скачиваем только с официального сайта. В программе отмечаем все пункты для проверки и шагаем спать/на работу, т.к. сама проверка займет длительное время.

На скриншоте ниже вы можете рассмотреть, как и что отмечать в программе. Свой антивирус лучше отключить перед проверкой.

Можно также использовать бесплатную утилиту от Касперского, но она довольно сложная и нужно понимать, какие скрипты вводить в консоль. Остальные программы – платные, поэтому не пишу о них. Кстати, не рекомендую скачивать бесплатные ключи, т.к. такие генераторы могут с собой принести тот самый вирус или троян. Не пожалейте 30$ в год за нормальную защиту.

Исправляем ошибку 409 в конкретном браузере

В случае, если ошибка 409 Conflicting Request появляется буквально на каждом сайте, чтобы вы ни нажимали – это точно троян или вирус. Причем это должно происходить в любом браузере. Если нет – можете сразу удалить и заново установить браузер. Возможно произошел сбой конфигурации браузера. Заранее нужно сохранить закладки, т.к. можно потерять все нажитое непосильным трудом.

Делается это просто. На скриншоте выше вы видите пример сохранения настроек в браузере Mozilla. Аналогично делается и в остальных браузерах.

Последнее слово про ошибку

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

A request to the Telegram API was unsuccessful and produced the following error.

telebot.apihelper.ApiException A request to the Telegram API was unsuccessful. The Server returned HTTP 409 conflict Telegram API was unsuccessful. The server returned HTTP 409 Conflict. Response body: [b»] ERROR — TeleBot: «A request to the Telegram API was unsuccessful. The server returned HTTP 409 Conflict. Response body: [b»]» (util.py:65 Polling Thread) ERROR — TeleBot: «ApiException occurred, args=(‘A request to the Telegram API was unsuccessful.

The server returned HTTP 409 Conflict. Response body: n[b»]’,)

What does this error mean?

28.02.2021, 13:50. Показов 26624. Ответов 2

Метки нет (Все метки)

При написании простого бота

1 2 3 4 5 6 7 8 9 10 11 12 13 14

ERROR — TeleBot: «A request to the Telegram API was unsuccessful. Error code: 409. Description: Conflict: can’t use getUpdates method while webhook is active; use deleteWebhook to delete the webhook first»

что не так я делаю?

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь

Видимо до этого пытались запустить бота не через polling, а webhook методом.

Перед первом запуском кода вставьте строчку.

bot.remove_webhook()

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

Попробуйте в самый конец файла добавить:

if __name__ == ‘__main__’: bot.polling(none_stop=True)

After deploy i have error on server

Enter fullscreen mode

Exit fullscreen mode

dokku logs kaufman-bot

For solve this error change libs/plugins/server/src/lib/scraper/scraper-services/scraper.service.ts

Enter fullscreen mode

Exit fullscreen mode

Enter fullscreen mode

Exit fullscreen mode

And change apps/server/src/app/app.service.ts

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

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