Список заполняется, просто в текущем коде возвращается он только один раз (в самом начале, когда он еще пустой), т.к. main() запускается только один раз.
Можно увидеть, добавив например команду /info
@bot.message_handler(commands = ['info'])
def send_info(message):
bot.send_message(message.chat.id, f'data={data}')
Так что не нужно все эти функции оборачивать в main, они просто должны идти на глобальном уровне.