当前位置: 首页 > 面试题库 >

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

詹斌蔚
2023-03-14
问题内容

我正在尝试在3个不同的图像之间来回切换按钮,但该按钮在上一个图像中没有回来,只是前进到下一个图像,有人可以帮我吗?

    if message.content.startswith('!image'):

        msg1 = await Bot.send_file(message.channel, 'image1.png')

        toReact = ('⏩')
        for reaction in toReact:
            await Bot.add_reaction(msg1, reaction)
        def checkReaction(reaction, user):
            e = str(reaction.emoji)
            return e.startswith('⏩')
        res = await Bot.wait_for_reaction(message=msg1, user=message.author, timeout=30, check=checkReaction)

        if res is None:
            await Bot.delete_message(msg1)

        elif '⏩' in str(res.reaction.emoji):
            await Bot.delete_message(msg1)
            msg2 = await Bot.send_file(message.channel, 'image2.png')

            toReact = ['⏪', '⏩']
            for reaction in toReact:
                await Bot.add_reaction(msg2, reaction)
            def checkReaction2(reaction, user):
                e = str(reaction.emoji)
                return e.startswith('⏪','⏩')
            res2 = await Bot.wait_for_reaction(message=msg2, user=message.author, timeout=30, check=checkReaction2)

            if res2 is None:
                await Bot.delete_message(msg2)

            elif '⏩' in str(res.reaction.emoji):
                await Bot.delete_message(mensagem2)
                await Bot.send_file(message.channel, 'image3.png')

问题答案:

这是我想出的。

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

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


 类似资料:
  • 问题内容: 你好, 我正在寻找解决方案,其中后退和前进按钮控制我的Ajax调用历史记录。 因此,如果我要进行ajax调用,然后按“返回”,我想重新加载原始页面。 如果我先执行ajax调用,然后再执行另一个,然后按“后退”按钮,我想再次执行第一个ajax调用。 依此类推…(即,如果我现在按前进按钮,则重做第二个ajax coll shell ;-)) 谢谢 更新 好吧,我使用名为jQuery Add

  • 问题内容: 我正在使用react native导航(react- navigation)StackNavigator。它从应用程序整个生命周期的“登录”页面开始。我不想使用返回选项,返回“登录”屏幕。有谁知道登录屏幕后如何将其隐藏在屏幕上?顺便说一句,我也使用以下命令将其隐藏在登录屏幕中: 问题答案: 1)要使后退按钮在react-navigation v2或更高版本中消失: 2)如果您要清理导航

  • 问题内容: 我有一个使用哈希导航的ajax webapp(JSF 2.0)。 我已在此答案的帮助下使用了事件触发功能,并在较旧的浏览器(主要是IE6 + 7)中检查了值的变化。 执行此操作的Javascript代码: 这很好。意思是,当我更改哈希值时,AJAX应用会获取通知并进行更新。IE 6/7是其中一个无效的实例。当我按下“后退/前进”按钮时,我可以看到URL栏已使用正确的哈希值更新,但似乎没

  • 问题内容: 如何在自己的应用程序中复制此功能? 我认为肯定有三种可能性… 捕获后退按钮的按下(如下所示),然后调用home按钮调用的任何方法。 捕获后退按钮按下,然后欺骗主页按钮。 捕获后退按钮的按下,然后启动主屏幕的活动,从而有效地将应用程序的活动置于停止状态。 编辑: 我知道有关服务,并且正在与此问题相关的应用程序中使用一种。该问题专门用于在按“后退”按钮时将活动置于停止状态而不是已破坏状态。

  • 问题内容: 如果javascript修改了页面A中的DOM,则用户导航到页面B,然后单击返回按钮返回页面A。页面A对DOM的所有修改都将丢失,并且向用户显示最初从服务器检索到的版本。 它可以在stackoverflow,reddit和许多其他流行的网站上以这种方式工作。(尝试向该问题添加测试评论,然后导航至其他页面并单击“返回”按钮以返回- 您的评论将“消失”) 这很有意义,但是某些网站(appl