您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

反应分页按钮前进和后退python

反应分页按钮前进和后退python

这是我想出的。

基本上,我们有一个循环,可根据所需反应检查每个反应,然后删除旧消息并发送新消息(如果我们看到了所寻找的反应之一)。

from discord.ext import commands

bot = commands.Bot(command_prefix='!')

left = '?'
right = '?'

messages = ("1", "2", "3")

def predicate(message, l, r):
    def check(reaction, user):
        if reaction.message.id != message.id or user == bot.user:
            return False
        if l and reaction.emoji == left:
            return True
        if r and reaction.emoji == right:
            return True
        return False

    return check


@bot.command(pass_context=True)
async def series(ctx):
    index = 0
    while True:
        msg = await bot.say(messages[index])
        l = index != 0
        r = index != len(messages) - 1
        if l:
            await bot.add_reaction(msg, left) 
        if r:
            await bot.add_reaction(msg, right)
        # bot.wait_for_reaction
        react, user = await bot.wait_for_reaction(check=predicate(msg, l, r))
        if react.emoji == left:
            index -= 1
        elif react.emoji == right:
            index += 1
        await bot.delete_message(msg)

bot.run("TOKEN")

有人要求提供一种用于编辑消息的版本,而不是发送新消息,我也将其更新为最新版本:

@bot.command(pass_context=True)
async def series(ctx):
    index = 0
    msg = None
    action = ctx.send
    while True:
        res = await action(content=messages[index])
        if res is not None:
            msg = res
        l = index != 0
        r = index != len(messages) - 1
        if l:
            await msg.add_reaction(left) 
        if r:
            await msg.add_reaction(right)
        react, user = await bot.wait_for('reaction_add', check=predicate(msg, l, r))
        if react.emoji == left:
            index -= 1
        elif react.emoji == right:
            index += 1
        action = msg.edit
python 2022/1/1 18:28:44 有483人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶