Предположим Вы знаете как из sqlite полчать данные, обычно при fetchall() получаем список кортежей, например такой: some_data_from_sqlite = [('one',), ('two',), ('ten',)] .
а уж клавиатуру сделать проще простого:
import telebot
from telebot import types
API_TOKEN = ""
bot = telebot.TeleBot(API_TOKEN)
@bot.message_handler(commands=['start'])
def start(message):
some_data_from_sqlite = [('one',), ('two',), ('ten',)] # список кортежей из БД
buttons_dict = {i: x[0] for i, x in enumerate(some_data_from_sqlite)}
keyboard = types.InlineKeyboardMarkup()
back_button = types.InlineKeyboardButton(text="Back", callback_data="MainMenu")
button_list = [types.InlineKeyboardButton(text=x, callback_data=x) for x in buttons_dict.values()] # callback дата понадобится при обработке нажатий на кнопку, но это уже совсем другая история :)
keyboard.add(*button_list, back_button)
bot.send_message(chat_id=message.chat.id, text=message.text, reply_markup=keyboard)
if __name__ == "__main__":
try:
bot.polling(none_stop=True)
except Exception as e:
print(e)