Получаем из бд кнопки в виде массива или многомерного массива, если с callback data:
buttons = db.get_main_buttons()
Далее мы добавляем кнопки (Пример без calldata):
k = types.ReplyKeyboardMarkup()
for b in buttons:
k.add(types.KeyboardButton(b))
bot.send_message(message.chat.id, "TEXT", reply_markup=k)
С датой похожая схема, только из бд можно собирать в многомерный массив:
[['MENU', 'go_to_menu'], ['Settings', 'go_to_settings']]
Далее просто повторить действия выше, но изменяя тип кнопки и добавляя дату