Задать вопрос
@jisox

Как заставить код перезапускаться после получения ошибки?

Такое дело, есть у меня телеграмм бот, и проблема в том, что если пользователь пишет что либо кроме "Фильм, Поговорка, Анекдот, Факт" код выдаёт ошибку и останавливается.
Например, пользователь пишет "привет" и код останавливается.
Нужно чтобы код перезапускался с момента выбора кнопок
Вот код:
import telebot
import random
from telebot import types
# Загружаем список интересных фактов
f = open('/content/facts.txt', 'r', encoding='UTF-8')
facts = f.read().split('\n')
f.close()
# Загружаем список поговорок
f = open('/content/thinks.txt', 'r', encoding='UTF-8')
thinks = f.read().split('\n')
f.close()
# Загружаем список анекдотов
f = open('/content/anecdots.txt', 'r', encoding='UTF-8')
anecdots = f.read().split('\n')
f.close()
# Загружаем список фильмов
f = open('/content/films.txt', 'r', encoding='UTF-8')
films = f.read().split('\n')
f.close()
# Создаем бота
bot = telebot.TeleBot('')
# Команда start
@bot.message_handler(commands=["start"])
def start(m, res=False):
# Добавляем четыре кнопки
markup=types.ReplyKeyboardMarkup(resize_keyboard=True)
btn1=types.KeyboardButton("Факт")
btn2=types.KeyboardButton("Поговорка")
btn3=types.KeyboardButton("Анекдот")
btn4=types.KeyboardButton("Фильм")
markup.add(btn1)
markup.add(btn2)
markup.add(btn3)
markup.add(btn4)
bot.send_message(m.chat.id, 'Приветствую вас, дорогой пользователь \nНажмите: \nФакт - для получения интересного факта \nПоговорка - для получения мудрой цитаты\nАнекдот - для получения смешного анекдота\nФильм - для получения названия интересного фильма и ссылки для его просмотра ', reply_markup=markup)
# Получение сообщений от пользователя
@bot.message_handler(content_types=["text"])
def handle_text(message):
# Если пользователь нажал первую кнопку, выдаем ему случайный факт
if message.text.strip() == 'Факт' :
answer = random.choice(facts)
# Если пользователь нажал вторую кнопку, выдаем умную мысль
elif message.text.strip() == 'Поговорка':
answer = random.choice(thinks)
# Если пользователь нажал третью кнопку, выдаем анекдот
elif message.text.strip() == 'Анекдот':
answer = random.choice(anecdots)
# Если пользователь нажал четвёртую кнопку, выдаем фильм
elif message.text.strip() == 'Фильм':
answer = random.choice(films)
else:
bot.send_message(message.chat.id, 'Простите, такой команды не существует, нажмите или напишите "Факт, Поговорка,Анекдот,Фильм"')
# Отсылаем пользователю сообщение в его чат
bot.send_message(message.chat.id, answer)

# Запускаем бота
bot.polling(none_stop=True, interval=0)
  • Вопрос задан
  • 166 просмотров
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 2
SoreMix
@SoreMix Куратор тега Python
yellow
Может не перезапускать код, а исправить ошибки, приводящие к падению? А именно, переменная answer не определена, если пользователь написал "неправильный" текст
Ответ написан
Комментировать
@kaktak255
import os
os.execl(sys.executable, 'file.py' ,__file__)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы