Ломаются кнопки Телеграмм бота

Создала Телеграмм бота на день рождения подруге. Всего две функции - отправить рандомный праздник или фотку. Сам бот функции выполняет, но при запуске несколько раз бот ломается и кнопки отображаются некорректно, а именно добавляются новые (те же самые, просто их несколько одинаковых). Как пофиксить данное недоразумение?

import telebot
from telebot import types
import random
from glob import glob

bot = telebot.TeleBot("token")

menu = types.ReplyKeyboardMarkup(resize_keyboard=True, one_time_keyboard=True)
holidays = types.KeyboardButton("Какой сегодня праздник")
photo = types.KeyboardButton("Фоточка")

holiday_markup = types.InlineKeyboardMarkup()
gen_holiday = types.InlineKeyboardButton("Ну-ка посмотрим...", callback_data="generate")

#старт с кнопками под клавиатурой
@bot.message_handler(commands=["start"])
def start(message):
    menu.row(holidays, photo)
    file_menu = open("C:/Users/user/Documents/MyPythonProjects/birthday/menu.jpg", "rb")
    bot.send_photo(message.chat.id, file_menu, caption="? Дорогая Милашка! \nПоздравляю тебя с днём рождения! Вот тебе и наступило 18 годков мда ужжж\n\n?Этот мини ботик создан специально для тебя \n\nВыбери, что тебе хочется посмотреть: ", reply_markup=menu)
    bot.register_next_step_handler(message, on_click)

#обработка кнопок под клавиатурой
def on_click(message):
    if message.text == "Какой сегодня праздник":
        holiday_markup.add(gen_holiday)
        file_holidays = open("C:/Users/user/Documents/MyPythonProjects/birthday/holidays.jpg", "rb")
        bot.send_photo(
            message.chat.id,
            file_holidays,
            caption="Здесь я собрала все самые подходящие под тебя праздники ?",
            reply_markup=holiday_markup,
        )
    elif message.text == "Фоточка":
        pic_list = glob('C:/Users/user/Documents/MyPythonProjects/birthday/photos/*.jpg')
        get_random_pic = random.choice(pic_list)
        with open(get_random_pic, 'rb') as picture:
            bot.send_photo(message.chat.id, picture)

#вывод праздников
@bot.callback_query_handler(func=lambda callback: True)
def callback_generate(callback):
    if callback.data == "generate":
        holiday_list = [
            "☕️ Международный день кофе - однако ты заводишь лучше всякого кофеина)))",
            "? День денег - да чтоб ты в них купалась, поняла!?",
            "? День бла-бла-бла - мне не нужен особый день, чтобы слушать твоё бла-бла-бла часами, не уставая",
            "? День советской пожарной охраны, работников службы пожарной безопасности, противопожарной службы (в разных странах по-разному) - после тебя и правда нужно вызывать бригаду пожарных...",
            '?? День "Бесподобных дам" - всё про тебя!!!',
            "? Память мучениц Фервуфы девы, сестры и рабыни её - я как рабыня замучалась с тобой уже",
        ]
        bot.send_message(callback.message.chat.id, random.choice(holiday_list))


bot.infinity_polling()

Ответы (1 шт):

Автор решения: iivan ych

Нашел решение: добавляйте types.ReplyKeyboardMarkup внутри функции каждый раз, когда вы хотите создать меню.

→ Ссылка