Как перезапустить бота в телеграмме
Перейти к содержимому

Как перезапустить бота в телеграмме

  • автор:

Как перезапустить бота?

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

Есть у кого-нибудь идеи как это можно осуществить?

  • Вопрос задан более года назад
  • 1937 просмотров

Комментировать
Решения вопроса 0
Ответы на вопрос 1

У меня бот запускается сервисом supervisored, он умеет перезапускать скрипт при полном падении, но завершить бота из функции у меня не вышло, процесс не завершается.

Пока использую для telegram (python-telegram-bot)*:

def cmd_restart_service(update, context): if update.message.from_user.id == 777777777: # id пользователя import subprocess update.message.reply_text("будет исполнено. ") subprocess.run("sudo supervisorctl restart mybotname".split())

И нет мне за это чести 🙂
* Внешние команды перезапуска и сама такая возможность зависит от операцинной системы/сервиса/служб/настроек, где запущен бот.

Перезапуск телеграмм-бота в случае ошибки

При использовании телеграмм-бота на сервере, работающим под linux перезапустить упавший скрипт Python, в случае использования bot.polling , можно при помощи systemd или supervisor .

Разберем случай с менеджером системных и служб systemd .

Systemd представляет собой программный комплекс, который содержит набор системных компонентов для операционных систем Linux. Его основная цель — унифицировать конфигурацию и поведение служб в дистрибутивах Linux. Основным компонентом systemd является «менеджер систем и служб» — система инициализации, используемая для загрузки пользовательского пространства и управления пользовательскими процессами.

Проще говоря, системный менеджер systemd запустит любой скрипт (в том числе и скрипт Python телеграмм-бота) при старте системы, и будет перезапускать его в случае падения.

Установим системный менеджер systemd , если отсутствует:

$ apt-get install systemd

Создадим файл bot.service в директории /etc/systemd/system с таким содержанием:

$ sudo touch /etc/systemd/system/bot.service

Теперь откроем его

$ sudo nano /etc/systemd/system/bot.service

и вставим следующее содержимое:

[Unit] Description=Telegram bot %name% After=syslog.target After=network.target [Service] Type=simple User=root # замените на свой путь к каталогу, где находится `bot.py` WorkingDirectory=/usr/local/bin/bot # или другой путь # замените на свой путь к телеграмм-боту `bot.py` ExecStart=/usr/bin/python3 /usr/local/bin/bot/bot.py RestartSec=10 Restart=always [Install] WantedBy=multi-user.target 

в консоли выполним:

# перечитываем конфигурацию # (обнаружит файл `bot.service`) $ sudo systemctl daemon-reload # подключаем демон `bot.service` $ sudo systemctl enable bot # запускаем демон `bot.service` $ sudo systemctl start bot # смотрим статус демона `bot.service` $ sudo systemctl status bot

Теперь перезапустить/остановить телеграмм-бота можно системными командами Linux:

# перезапуск $ sudo systemctl restart bot # остановка $ sudo systemctl stop bot # запуск после остановки $ sudo systemctl start bot
  • КРАТКИЙ ОБЗОР МАТЕРИАЛА.
  • Переход на асинхронный python-telegram-bot версии 20.x
  • Чистый интерфейс Python для Telegram Bot API
  • Команды и оповещения @BotFather в Telegram
  • Обработка сообщений модулем python-telegram-bot
  • Фильтры сообщений модуля python-telegram-bot
  • Хранение временных данных модулем python-telegram-bot
  • Настройки по умолчанию модуля python-telegram-bot
  • Планировщик сообщений модуля python-telegram-bot
  • Форматирование и отправка сообщений в python-telegram-bot
  • Работа с файлами/media, модуль python-telegram-bot
  • Меню из кнопок, модуль python-telegram-bot
  • Объект CallbackContext модуля python-telegram-bot
  • Подключения Telegram-бота через webhook
  • Обработка исключений модуля python-telegram-bot
  • Создание Inline-бота, модуль python-telegram-bot
  • Работа с опросами в модуле python-telegram-bot
  • Создание разговоров ConversationHandler в python-telegram-bot
  • Перезапуск телеграмм-бота в случае ошибки
  • Декоратор-обработчик сообщений в python-telegram-bot
  • Авторизация на сайте через Telegram Passport
  • Ведение публикаций в Telegram-канале с python-telegram-bot
  • UTF коды emoji/эмодзи для отправки в Telegram из Python

Как перезапустить бота в телеграмме

Боты на тестовом тарифе ограничены числом пользователей. Тестовый тариф работает только у пяти тестировщиков.

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

Узнать подробнее о тарифах и сравнить их вы можете на странице Тарифные планы.

В логике бота есть ошибки

В Telegram

  1. Попробуйте перезапустить бота через команду /start и повторить исполнение ошибки.
  2. Внимательно проверьте причину ошибки: возможно, вы зашли в тупик (пустой экран, нет перехода на другой экран) или не исполнился компонент экрана из-за некорректного исполнения (некорректные данные, незаполненные данные).

Если бот не перезапускается через /start:

  1. Проверьте настройки токена.
  2. Нажмите «Сохранить» в конструкторе. Если бот не «отвис», попробуйте ещё раз отправить команду /start.
  3. Если бот всё ещё не «отвис», дайте боту @Botfather команду /revoke, получите новый токен и измените токен в Настройках.

В Viber, ВКонтакте и Одноклассниках

  1. Добавьте событие Шаблон, исполняющее Стартовый экран. Отправьте боту команду.
  2. Если бот перезапустился, проверьте причину ошибки: возможно, вы зашли в тупик (пустой экран, нет перехода на другой экран) или не исполнился компонент экрана из-за некорректного исполнения (некорректные данные).

Если бот не перезапускается:

  1. Проверьте настройки подключения платформы.
  2. Нажмите «Сохранить» в конструкторе. Если бот не «отвис», попробуйте ещё раз отправить команду из события Шаблон.

Во всех платформах сразу

Если бот перестал работать во всех платформах, но при этом не отправлял никаких ошибок, попробуйте нажать на кнопку «Сохранить» в конструкторе.

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

Проверьте, чтобы бот был открыт только в одной вкладке браузера.

Если бот не начал работать после вышеупомянутых действий, напишите в чат поддержки или на sup@botmother.com. Обязательно в письме укажите почту, на которую зарегистрирован бот, и прикрепите скриншоты диалога в Telegram.

Перезапуск telegram bot’a, как сделать?

Здравствуйте, вообщем есть 1.py файл, в котором находится бот.
Также есть другой(start.py), в котором находится запуск этого файла(1.py). Мне нужно сделать так, чтобы он перезапускался через некоторое время, так как выдает ошибку:

ОШИБКА

5e8f2f5d1cc81830634046.png

Как я понимаю ошибка связана с подключение, как её решить?
Также добавлю, что бот находится на дедике!

  • Вопрос задан более трёх лет назад
  • 7015 просмотров

2 комментария

Простой 2 комментария

edward_freedom

edward_freedom @edward_freedom

как вариант, можно еще проверить на ошибку и не чтобы скрипт завершался после первой ошибки, попробуй try catch

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *