反应分页按钮前进和后退python
发布于 2021-01-29 18:19:57
我正在尝试在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')
关注者
0
被浏览
83
1 个回答
-
这是我想出的。
基本上,我们有一个循环,可根据所需反应检查每个反应,然后删除旧消息并发送新消息(如果我们看到了所寻找的反应之一)。
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