Мой бот, кажется, не стабилен во времениКак это исправить? - PullRequest
0 голосов
/ 17 апреля 2019

Хотя в первые минуты все работает гладко, как из консоли pythonanywhere, так и из моей локальной среды, через несколько часов некоторые команды больше не работают. В частности, команды, которые просто отправляют пользователю «send_message», работают, в то время как другие, с более сложными задачами, такими как сбор информации из электронных таблиц, больше не отвечают. Кажется, они идут в «спящий режим» или что-то в этом роде.

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

Я настроил бота с модулем python-telegram-bot, с разными обработчиками для разных команд. Некоторые функции обратного вызова вызывают другие функции, определенные в скрипте. Я использую модуль gspread для сбора некоторой даты из электронной таблицы онлайн и нескольких других небольших модулей. В конце концов я помещаю скрипт в pythonanywhere и запускаю его из консоли Bash.

Я не собираюсь предоставлять весь код, а только структуру бота. Надеюсь, этого достаточно, иначе я предоставлю больше.

import random
import gspread
from oauth2client.service_account import ServiceAccountCredentials
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters
import time as time2
from datetime import time

updater = Updater (token = 'TOKEN')
dispatcher = updater.dispatcher

scope, creds, client, worksheet

#definition of one class
#definition of different def and callbacks

# =============================================================================
# Handlers
start_command_handler = CommandHandler('start', start)
fight_command_handler = CommandHandler('fight', fightFor)
info_command_handler = CommandHandler('info', info)
inizzializza_command_handler = CommandHandler('inizializza', inizializza)

# Add handlers to dispatcher
dispatcher.add_handler(start_command_handler)
dispatcher.add_handler(fight_command_handler)
dispatcher.add_handler(info_command_handler)
dispatcher.add_handler(inizzializza_command_handler)
# Start searching for updates
updater.start_polling(clean=True)
# Stop bot, if clicked Ctrl + C
updater.idle()

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

...