discord.py开发中dpymenus分页菜单如何获取当前页及适用标签
获取菜单当前展示页的实现逻辑
PaginatedMenu实例本身内置了完整的菜单状态追踪能力,不需要开发者自行维护页码计数逻辑:
- 直接读取
menu.current_page属性,即可获取当前正在展示的Page对象实例,菜单停留在第2页时,该属性会对应返回代码中预先定义的page2对象 - 读取
menu.page_index属性可获取当前页的索引值(从0开始计数,第1页对应索引0、第2页对应索引1),索引值加1即为用户视角看到的实际页码
如果需要在页面切换时自动触发当前页相关的业务逻辑(比如记录用户停留位置、根据当前页动态调整按钮权限),可以通过库自带的页面切换回调绑定实现,基于原有代码的可运行扩展示例如下:
from discord.ext import commands from dpymenus import Page, PaginatedMenu class Demo(commands.Cog): def __init__(self, client): self.client = client async def page_change_callback(self, menu: PaginatedMenu): # 每次页面切换完成后自动执行 current_page = menu.current_page real_page_num = menu.page_index + 1 # 此处可写入任意依赖当前页的业务逻辑,比如发送操作日志、校验用户权限 print(f"菜单当前展示:第{real_page_num}页,页面标题为{current_page.title}") @commands.command() async def demo(self, ctx: commands.Context): page1 = Page(title='Page 1', description='First page test!') page1.add_field(name='Example A', value='Example B') page2 = Page(title='Page 2', description='Second page test!') page2.add_field(name='Example C', value='Example D') page3 = Page(title='Page 3', description='Third page test!') page3.add_field(name='Example E', value='Example F') menu = PaginatedMenu(ctx) menu.add_pages([page1, page2, page3]) # 绑定页面切换触发的回调方法 menu.on_page_change(self.page_change_callback) await menu.open() def setup(client): client.add_cog(Demo(client))
技术社区发布时的适用标签
- 必选核心标签:
python:基础编程语言通用标签discord.py:Discord Python开发生态的核心框架标签dpymenus:第三方分页菜单库的专属标签,可精准匹配使用同库的开发者和维护者
- 可选补充标签:
discord-bots:Discord机器人开发垂直领域标签pycord/nextcord:如果项目基于discord.py的对应分支版本开发,可补充对应框架标签,避免检索偏差
内容的提问来源于stack exchange,提问作者MakerBen
相关产品推荐
相关产品推荐

