Привет. У меня проблема. Пытаюсь купить подарок на маркетсплейсе телеграмм через либу pyrofork и ее доступные методы. Столкнулся с проблемой: ERROR:__main__:Ошибка при покупке подарка: Telegram says: [400 INPUT_REQUEST_TOO_LONG] (caused by "payments.SendPaymentForm") Pyrogram 2.3.64 thinks: The input request is too long Python ERROR:__main__:Ошибка при покупке подарка: Telegram says: [400 INPUT_REQUEST_TOO_LONG] (caused by "payments.SendPaymentForm") Pyrogram 2.3.64 thinks: The input request is too long Сама функция покупки: async def buy_star_gift(client: Client, slug: str): try: invoice = InputInvoiceStarGiftResale( slug=slug, to_id=InputPeerSelf() ) payment_form = await client.invoke(GetPaymentForm(invoice=invoice)) print(f"Получена форма оплаты: {payment_form.form_id}") result = await client.invoke( SendPaymentForm( form_id=payment_form.form_id, invoice=payment_form.invoice, credentials=InputPaymentCredentials( data=DataJSON(data=json.dumps({ "payment_method": "XTR", "amount": payment_form.invoice.prices[0].amount, "currency": payment_form.invoice.currency })) ) ) ) logger.info(f"Успешная покупка подарка: {result}") return result except Exception as e: logger.error(f"Ошибка при покупке подарка: {e}") return None Python async def buy_star_gift(client: Client, slug: str): try: invoice = InputInvoiceStarGiftResale( slug=slug, to_id=InputPeerSelf() ) payment_form = await client.invoke(GetPaymentForm(invoice=invoice)) print(f"Получена форма оплаты: {payment_form.form_id}") result = await client.invoke( SendPaymentForm( form_id=payment_form.form_id, invoice=payment_form.invoice, credentials=InputPaymentCredentials( data=DataJSON(data=json.dumps({ "payment_method": "XTR", "amount": payment_form.invoice.prices[0].amount, "currency": payment_form.invoice.currency })) ) ) ) logger.info(f"Успешная покупка подарка: {result}") return result except Exception as e: logger.error(f"Ошибка при покупке подарка: {e}") return None Как я понимаю,ошибка в неверном содержимом DataJSON Кто то сможет подсказать,какое содержимое должно быть у него? Я уже честно так заёбся закину 50 рубликов на лолз за помощь
async def buy_star_gift(client: Client, slug: str): try: invoice = InputInvoiceStarGiftResale( slug=slug, to_id=InputPeerSelf() ) payment_form = await client.invoke(GetPaymentForm(invoice=invoice)) print(f"Получена форма оплаты: {payment_form.form_id}") logger.info(f"Детали формы оплаты: {payment_form}") payment_data = { "amount": payment_form.invoice.prices[0].amount, "currency": "XTR" } result = await client.invoke( SendPaymentForm( form_id=payment_form.form_id, invoice=payment_form.invoice, credentials=InputPaymentCredentials( data=DataJSON(data=json.dumps(payment_data)) ) ) ) logger.info(f"Успешная покупка подарка: {result}") return result except Exception as e: logger.error(f"Ошибка при покупке подарка: {e}") return None Python async def buy_star_gift(client: Client, slug: str): try: invoice = InputInvoiceStarGiftResale( slug=slug, to_id=InputPeerSelf() ) payment_form = await client.invoke(GetPaymentForm(invoice=invoice)) print(f"Получена форма оплаты: {payment_form.form_id}") logger.info(f"Детали формы оплаты: {payment_form}") payment_data = { "amount": payment_form.invoice.prices[0].amount, "currency": "XTR" } result = await client.invoke( SendPaymentForm( form_id=payment_form.form_id, invoice=payment_form.invoice, credentials=InputPaymentCredentials( data=DataJSON(data=json.dumps(payment_data)) ) ) ) logger.info(f"Успешная покупка подарка: {result}") return result except Exception as e: logger.error(f"Ошибка при покупке подарка: {e}") return None Попробовал такой способ - ошибка такая же
Привет, LIMP! Давай попробуем разобраться с этой ошибкой. Ошибка `[400 INPUT_REQUEST_TOO_LONG]` указывает на то, что запрос, который ты отправляешь, слишком длинный. Это может быть связано с тем, что данные, которые ты передаешь в `InputPaymentCredentials`, не соответствуют ожидаемому формату или содержат слишком много информации. Вот несколько шагов, которые могут помочь: 1. **Проверь формат данных**: Убедись, что данные, которые ты передаешь в `DataJSON`, соответствуют ожидаемому формату. Возможно, тебе нужно уточнить, какие именно поля и значения ожидаются сервером Telegram. 2. **Минимизируй данные**: Убедись, что ты передаешь только необходимые данные. Возможно, некоторые поля можно убрать или сократить. 3. **Документация и примеры**: Проверь документацию Pyrogram и Telegram API на наличие примеров использования `SendPaymentForm` и `InputPaymentCredentials`. Это может дать подсказки о том, как правильно формировать запрос. 4. ****** и отладка**: Попробуй добавить больше *****, чтобы понять, какие именно данные ты отправляешь и в каком виде. Это может помочь выявить проблему. Если у тебя есть доступ к документации или примерам, которые описывают, как должен выглядеть запрос, это будет очень полезно. Если нет, попробуй поискать в интернете или на форумах, возможно, кто-то уже сталкивался с подобной проблемой. Если у тебя есть еще вопросы или нужна дополнительная помощь, дай знать!