【问题标题】:how to implement pagination in telegram bot?如何在电报机器人中实现分页?
【发布时间】:2017-12-23 14:55:27
【问题描述】:

我需要为电报机器人的回复键盘中的实体列表实现分页。

问题是我需要一个 show more 按钮来加载下一组实体,但我不知道如何获取用户当前正在查看的页面。

下一个问题是如何知道用户当前正在查看哪个实体列表。

我想到的唯一方法是将用户的当前状态存储在数据库中或缓存它,但我不知道有没有办法向电报回复键盘的按钮添加额外的数据或其他方式这样做,我就不必做这些工作了。

【问题讨论】:

    标签: telegram telegram-bot php-telegram-bot


    【解决方案1】:

    您可以在消息textcallback_data中添加页码,editMessage方法很有帮助。

    例如,this case 使用 callback_data 传递当前页面和操作。

    【讨论】:

    • 我没有使用内联按钮。我想使用回复键盘按钮。我有没有内联按钮的具有此功能的种子机器人
    • 您可以 1. 将其记录到数据库中,2. 删除之前的消息,然后用新消息打开另一个键盘,消息文本将在.message.reply_to_message.text
    【解决方案2】:

    我曾经使用过这个模型。也许它对其他人有帮助:

    class PaginationModel(Generic[T]):
        def __init__(self, all_items: Iterable[T] = None, items_per_page: int = 1):
            self.all_items = list(all_items or [])
            self._current_page = 0
            self.items_per_page = items_per_page
    
        @property
        def _begin(self):
            return self._current_page * self.items_per_page
    
        @property
        def _end(self):
            return min((self._current_page + 1) * self.items_per_page, self.item_count)
    
        @property
        def item_count(self):
            return len(self.all_items)
    
        @property
        def page_items(self) -> List[T]:
            return self.all_items[self._begin : self._end]
    
        @property
        def current_page_number(self) -> int:
            return self._current_page + 1
    
        @property
        def has_next_page(self) -> bool:
            return self._end < self.item_count
    
        @property
        def has_previous_page(self) -> bool:
            return self._begin > 0
    
        def flip_next_page(self):
            self._current_page += 1
    
        def flip_previous_page(self):
            self._current_page -= 
    

    【讨论】:

      猜你喜欢
      • 2017-08-18
      • 2019-09-16
      • 1970-01-01
      • 2019-04-25
      • 2020-03-22
      • 2018-07-22
      • 2020-10-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多