Python
2
Вклад в тег
from vkbottle import CtxStorage, BaseStateGroup
from vkbottle.bot import Bot, Message
"""BOT"""
bot = Bot(token="TOKEN")
# ctx будет нужен для сохранения ответов.
ctx = CtxStorage()
# class в данном случае нужен для пошагового выполнения программы.
class Reg(BaseStateGroup)
NAME=0
AGE=1
ABOUT=2
END=3 #END я добавляю чтобы стейт останавливался.
@bot.on.private_message(lev="/reg")
async def Name(message: Message):
await bot.state_dispenser.set(message.peer_id, Reg.NAME) # Тут мы вторым аргументом предает Reg.Name, NAME у нас выступит как первый шаг.
return "Введи свое имя..." #Это сообщение отправиться пользователю, после ему надо будет ответить.
@bot.on.private_message(state=Reg.NAME) #Проще говоря, когда мы вводим state=Reg.NAME, мы даем понять боту эта функция включится после активации Reg.NAME, мы его активировали в предыдущем блоке
async def Age(message: Message):
ctx.set('name', message.text) # Мы записываем ответ пользователя под ключом name
await bot.state_dispenser.set(message.peer_id, Reg.AGE)
return "Сколько вам лет?"
@bot.on.private_message(state=Reg.AGE)
async def About(message: Message):
ctx.set('age', message.text)
await bot.state_dispenser.set(message.peer_id, Reg.ABOUT)
return "Расскажи о себе...."
@bot.on.private_message(state=Reg.ABOUT)
async def finally(message: Message):
ctx.set('about', message.text)
await message.answer(f"Вот твои данные:\n{ctx.get('name')}\n{ctx.get('age')}\n{ctx.get('about')}")
return "Ваши данные сохранены"