Как передать переменную из одной функции в другую на VKBOTTLE? Python
Бот работает на либе vkbottle и он, получается, асинхронный. Хочу реализовать нормальную автооплату, но не выходит реализовать проверку платежа, ибо айди платежа лежит в другой функции. Как можно получить переменную IDE из функции "sfsg"?? памагите
Код: https://pastebin.com/8WuXBL3v
Ответы (1 шт):
Автор решения: 0xmeow
→ Ссылка
Для того, что бы получить переменную из одной "функции" в другой, нужно её сохранить где-то глобально. И желательно сохранять отдельно для каждого пользователя.
VKBottle предоставляет готовый функционал в виде state-dispenser'ов. Позволяет сохранять различные состояния для каждого пользователя, а так же сохранять произвольные данные (payload).
Решение будет выглядеть примерно так:
from vkbottle_types import BaseStateGroup
...
class MyStates(BaseStateGroup):
IDE_STATE = 0
...
@bot.on.private_message(text='Сoглaceн')
async def sfsg(message:Message):
IDE = random.randint(1,99999)
await bot.state_dispenser.set(message.peer_id, MyStates.IDE_STATE, IDE=IDE)
amount = 1
...
@bot.on.private_message(text='Проверить оплату')
async def adfusa(message:Message):
IDE = message.state_peer.payload["IDE"]
await message.answer(IDE)