aiogram бот на python СРОЧНО ПОМОГИТЕ ПОЖАЛУЙСТА!

Хочу сделать так, чтобы когда пользователь нажимал на кнопку "Баланс" ему выводился его баланс(пока что пусть будет 0-ой).

import asyncio
import logging
import aiogram
from aiogram import F
from aiogram.filters.command import Command
from aiogram import Bot, Dispatcher, types
from aiogram.enums.dice_emoji import DiceEmoji
from datetime import datetime
from pydantic_settings import BaseSettings, SettingsConfigDict
from pydantic import SecretStr
import config_reader
from aiogram.types import ReplyKeyboardRemove, \
    ReplyKeyboardMarkup, KeyboardButton, \
    InlineKeyboardMarkup, InlineKeyboardButton
import random
import time
from aiogram.filters import Text

logging.basicConfig(level=logging.INFO)
bot = Bot(token="ТОКЕН МОЕГО БОТА")
dp = Dispatcher()
dp.start_polling(bot)

@dp.message(Command("start"))
async def cmd_start(message: types.Message):
    await message.reply("Приветствую тебя в боте по пробиву Q1OTy! Выбери опцию: ")
    kb = [
        [
            types.KeyboardButton(text="Баланс?", request_id=1)
        ],
        [
            types.KeyboardButton(text="Пополнить?", request_id=2)
        ],
        [
            types.KeyboardButton(text="Профиль?", request_id=3)
        ]
    ]
    keyboard = types.ReplyKeyboardMarkup(
        # keyboard=kb,
        # resize_keyboard=True,
        input_field_placeholder="Выберите опцию:"
    )
@dp.message(Text(equals="Баланс?"))
async def Balance(message: types.Message):
    await message.reply(""" Ваш баланс: 0₽
                            Доступных запросов: 0
                            Пополните баланс для продолжения пользования запросов бота!""")
@dp.message(Text(equals="Пополнить?"))
async def Popolnitt(message: types.Message):
    await message.reply(""" Пополнить можно по ссылке ниже:
                            https://my.qiwi.com/Anna-GJMDlYBNwq?noCache=true""")
@dp.message(Text(equals="Профиль?"))
async def Profile(message: types.Message):
    await message.reply(message.from_user.username, message.from_user.id, message.from_user.first_name, message.from_user.last_name)

сделал так, но aiogram.filters TEXT не распознаёт, поэтому не знаю как сделать чтобы проверка шла на то, что он написал. Буду благодарен всевышне за помощь, 2 для не могу найти ответ((


Ответы (1 шт):

Автор решения: Иван Ипатов
  1. Чтобы работать с клавиатурой, передайте reply_markup
  2. Вы забыли аргумент keyboard
  3. Используйте MagicFilter
import logging
from aiogram import F
from aiogram.filters.command import Command
from aiogram import Bot, Dispatcher, types


logging.basicConfig(level=logging.INFO)
bot = Bot(token="")
dp = Dispatcher()
dp.start_polling(bot)

def kb():
    kb = types.ReplyKeyboardMarkup(keyboard=[
        [
            types.KeyboardButton(text="Баланс?", request_id=1)
        ],
        [
            types.KeyboardButton(text="Пополнить?", request_id=2)
        ],
        [
            types.KeyboardButton(text="Профиль?", request_id=3)
        ]
    ], resize_keyboard=True, input_field_placeholder="Выберите опцию:")
    return kb

@dp.message(Command("start"))
async def cmd_start(message: types.Message):
    await message.reply("Приветствую тебя в боте по пробиву Q1OTy! Выбери опцию: ", reply_markup=kb())

@dp.message(F.text == "Баланс?")
async def balance(message: types.Message):
    await message.reply(""" Ваш баланс: 0₽
                            Доступных запросов: 0
                            Пополните баланс для продолжения пользования запросов бота!""")

→ Ссылка