D
D
dmnno332021-11-03 22:11:42
Python
dmnno33, 2021-11-03 22:11:42

Why doesn't the bot send a message after payment?

import datetime, threading, time
from pyqiwip2p import QiwiP2P
from pyqiwip2p.types import QiwiCustomer, QiwiDatetime
from datetime import timedelta
from aiogram.types import ParseMode
from aiogram.contrib.fsm_storage.memory import MemoryStorage
from aiogram import Bot, Dispatcher, types, executor
from aiogram.dispatcher.filters.state import State, StatesGroup
from aiogram.dispatcher import FSMContext


p2p = QiwiP2P(auth_key="приватныйключ")
bot = Bot("токен")
dp = Dispatcher(bot, storage=MemoryStorage())
now = datetime.datetime.now()


@dp.message_handler(commands=['start', 'help'])
async def welcome(message: types.Message):
  try:
    p2p.reject(bill_id=new_bill.bill_id)
  except:
    pass
  await message.answer('привет...')



@dp.message_handler(commands=['pay_qiwi_1'])
async def buy(message: types.Message):
  global bill
  price = 15
  lifetime = 150
  comment = 'Услуга'
  bill = p2p.bill(amount=price, lifetime=lifetime, comment=comment)
  link_oplata = bill.pay_url
  await message.answer(f'<a href="{link_oplata}">Ссылка на оплату Qiwi {price} р.</a>', parse_mode="HTML")
  x = threading.Thread(target=functionoplata, args=(message,))
  x.start() #Запуск потока


def functionoplata(message):
  oplata_time = datetime.datetime.now()
  datetime_delta = oplata_time + timedelta(minutes=7)
  while True:
    status = p2p.check(bill_id=bill.bill_id).status
    if status == 'PAID':
      text = "оплата прошла!"
      break
      return text
    elif datetime.datetime.now() > datetime_delta:
      text = "ссылка недействительна"
      break
      return text
  time.sleep(0.1)


if __name__ == '__main__':
  executor.start_polling(dp)

Answer the question

In order to leave comments, you need to log in

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question