Форум сайта python.su
Здравствуйте! Помогите мне пожалуйста, я не могу понять, почему у меня вылезает ошибка при написании своего ФИО в боте (Вот кусок кода)
def process_fullname_step(message): try: chat_id = message.chat.id user.fullname = message.text user_dict[chat_id] = user msg = bot.send_message(chat.id, 'Введите ваш номер телефона и способ связи с вами (Telegram,' 'Viber, WhatsApp, VK или звонок по номеру', reply_markup=markup) bot.register_next_step_handler(msg, number) except Exception as e: bot.reply_to(message, 'Упс!')
Офлайн
Если кому нужно, то вот весь код:
import config import telebot from telebot import types from string import Template bot = telebot.TeleBot(config.token) user_dict = {} class User: def __init__(self, city): self.city = city keys = ['fullname', 'number', 'сatgor', 'product'] for key in keys: self.key = None @bot.message_handler(commands=['start']) def start(message): markup = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=2) btn_2 = types.InlineKeyboardButton('Наш магазин 🏬') btn_3 = types.KeyboardButton('Группа с отзывами 📈') btn_5 = types.KeyboardButton('Что ты умеешь 👀') btn_6 = types.KeyboardButton('Подать заявку 👩💻') markup.add(btn_2, btn_3, btn_5, btn_6) bot.send_message(message.chat.id, 'Здравствуй! Меня зовут Гоша! Внизу ты увидишь' ' кнопки для моего управления!', reply_markup=markup) @bot.message_handler(commands=['reg']) def reg(message): msg = bot.reply_to(message, """\ Введите название вашего города: """) bot.register_next_step_handler(msg, process_city_step) def process_city_step(message): try: chat_id = message.chat.id user_dict[chat_id] = User(message.text) msg = bot.reply_to(message, 'Введите ваше полное ФИО:') bot.register_next_step_handler(msg, process_fullname_step) except Exception as e: bot.reply_to(message, 'Упс!') def process_fullname_step(message): try: chat_id = message.chat.id user.fullname = message.text user_dict[chat_id] = user msg = bot.send_message(chat.id, 'Введите ваш номер телефона и способ связи с вами (Telegram,' 'Viber, WhatsApp, VK или звонок по номеру', reply_markup=markup) bot.register_next_step_handler(msg, process_number_step) except Exception as e: bot.reply_to(message, 'Упс!') def process_number_step(message): try: markup = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=3) btn_1 = types.InlineKeyboardButton('Мясорубки') btn_2 = types.KeyboardButton('Соковыжималки') btn_3 = types.KeyboardButton('Винодельни') btn_4 = types.KeyboardButton('Машинки для стрижки овец') btn_5 = types.KeyboardButton('Прялки') markup.add(btn_1, btn_2, btn_3, btn_4, btn_5) chat.id = message.chat.id user = user_dict[chat_id] user.number = message.text msg = bot.send_message(chat.id, 'Выберете категорию товаров:', reply_markup=markup) bot.register_next_step_handler(msg, process_catgor_step) except Exception as e: bot.reply_to(message, 'ooooops!') def process_catgor_step(message): try: chat.id = message.chat.id user = user_dict[chat_id] user.cargor = message.text markup = types.ReplyKeyboardRemove(selective=False) msg = bot.send_message(chat.id, 'Введите модель товара\n' 'Если не знаете какую модель выбрать, можете написать "Затрудняюсь"' 'и когда заявка будет отправлена, с вами свяжется менеджер' 'и поможет вам подобрать модель', reply_markup=markup) bot.register_next_step_handler(msg, process_product_step) except Exception as e: bot.reply_to(message, 'ooooops!') def process_product_step(message): try: chat.id = message.chat.id user = user_dict[chat_id] user.product = message.text bot.send_message(chat.id, getRegData(user, 'Отлично, в скором времени наш менеджер свжется с вами!\n' 'Вот ваша заявка: ', message.from_user.first_name), parse_mode='Markdown') bot.send_message(config.chat, getRegData(user, 'Заявка от пользователя!', bot.get_me().username), parse_mode='Markdown') except Exception as e: bot.reply_to(message, 'ooooops!') def getRegData(user, title, name): t = Template( '$title *$name* \n Город: *$usercity* \n ФИО: *$fullname* \n Номер телефона и способ связи: *$number* \n Категория товара: *$catgor* \n Модель товара: *$model*') return t.substitute({ 'title': title, 'name': name, 'usercity': user.city, 'fullname': user.fullname, 'number': user.number, 'catgor': user.catgor, 'model': user.product }) @bot.message_handler(content_types=['text']) def get_user_text(message): if (message.text == 'Наш магазин 🏬'): markup = types.InlineKeyboardMarkup() btn_1 = types.InlineKeyboardButton('*Ссылка на канал*', url='https://t.me/TestDmi') markup.add(btn_1) bot.send_message(message.chat.id, 'Вот ссылка, на нашу группу в ТГ', reply_markup=markup) elif (message.text == 'Группа с отзывами 📈'): markup = types.InlineKeyboardMarkup() btn_1 = types.InlineKeyboardButton('*Ссылка на отзывы*', url='http://t.me/testDmi') markup.add(btn_1) bot.send_message(message.chat.id, "Вот ссылка, на наша группа с отзывами (Скоро будет новая😉)", reply_markup=markup) elif (message.text == 'Что ты умеешь 👀'): bot.send_message(message.chat.id, "Я могу рассказать тебе, где что находится, рассказать " "для чего был создан, и я могу создать заявку!") elif (message.text == 'Подать заявку 👩💻'): markup = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=1) btn_2 = types.InlineKeyboardButton('/reg') btn_3 = types.InlineKeyboardButton('Я передумал(а)') markup.add(btn_2, btn_3) bot.send_message(message.chat.id, "Нажмите на кнопку '/reg' для заполнения заявки!", reply_markup=markup) elif (message.text == 'Я передумал(а)'): markup = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=2) btn_2 = types.InlineKeyboardButton('Наш магазин 🏬') btn_3 = types.KeyboardButton('Группа с отзывами 📈') btn_5 = types.KeyboardButton('Что ты умеешь 👀') btn_6 = types.KeyboardButton('Подать заявку 👩💻') markup.add(btn_2, btn_3, btn_5, btn_6) bot.send_message(message.chat.id, 'Перевожу вас к основным кнопкам для моего взаимодействия!', reply_markup=markup) else: bot.send_message(message.chat.id, 'Я ещё разрабатываюсь, извините, я не могу понять вас') bot.enable_save_next_step_handlers(delay=2) bot.load_next_step_handlers() bot.polling(none_stop=True)
Офлайн
PotatoFish96Сделай везде нормальные имена для переменных.
я не могу понять, почему у меня вылезает ошибка
PotatoFish96Тут chat.idchat_id = message.chat.id
PotatoFish96Сделай везде chatid и обращайся к нему везде одинаково.msg = bot.send_message(chat.id, 'Введите ваш номер телефона и способ связи с вами (Telegram,'
chatid = message.chat.id msg = bot.send_message(chatid, 'Введите ваш номер телефона и способ связи с вами (Telegram,'
Офлайн
py.user.next
Понял, спасибо большое!
Офлайн