Стейт доходит до своего конца и на любое входящее сообщение постоянно выводит 'Сейчас с вами свяжется менеджер'. Как сделать так чтобы 'Сейчас с вами свяжется менеджер' выводилось один раз.
from vkbottle.bot import Message, Bot
from vkbottle import BaseStateGroup, CtxStorage, Keyboard, Text
bot = Bot(
"token")
class SuperStates(BaseStateGroup):
AWKWARD_STATE = "awkward"
CONFIDENT_STATE = "confident"
TERRIFYING_STATE = "terrifying"
ctx = CtxStorage()
@bot.on.message(state=SuperStates.AWKWARD_STATE) # StateRule(SuperStates.AWKWARD_STATE)
async def awkward_handler(message: Message):
ctx.set("name", message.text)
await bot.state_dispenser.set(message.peer_id, SuperStates.CONFIDENT_STATE)
await message.answer("Введите свою фамилию")
@bot.on.message(state=SuperStates.CONFIDENT_STATE) # StateRule(SuperStates.AWKWARD_STATE)
async def awkward_handler(message: Message):
keyboard = Keyboard()
keyboard.add(Text("меню", {"cmd": 'menu'}))
name = ctx.get("name")
await message.answer(f"Сейчас с вами свяжется менеджер", keyboard=keyboard)
@bot.on.message(lev="регистрация")
@bot.on.private_message(payload={"cmd": 'reg'})
async def die_handler(message: Message):
await bot.state_dispenser.set(message.peer_id, SuperStates.AWKWARD_STATE)
return "Введите свое имя"
@bot.on.private_message(text=["Начать", "начать"]) # Обрабатывает лс
@bot.on.private_message(payload={"cmd": 'menu'})
async def private_message_handler(message: Message):
keyboard = Keyboard()
keyboard.add(Text("рег", {"cmd": 'reg'}))
await message.answer('опа', keyboard=keyboard)
bot.run_forever()