import telebot
from telebot import types
import threading
import time
bot = telebot.TeleBot("token")
clicked = False
timeout = 10  # Секунд
def run_in_thread(func):
    def wrapper(*args, **kwargs):
        thread = threading.Thread(target=func, args=args, kwargs=kwargs)
        thread.start()
    return wrapper
@run_in_thread
def asynchronous():
    global clicked
    while True:
        if clicked:
            time.sleep(timeout)
            clicked = False
@bot.message_handler(commands=["start"])
def start(message):
    markup = types.InlineKeyboardMarkup()
    hello_button = types.InlineKeyboardButton(text="Показать процессоры", callback_data="cpu")
    markup.add(hello_button)
    bot.send_message(message.chat.id, "Здравствуйте, %s!" % (f"[{message.from_user.first_name}](tg://user?id={message.from_user.id})"), parse_mode="markdown", reply_markup=markup)
@bot.callback_query_handler(func=lambda call: True)
def callback_worker(call):
    global clicked
    if clicked:
        bot.answer_callback_query(call.id, "Попробуйте снова через 10 секунд!", show_alert=True)
        return
    
    if call.data == "cpu":
        clicked = True
        bot.send_message(call.from_user.id, "Процессоры..")
if __name__ == "__main__":
    asynchronous()
    bot.polling(none_stop=True, interval=0)
в идеале конечно завести словарь формата ID: [True/False] и не использовать global