@TemaGerb

Как сделать что бы при нажатии кнопки Баланс, бот спрашивал сумму пополнения и использовал ее?

Хочу сделать что бы когда человек нажимал кнопку баланс, ему писалось, введите сумму на которую хотите пополнить баланс. Если она будет меньше 500 рублей, бот должен написать, что миннимальная сумма пополнения от 500 рублей. А если человек пишет больше или 500 то бот отправляет ему сообщение с его суммой к которой добавили еще 40 рублей.
spoiler
class MyStates:
    balance = None  # Определите состояние balance

@dp.callback_query_handler(lambda c: c.data == 'Bal')
async def process_balance(callback_query: types.CallbackQuery):
    await bot.answer_callback_query(callback_query.id)
    await bot.send_message(callback_query.from_user.id, "Введите сумму, которую вы хотите пополнить (не менее 500 рублей):")
    await MyStates.balance.set()

@dp.message_handler(state=MyStates.balance)
async def process_balance_amount(message: types.Message, state: FSMContext):
    async with state.proxy() as data:
        if not message.text.isdigit():
            await message.reply("Пожалуйста, введите число. Текстовые сообщения не подходят.")
            return

        amount = int(message.text)
        if amount < 500:
            await message.reply("Минимальное пополнение должно быть не менее 500 рублей.")
        else:
            await message.reply("Отлично! Теперь выберите способ оплаты.")
            # Здесь вы можете добавить код для предоставления пользователю способов оплаты
  • Вопрос задан
  • 124 просмотра
Пригласить эксперта
Ответы на вопрос 3
@theurus
что делает await MyStates.balance.set()?

у MyStates есть только определение класса но нет его экземпляров
у None нет метода set()
await тут что делает?
Ответ написан
Комментировать
snaiper04ek
@snaiper04ek
Не стреляйте в эникея, он админит как умеет
вместо
await message.reply("Отлично! Теперь выберите способ оплаты.")

вставь
await message.reply(f"Отлично! Сумма к оплате вместе с комиссией: {amount+40} рублей.")
Ответ написан
Комментировать
febday
@febday
Исправьте:
class MyStates:
    balance = None  # Определите состояние balance


На:
from aiogram.dispatcher.filters.state import State, StatesGroup

class MyStates(StatesGroup):
    balance = State()
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы