Задать вопрос
@Denze

Как записать в отдельную функцию выбор стейта vkbottle?

@bot.on.private_message(payload = {"cmd":"yeslvlup"})
async def yeslvlup(message: Message):
    lvl = 1+base.output_lvl(message.peer_id)
    base.input_lvl(message.peer_id,lvl)
    if lvl == 2:
        await bot.state_dispenser.set(message.peer_id, func.Data.SecondLvl)
    elif lvl == 3:
        await bot.state_dispenser.set(message.peer_id, func.Data.ThirdLvl)
    elif lvl == 4:
        await bot.state_dispenser.set(message.peer_id, func.Data.FourthLvl)
    elif lvl == 5:
        await bot.state_dispenser.set(message.peer_id, func.Data.FifthLvl)
    elif lvl == 6:
        await bot.state_dispenser.set(message.peer_id, func.Data.SixthLvl)
    elif lvl == 7:
        await bot.state_dispenser.set(message.peer_id, func.Data.SeventhLvl)
    await message.text(
        "Уровень повышен",
        keyboard = Keyboard(one_time = True)
        .add(Text("Продолжить"), color = KeyboardButtonColor.PRIMARY)
        )

Есть такая функция. Хочу проверку уровня с выбором стейта вынести в отдельную функцию, тк не раз ее использую
  • Вопрос задан
  • 158 просмотров
Подписаться 1 Средний 1 комментарий
Решения вопроса 1
@twistfire92
Python backend developer
Не работал с vkbottle, но можете попробовать сделать так

async def set_state(peer_id, lvl):
	states = {
		2: func.Data.SecondLvl,
		3: func.Data.ThirdLvl,
		4: func.Data.FourthLvl,
		5: func.Data.FifthLvl,
		6: func.Data.SixthLvl,
		7: func.Data.SeventhLvl
	}
	await bot.state_dispenser.set(peer_id, states[lvl])

@bot.on.private_message(payload = {"cmd":"yeslvlup"})
async def yeslvlup(message: Message):
    lvl = 1+base.output_lvl(message.peer_id)
    base.input_lvl(message.peer_id,lvl)
    await set_state(message.peer_id, lvl)
    await message.text(
        "Уровень повышен",
        keyboard = Keyboard(one_time = True)
        .add(Text("Продолжить"), color = KeyboardButtonColor.PRIMARY)
        )
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
от 200 000 до 300 000 ₽
Greenway Global Новосибирск
от 150 000 ₽
Akronix Санкт-Петербург
от 150 000 до 200 000 ₽
02 февр. 2025, в 00:25
5000 руб./за проект
02 февр. 2025, в 00:18
1000 руб./за проект
01 февр. 2025, в 23:26
100000 руб./за проект