@SubOp

Не работает инлайн-кнопка после нажатия, как исправить?

import asyncio

from aiogram import Bot, Dispatcher, F
from aiogram.filters import Command, CommandStart
from aiogram.types import Message, LabeledPrice, PreCheckoutQuery

import os
import logging

import keyboards

#token
bot = Bot('')
dp = Dispatcher()



@dp.message(Command("start"))
async def start(message: Message):
    await message.answer('Привет.', reply_markup=keyboards.main_kb)


@dp.message()
async def echo(message: Message):
    msg = message.text.lower()

    if msg == 'помощь':
        await message.answer('Моя контактная информация:', reply_markup=keyboards.links_kb)
    elif msg == 'купить':
        await message.answer("покупка",
                             reply_markup=keyboards.pof_kb)


@dp.message(F.text.lower().in_(['оплатить']))
async def order(message: Message, bot: Bot):
    await bot.send_invoice(
            chat_id=message.chat.id,
            title="Покупка курса",
            description='Оплата курса',
            payload='Payment',
            provider_token='',
            currency='rub',
            prices=[LabeledPrice(label='Покупка курса', amount=39900)],
            start_parameter='fount-of-discounts',
            is_flexible=False,
            disable_notification=True,
            allow_sending_without_reply=True,
            request_timeout=30
    )
async def pre_checkout_query(precheckoutquery: PreCheckoutQuery, bot: Bot):
    await bot.answer_pre_checkout_query(pre_checkout_query.id, ok=True)



async def main():
    await bot.delete_webhook(drop_pending_updates=True)
    await dp.start_polling(bot)


if __name__ == "__main__":
    asyncio.run(main())


from aiogram.types import (
    ReplyKeyboardMarkup,
    KeyboardButton,
    InlineKeyboardMarkup,
    InlineKeyboardButton
)

main_kb = ReplyKeyboardMarkup(
    keyboard=[
        [
            KeyboardButton(text='Хочу купить сборник'),
            KeyboardButton(text='Помощь')
        ]
    ],
    resize_keyboard=True,
    one_time_keyboard=True,
    input_field_placeholder='Выберите действие из меню'
)

links_kb = InlineKeyboardMarkup(
    inline_keyboard=[
        [
            InlineKeyboardButton(text="VK", url="-"),
            InlineKeyboardButton(text="Telegram", url="-"),
            InlineKeyboardButton(text="Instagram", url="-")
        ]
    ]
)


pof_kb = ReplyKeyboardMarkup(
    keyboard=[
        [
            KeyboardButton(text='Оплатить')
        ]
    ],
    resize_keyboard=True,
    one_time_keyboard=True,
    input_field_placeholder='Выберите действие из меню'
)

почему не работает кнопка оплатить и бот молчит после нажатия?
  • Вопрос задан
  • 110 просмотров
Решения вопроса 1
@twistfire92
Python backend developer
потому что ваше нажатие на кнопку перехватывает хендлер
@dp.message()
async def echo(message: Message):

Который перехватывает воообще все сообщения, в том числе сообщение "оплатить", которое вы посылаете кнопкой. Просто на это сообщение этот хендлер никак не отреагирует, судя по коду. Поднимите хендлер с функцией оплаты выше.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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