Всем привет. Написал скрипт который парсит нужные мне новости с сайта каждые N минут и записывает списком в файл "politics.txt". (для того, чтобы не нагружать сайт частыми запросами из самого бота).
Ниже разместил код, который считывает регуляркой "politics.txt" и часть кода бота.
Замысел такой, что пользователь будет выбирать рубрику ("Политика"), ему выдаваться из resault_func[0] ссылка на новость и удаляться del resault_func[0], чтобы избежать повтора.
После нажатия кнопки "Еще политика" уже выдается следующая ссылка из списка resault_func. Но когда все ссылки из списка перебираются - выдает ошибку - это понятно.
Не могу понять как можно обратиться к функции fi(fil_1) когда закончится список, чтобы заново забрать список из "politics.txt" и записать их в resault_func. Я даже не могу понять как хотя бы просто обратиться к функции fi(fil_1) для обновления списка. Хотел сам разобраться, но 3-й день пошел ((. Прошу помочь.
fil = "politics.txt"
def fi(fil_1):
file = open(fil_1, "r")
polit = file.read()
polit_p = re.findall("'(.+?)'", polit)
return polit_p
resault_func = fi(fil)
@bot.message_handler(commands=["start"])
def func(message):
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
btn1 = types.KeyboardButton("Новости")
markup.add(btn1)
bot.send_message(message.chat.id, text="<b>Привет, {0.first_name}!</b>".format(message.from_user),
parse_mode="html", reply_markup=markup)
@bot.message_handler(content_types=["text"])
def func1(message):
if (message.text == "Новости"):
markup = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=2)
btn1 = types.KeyboardButton("Политика")
markup.add(btn1)
bot.send_message(message.chat.id, "Выберите рубрику", reply_markup=markup)
elif (message.text == "Политика" or message.text == "Еще политика"):
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
btn1 = types.KeyboardButton("Еще политика")
btn2 = types.KeyboardButton("Назад в новости")
markup.add(btn1, btn2)
bot.send_message(message.chat.id, str(resault_func[0]), reply_markup=markup)
del resault_func[0]
bot.polling(none_stop=True)