我需要在电报机器人的回复键盘中实现实体列表的分页。
问题是我需要一个show more
按钮来加载下一组实体,而我不知道如何获取用户当前正在查看的页面。
下一个问题是如何知道用户当前正在查看哪个实体列表。
在我看来,唯一的方法是将用户的当前状态存储在数据库中或缓存它,但我不知道是否有某种方法可以将其他数据添加到电报回复键盘中按钮或其他一些方法,所以我不必做这项工作。
答案 0 :(得分:0)
您可以为邮件text
或callback_data
添加页码,editMessage方法也很有用。
例如,this case使用callback_data
传递当前页面和操作。
答案 1 :(得分:0)
我从这个模型开始一次。也许对其他人有帮助:
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 -=