1. Бот не может первым написать пользователю, для начала пользователю нужно самому начать диалог с ботом. Это на будущее
2. Вы привязываете следующий шаг пользователя в том же чате, где и ведется переписка, т.е. в беседе. Бот ждет сообщение там, а пользователь пишет в ЛС. Используйте
bot.register_next_step_handler_by_chat_id()
. Первым аргументом он принимает ID чата, в котором будет бот ждать сообщение. Соответственно, туда нужно засунуть ID пользователя. Итог:
Заменяем
bot.register_next_step_handler(message, dogovor, userID)
на
bot.register_next_step_handler_by_chat_id(userID, dogovor)
И не нужно делать глобальных переменных. Если хотите передать информацию о пользователе дальше, так же передавайте ее через аргументы в
register_next_step_handler
. Рекомендую создать хотя бы словарь вида
{'number': 123, 'surname': 'surname'}
.
В итоге будет нечто такое:
def dogovor(message): # получаем фамилию
num_dog = message.text
user_info = {'num_dog': num_dog}
bot.send_message(message.chat.id, 'Какая у тебя фамилия?')
bot.register_next_step_handler(message, get_surname, user_info)
def get_surname(message, user_info): # получаем фамилию
user_info['surname'] = message.text
print('Фамилия:', user_info['surname'], '. Номер договора:', user_info['dog_num'])
ps: на будущее - оборачивайте свой код с помощью соотствующей кнопки < / >