@Herr_Konrad

Почему выключается бот на AWS?

Имеется телеграмм бот, который работает непрерывно. Расположил на Amazon Web Service(EC2 Instance), запускаю с терминала скрипт, затем при помощи screen создаю сессию и выхожу. Бот стабильно работает, однако через несколько часов(обычно на следующий день) прекращает свою работу. В чем может быть проблема?
Код бота:
def films_button(set_of_films, keyboard_markup):          # КЛАВИША ДЛЯ КЛАВИАТУРЫ

    for film in set_of_films:
        keyboard_markup.add(types.KeyboardButton(str(film).strip("()'',")))

    return keyboard_markup


def get_timetable(message):
    a = []
    with sqlite3.connect("movies.db") as con:
        cur = con.cursor()
        for row in cur.execute("SELECT time, cinema FROM movies WHERE movie=(?)", (message, )):
            a.append(row)

    b = re.sub(",", "\n", str(a))
    c = re.sub("[()''[\]]", " ", b)
    return c


conn = sqlite3.connect("movies.db", check_same_thread=False)      # ПОЛУЧЕНИЕ ИНФОРМАЦИИ С БАЗЫ ДАННЫХ
cursor = conn.cursor()
sql = "SELECT movie FROM movies"
cursor.execute(sql)
films_set = set(cursor.fetchall())

bot = telebot.TeleBot('код бота')

markup = types.ReplyKeyboardMarkup(row_width=2, one_time_keyboard=True, resize_keyboard=True)

@bot.message_handler(commands=['start', 'help'])
def get_text_messages(message):
    bot.send_message(message.from_user.id,
                     "Перед вами список фильмов на сегодня. Выберите фильм, "
                     "расписание которого вы хотели бы увидеть: ",
                     reply_markup=films_button(films_set, markup))


@bot.message_handler(func=lambda message: True)
def send_timetable(message):
    markup = types.ReplyKeyboardMarkup(row_width=2, one_time_keyboard=True, resize_keyboard=True)
    except_markup = types.ReplyKeyboardMarkup(row_width=2, one_time_keyboard=True, resize_keyboard=True)
    if len(get_timetable(message.text)) > 4096:
        for x in range(0, len(get_timetable(message.text)), 4096):
            bot.send_message(message.from_user.id, get_timetable(message.text)[x:x + 4096],
                             reply_markup=films_button(films_set, markup))
    else:

        try:
            bot.send_message(message.from_user.id, get_timetable(message.text),
                             reply_markup=films_button(films_set, markup))

        except ApiException:
            bot.send_message(message.from_user.id, "Вы выбрали фильм на который нет сеансов,"
                                                   " попробуйте другой!", reply_markup=films_button(films_set, except_markup))


bot.polling(none_stop=True, interval=0)
  • Вопрос задан
  • 88 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы