Написал код на телеботе, но потом решил его переписать на aiogram. И столкнулся с проблемой замены:
@bot.callback_query_handler(func=lambda call: True)
def answer(call):
Можно ли вызвать те же самые функции на aiogram?
Полный код:
import telebot
from telebot import types
import time
import db
import config
import functions
bot = telebot.TeleBot(config.token)
db.create_db()
@bot.message_handler(commands=['start'])
def send_welcome(message):
#настройка
amount = 1
desc = 'Тестовый товар'
buy_markup = types.InlineKeyboardMarkup(row_width=2)
buy_button = types.InlineKeyboardButton(text=f'Купить за {amount}₽', callback_data=f'buy-{amount}-{desc}')
buy_markup.add(buy_button)
bot.send_message(message.chat.id, f'Купить за {amount}₽', reply_markup=buy_markup)
@bot.callback_query_handler(func=lambda call: True)
def answer(call):
#кнопка купить
if call.data.startswith('buy'):
call_data = call.data.split('-')
url, code = db.add_trans(call_data[1], call_data[2])
buy_markup = types.InlineKeyboardMarkup(row_width=2)
buy_button_1 = types.InlineKeyboardButton(text=f'Перейти', url=url)
buy_button_2 = types.InlineKeyboardButton(text=f'Проверить платеж', callback_data=f'check-{code}')
buy_markup.add(buy_button_1, buy_button_2)
bot.edit_message_text(f'Оплатите {call_data[1]}₽ по ссылке:', call.message.chat.id, call.message.message_id, reply_markup=buy_markup)
#кнопка проверить платеж
elif call.data.startswith('check'):
call_data = call.data.split('-')
status = functions.check_pay(call_data[1])
if status:
price = db.update_trans(call_data[1])
#обновления баланса или выдача товара
bot.edit_message_text('Успешно оплачено!', call.message.chat.id, call.message.message_id, reply_markup='')
else:
pass
while True:
try:
bot.polling(none_stop=True, interval=0, timeout=5)
except Exception as E:
print(E.args)
time.sleep(1)