Как отправить звезды в Telegram API?

Привет всем! Я пытаюсь использовать API Telegram для передачи "звёзд" от одного пользователя другому. У меня есть примерный код, но я не могу понять, в чём ошибка, так как получаю ответ [400 FORM_UNSUPPORTED]. Можете помочь разобраться? Вот код: 

<pre><code class="python">invoice1 = types.InputStorePaymentStarsGift(
            user_id=peer,
            stars=25,
            currency="XTR",
            amount=0
        )

        invoice2 = types.InputInvoiceStars(
             purpose = invoice1
        )

        form = await app.invoke(
            functions.payments.GetPaymentForm(
                invoice=invoice2
            )
        )


        r = await app.invoke(
              functions.payments.SendStarsForm(
                form_id=form.form_id,
                invoice=invoice2,
            )
        )</code></pre>
  • 28 декабря 2024 г. 0:53
Ответы на вопрос 2
Ошибка `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. Если ошибка продолжает возникать, можете попробовать добавить логи на каждом этапе выполнения, чтобы увидеть, какие данные возвращаются и где именно происходит сбой.
Бот не может дарить stars пользователям
Похожие вопросы