mirror of
https://github.com/python-telegram-bot/python-telegram-bot.git
synced 2024-11-21 22:56:38 +01:00
Updated Arbitrary callback_data (markdown)
parent
72cf882a1d
commit
ffc8353309
1 changed files with 3 additions and 0 deletions
|
@ -4,6 +4,9 @@ The Telegrams Bot API only accepts strings with length up to 64 bytes as `callba
|
|||
|
||||
With PTB, you are able to pass *any* object as `callback_data`. This is achieved by storing the object in a cache and passing a unique identifier for that object to Telegram. When a `CallbackQuery` is received, the id in the `callback_data` is replaced with the stored object. To use this feature, set [`Application.arbitrary_callback_data`](https://docs.python-telegram-bot.org/telegram.ext.applicationbuilder.html#telegram.ext.ApplicationBuilder.arbitrary_callback_data) to `True`. The cache that holds the stored data has limited size (more details on memory usage below). If the cache is full and objects from a new `InlineKeyboardMarkup` need to be stored, it will discard the data for the least recently used keyboard.
|
||||
|
||||
> [!Note]
|
||||
> You can of course also manually implement the idea of storing the object in a cache and passing a unique identifier for that object to Telegram, e.g. with the help of PTB [[storing data functionality|Storing-bot,-user-and-chat-related-data]]. PTBs built-in "Arbitrary `callback_data`" provides this mechanism in a way that requires minimal additional implementation effort on your end and that ties in well with the overall PTB framework.
|
||||
|
||||
This means two things for you:
|
||||
|
||||
1. If you don't use [persistence](../wiki/Making-your-bot-persistent), buttons won't work after restarting your bot, as the stored updates are lost. More precisely, the `callback_data` you will receive is an instance of `telegram.ext.InvalidCallbackData`. If you don't need persistence otherwise, you can set `store_callback_data` to `True` and all the others to `False`.
|
||||
|
|
Loading…
Reference in a new issue