Так получилось что каждый запрос пользователя = новый запуск скрипта.
Телеграм бот не хранит никакие данные.
Советую использовать sqlite, я в нее записываю даже название меню куда провалился пользователь.
import telebot
import sqlite3
import config
import os, sys
app_dir = sys.path[0] or os.path.dirname(os.path.realpath(sys.argv[0])) or os.getcwd() #Использую для поиска файла в родительском каталоге (помогает при запуске через службу)
conn = sqlite3.connect((os.path.join(app_dir, config.base)), check_same_thread=False)
cursor = conn.cursor()
#Записываем данные пользователя
us_id = message.from_user.id
us_name = message.from_user.first_name
us_sname = message.from_user.last_name
username = message.from_user.
cursor.execute('INSERT INTO users (user_id, user_name, user_surname, username) VALUES (?, ?, ?, ?)' (us_id, us_name, us_sname, username))
conn.commit()
user_id сделай уникальным в базу чтоб не было дублекатов.