Ошибка `400 FORM_UNSUPPORTED` говорит о том, что запрашиваемая форма или её параметры не поддерживаются Telegram API. Убедитесь, что вы правильно настроили все параметры и используете верные методы.
Давайте разберем ваш код и попробуем исправить возможные ошибки:
1. **Проверьте параметры `InputStorePaymentStarsGift`**:
- Убедитесь, что `user_id=peer` корректен и существует в системе.
- Убедитесь, что используемая валюта "XTR" поддерживается.
2. **Impact `InputInvoiceStars`**:
- Необходимо убедиться, что `invoice1` корректно создан и все нужные параметры правильно передаются.
3. **Форма платежа**:
- Убедитесь, что метод `GetPaymentForm` корректно возвращает платежную форму. Проверьте, успешно ли передаются параметры для этого метода.
4. **Отправка формы**:
- Проверьте параметры метода `SendStarsForm`. Убедитесь, что `form_id` и `invoice` содержат допустимые значения.
Попробуйте следующий пример кода и обратите внимание на комментарии по каждому шагу:
```python
# Создание подарка звёзд
invoice1 = types.InputStorePaymentStarsGift(
user_id=peer, # Убедитесь, что peer - это существующий ID пользователя
stars=25,
currency="XTR", # Полезно проверить, что это валидная валюта
amount=0
)
# Создание инвойса с использованием подарка
invoice2 = types.InputInvoiceStars(
purpose=invoice1 # Убедитесь, что purpose корректно установлен
)
# Получение формы платежа
form = await app.invoke(
functions.payments.GetPaymentForm(
invoice=invoice2
)
)
# Проверяем, что форма была получена и имеет правильные значения
if form:
r = await app.invoke(
functions.payments.SendStarsForm(
form_id=form.form_id, # Убедитесь, что form.form_id корректное
invoice=invoice2,
)
)
else:
print("Не удалось получить форму платежа.")
```
Также посмотрите документацию Telegram API, чтобы убедиться, что используете правильные классы и функции, соответствующие вашей версии API. Если ошибка продолжает возникать, можете попробовать добавить логи на каждом этапе выполнения, чтобы увидеть, какие данные возвращаются и где именно происходит сбой.