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)