Ну, вообщем, есть очень много вариантов как это провернуть.
Для начала теория: если переменную в функции не помечаете как глобальную (global user), (но не стоит так делать), то она существует только в функции.
и в этом случае можно пойти многими путями:
Например: пусть функция "name" возвращает "user" т.е. (return user), и вызвать ее в функции phone_number (естественно до вызова user.number), либо вызвать ее до вызова phone_number и передать функции указатель в качестве аргумента:
user = User(name)
phone_number(message, user)