mirror of
https://github.com/python-telegram-bot/python-telegram-bot.git
synced 2024-11-23 23:56:44 +01:00
Add New Parameters to create_invoice_link
This commit is contained in:
parent
8192822405
commit
87391ea028
4 changed files with 37 additions and 4 deletions
|
@ -24,7 +24,7 @@ import contextlib
|
|||
import copy
|
||||
import pickle
|
||||
from collections.abc import Sequence
|
||||
from datetime import datetime
|
||||
from datetime import datetime, timedelta
|
||||
from types import TracebackType
|
||||
from typing import (
|
||||
TYPE_CHECKING,
|
||||
|
@ -8024,6 +8024,8 @@ CUSTOM_EMOJI_IDENTIFIER_LIMIT` custom emoji identifiers can be specified.
|
|||
send_phone_number_to_provider: Optional[bool] = None,
|
||||
send_email_to_provider: Optional[bool] = None,
|
||||
is_flexible: Optional[bool] = None,
|
||||
subscription_period: Optional[Union[int, timedelta]] = None,
|
||||
business_connection_id: Optional[str] = None,
|
||||
*,
|
||||
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
||||
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
||||
|
@ -8036,6 +8038,9 @@ CUSTOM_EMOJI_IDENTIFIER_LIMIT` custom emoji identifiers can be specified.
|
|||
.. versionadded:: 20.0
|
||||
|
||||
Args:
|
||||
business_connection_id (:obj:`str`, optional): |business_id_str|
|
||||
|
||||
.. versionadded:: NEXT.VERSION
|
||||
title (:obj:`str`): Product name. :tg-const:`telegram.Invoice.MIN_TITLE_LENGTH`-
|
||||
:tg-const:`telegram.Invoice.MAX_TITLE_LENGTH` characters.
|
||||
description (:obj:`str`): Product description.
|
||||
|
@ -8062,6 +8067,13 @@ CUSTOM_EMOJI_IDENTIFIER_LIMIT` custom emoji identifiers can be specified.
|
|||
|
||||
.. versionchanged:: 20.0
|
||||
|sequenceargs|
|
||||
subscription_period (:obj:`int` | :class:`datetime.timedelta`, optional): The time the
|
||||
subscription will be active for before the next payment, either as number of
|
||||
seconds or as :class:`datetime.timedelta` object. The currency must be set to
|
||||
``“XTR”`` (Telegram Stars) if the parameter is used. Currently, it must always be
|
||||
:tg-const:`telegram.constants.InvoiceLimit.SUBSCRIPTION_PERIOD` if specified.
|
||||
|
||||
.. versionadded:: NEXT.VERSION
|
||||
max_tip_amount (:obj:`int`, optional): The maximum accepted amount for tips in the
|
||||
*smallest units* of the currency (integer, **not** float/double). For example, for
|
||||
a maximum tip of ``US$ 1.45`` pass ``max_tip_amount = 145``. See the ``exp``
|
||||
|
@ -8127,6 +8139,12 @@ CUSTOM_EMOJI_IDENTIFIER_LIMIT` custom emoji identifiers can be specified.
|
|||
"is_flexible": is_flexible,
|
||||
"send_phone_number_to_provider": send_phone_number_to_provider,
|
||||
"send_email_to_provider": send_email_to_provider,
|
||||
"subscription_period": (
|
||||
subscription_period.total_seconds()
|
||||
if isinstance(subscription_period, timedelta)
|
||||
else subscription_period
|
||||
),
|
||||
"business_connection_id": business_connection_id,
|
||||
}
|
||||
|
||||
return await self._post(
|
||||
|
|
|
@ -2902,6 +2902,10 @@ class InvoiceLimit(IntEnum):
|
|||
|
||||
.. versionadded:: 21.6
|
||||
"""
|
||||
SUBSCRIPTION_PERIOD = datetime.timedelta(days=30).total_seconds()
|
||||
""":obj:`int`: The period of time for which the subscription is active before
|
||||
the next payment, passed as :paramref:`~telegram.Bot.create_invoice_link.subscription_period`
|
||||
parameter of :meth:`telegram.Bot.create_invoice_link`."""
|
||||
|
||||
|
||||
class UserProfilePhotosLimit(IntEnum):
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
"""This module contains an object that represents a Telegram Bot with convenience extensions."""
|
||||
from collections.abc import Sequence
|
||||
from copy import copy
|
||||
from datetime import datetime
|
||||
from datetime import datetime, timedelta
|
||||
from typing import (
|
||||
TYPE_CHECKING,
|
||||
Any,
|
||||
|
@ -1171,6 +1171,8 @@ class ExtBot(Bot, Generic[RLARGS]):
|
|||
send_phone_number_to_provider: Optional[bool] = None,
|
||||
send_email_to_provider: Optional[bool] = None,
|
||||
is_flexible: Optional[bool] = None,
|
||||
subscription_period: Optional[Union[int, timedelta]] = None,
|
||||
business_connection_id: Optional[str] = None,
|
||||
*,
|
||||
read_timeout: ODVInput[float] = DEFAULT_NONE,
|
||||
write_timeout: ODVInput[float] = DEFAULT_NONE,
|
||||
|
@ -1204,6 +1206,8 @@ class ExtBot(Bot, Generic[RLARGS]):
|
|||
write_timeout=write_timeout,
|
||||
connect_timeout=connect_timeout,
|
||||
pool_timeout=pool_timeout,
|
||||
subscription_period=subscription_period,
|
||||
business_connection_id=business_connection_id,
|
||||
api_kwargs=self._merge_api_rl_kwargs(api_kwargs, rate_limit_args),
|
||||
)
|
||||
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
# You should have received a copy of the GNU Lesser Public License
|
||||
# along with this program. If not, see [http://www.gnu.org/licenses/].
|
||||
import asyncio
|
||||
import datetime as dtm
|
||||
|
||||
import pytest
|
||||
|
||||
|
@ -122,10 +123,14 @@ class TestInvoiceWithoutRequest(InvoiceTestBase):
|
|||
protect_content=True,
|
||||
)
|
||||
|
||||
async def test_send_all_args_create_invoice_link(self, offline_bot, monkeypatch):
|
||||
@pytest.mark.parametrize("subscription_period", [42, dtm.timedelta(seconds=42)])
|
||||
async def test_send_all_args_create_invoice_link(
|
||||
self, offline_bot, monkeypatch, subscription_period
|
||||
):
|
||||
async def make_assertion(*args, **_):
|
||||
kwargs = args[1]
|
||||
return all(kwargs[i] == i for i in kwargs)
|
||||
sp = kwargs.pop("subscription_period") == 42
|
||||
return all(kwargs[i] == i for i in kwargs) and sp
|
||||
|
||||
monkeypatch.setattr(offline_bot, "_post", make_assertion)
|
||||
assert await offline_bot.create_invoice_link(
|
||||
|
@ -149,6 +154,8 @@ class TestInvoiceWithoutRequest(InvoiceTestBase):
|
|||
send_phone_number_to_provider="send_phone_number_to_provider",
|
||||
send_email_to_provider="send_email_to_provider",
|
||||
is_flexible="is_flexible",
|
||||
business_connection_id="business_connection_id",
|
||||
subscription_period=subscription_period,
|
||||
)
|
||||
|
||||
async def test_send_object_as_provider_data(
|
||||
|
|
Loading…
Reference in a new issue