Суть бота такова: пользователь создает заявку, последовательно отвечая на вопросы, которые задает бот. Потом заявка отправляется на рассмотрение модератору и в итоге пользователь получает ответ( пока что это не реализовано). Чтобы это все реализовать была создана функция которая и создает данную заявку. Вопрос таков: есть ли другие способы реализовать заполнение заявки или мой код вполне себе ничего.
P.s. Не судите строго это мой первый проект в плане программирования. Хотелость бы реальных советов и адекватной критики. Заранее спасибо)
import vk_api
from vk_api import keyboard
from vk_api.longpoll import VkLongPoll, VkEventType
from vk_api import VkUpload
from vk_api.utils import get_random_id
from vk_api.keyboard import VkKeyboard, VkKeyboardColor
# \\\КЛАВИАТУРЫ
keyboard1 = VkKeyboard(one_time=True)
keyboard1.add_button('Создать заявку', color=VkKeyboardColor.POSITIVE)
keyboard2 = VkKeyboard(one_time=False)
keyboard2.add_button('Назад', color=VkKeyboardColor.SECONDARY)
keyboard2.add_button('Отменить', color=VkKeyboardColor.NEGATIVE)
keyboard3 = VkKeyboard(one_time=True)
keyboard3.add_button('Сохранить', color=VkKeyboardColor.POSITIVE)
keyboard3.add_line()
keyboard3.add_button('Назад', color=VkKeyboardColor.SECONDARY)
keyboard3.add_button('Отменить', color=VkKeyboardColor.NEGATIVE)
# \\\ФУНКЦИЯ ОТПРАВКИ СООБЩЕНИЯ
def write_message (sender, message):
if i==1:
authorize.method('messages.send', {'user_id': sender, 'message': message, 'random_id': get_random_id(), 'keyboard': keyboard1.get_keyboard()})
elif i==2:
authorize.method('messages.send', {'user_id': sender, 'message': message, 'random_id': get_random_id(), 'keyboard': keyboard2.get_keyboard()})
elif i==3:
authorize.method('messages.send', {'user_id': sender, 'message': message, 'random_id': get_random_id(), 'keyboard': keyboard3.get_keyboard()})
# \\\ФУНКЦИЯ СОЗДАНИЯ АНКЕТЫ
def reg():
global i
questionnaire = []
for event in longpoll.listen():
if event.type == VkEventType.MESSAGE_NEW and event.to_me:
name_user = event.text
sender = event.user_id
if name_user == event.text and name_user != "Назад" and name_user != "Отменить":
write_message(sender, "Вы ввели имя: "+ name_user + "\nВведите Ваш возраст")
questionnaire.append(name_user)
for event in longpoll.listen():
if event.type == VkEventType.MESSAGE_NEW and event.to_me:
year_user = event.text
sender = event.user_id
if year_user == event.text and year_user != "Назад" and year_user != 'Отменить':
write_message(sender, "Вам "+ year_user + " лет\n С какого Вы города?")
questionnaire.append(year_user)
for event in longpoll.listen():
if event.type == VkEventType.MESSAGE_NEW and event.to_me:
city = event.text
sender = event.user_id
if city == event.text and city != "Назад" and city != "Отменить":
write_message(sender, "Вы с г. "+ city + "\n" + "Заполните заявку, укажите все нужные Вам критерии")
questionnaire.append(city)
for event in longpoll.listen():
if event.type == VkEventType.MESSAGE_NEW and event.to_me:
text_user = event.text
sender = event.user_id
if text_user == event.text and text_user != "Назад" and text_user != "Отменить":
i=3
write_message(sender, "Ваша заявка: \n"+ name_user + " " + year_user + " " + city + "\n" + text_user)
questionnaire.append(text_user)
for event in longpoll.listen():
if event.type == VkEventType.MESSAGE_NEW and event.to_me:
end_user = event.text
sender = event.user_id
if end_user =="Сохранить" and end_user != "Назад" and end_user != "Отменить":
i=1
write_message(sender, "Вы успешно создали заявку")
return questionnaire
elif end_user =="Назад":
i=2
write_message(sender, "Измените текст заявки")
break
elif end_user =="Отменить":
i=1
write_message(sender, "Заявка отменена")
questionnaire = []
return questionnaire
elif text_user == "Назад":
write_message(sender, "Измени свой город")
break
elif text_user == "Отменить":
i=1
text_user = None
questionnaire = []
write_message(sender, "Заявка отменена")
return questionnaire
elif city == "Назад":
write_message(sender, "Измени свой возраст")
break
elif city == "Отменить":
i=1
city = None
questionnaire = []
write_message(sender, "Заявка отменена")
return questionnaire
elif year_user == "Назад":
write_message(sender, "Введи имя заново")
break
elif year_user == "Отменить":
i=1
year_user = None
questionnaire = []
write_message(sender, "Заявка отменена")
return questionnaire
elif name_user == "Назад":
i=1
name_user = None
questionnaire = []
write_message(sender, "Заявка отменена")
return questionnaire
elif name_user == "Отменить":
i=1
name_user = None
questionnaire = []
write_message(sender, "Заявка отменена")
return questionnaire
# \\\АВТОРИЗАЦИЯ
token = 'TOKEN'
authorize = vk_api.VkApi(token = token)
longpoll = VkLongPoll(authorize)
# \\\ОСНОВНАЯ ЛОГИКА
for event in longpoll.listen():
if event.type == VkEventType.MESSAGE_NEW and event.to_me:
reseived_message = event.text
sender = event.user_id
if reseived_message == "Создать заявку":
i=2
write_message(sender, "Как тебя зовут?")
reg()
elif reseived_message == event.text:
i=1
write_message(sender, "Напиши 'Создать заявку'")