Reaction Pagination Button Forward And Back Python
I'm trying to make a button / reaction to go back and forth between 3 different images, but the button is not coming back in the previous image, just advancing to the next one, cou
Solution 1:
Here's what I came up with.
Basically, we have a loop that checks every reaction against the ones we want, and then delete the old message and send the new one if we see one of the reactions we're looking for.
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")
Someone asked for a version that edits the message instead of sending a new one, I've also updated it to the latest version:
@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
Post a Comment for "Reaction Pagination Button Forward And Back Python"