我一直试图做出一个显示一些信息的命令,然后,当我对一个表情做出反应时,它应该显示另一组信息。
我尝试使用this的某些部分,特别是第335至393行中的部分 使它工作。但是,它什么也没做。甚至没有错误消息。
这是我现在使用的代码。
def check_react(reaction, user):
if reaction.message.id != msg.id:
return False
if user != ctx.message.author:
return False
return True
res, user = await bot.wait_for('reaction_add', check=check_react, timeout=None,)
if user != ctx.message.author:
print('if user != ctx.message.author:')
elif '⬅️' in str(res.emoji):
page -=1
print(page)
embed = discord.Embed(title='generic title', description='generic description', color=0x52fffc)
await msg.edit(embed=embed)
elif '➡️' in str(res.emoji):
page +=1
print(page)
embed = discord.Embed(title='generic title 2', description='generic description 2', color=0x52fffc)
await msg.edit(embed=embed)
它似乎停在了
await bot.wait_for('reaction_add',..)
那是为什么?以及如何使代码正常工作?多数民众赞成在一个齿轮。如有需要,我会提供更多代码。
答案 0 :(得分:2)
更好和更容易的方法是使用DiscordUtils
这里是一个例子:
@commands.command()
async def paginate(self, ctx):
embed1 = discord.Embed(color=ctx.author.color).add_field(name="Example", value="Page 1")
embed2 = discord.Embed(color=ctx.author.color).add_field(name="Example", value="Page 2")
embed3 = discord.Embed(color=ctx.author.color).add_field(name="Example", value="Page 3")
paginator = DiscordUtils.Pagination.CustomEmbedPaginator(ctx, remove_reactions=True)
paginator.add_reaction('⏮️', "first")
paginator.add_reaction('⏪', "back")
paginator.add_reaction('?', "lock")
paginator.add_reaction('⏩', "next")
paginator.add_reaction('⏭️', "last")
embeds = [embed1, embed2, embed3]
await paginator.run(embeds)
答案 1 :(得分:0)
忘记了这一点,我终于明白了。这是我的操作方式:
首先,我将页面的所有内容放入列表中。每个条目都是一页。
然后,我定义一个将用作检查的函数。这将把响应侦听器限制为已发送的实际嵌入,并阻止除命令调用程序之外的任何人响应。抱歉,出现任何格式错误。
def check(reaction, user):
return reaction.message.id == msg.id and user == ctx.author #msg.id is the id of the embed sent by the bot.
page = 0
while True: #can be changed to a variable to let it work a certain amount of times.
try:
reaction, _ = await bot.wait_for('reaction_add', timeout= 20.0, check=check)
if reaction.emoji == 'emote of choice here' and page > 0:
page -= 1
embed = discord.Embed(title='Title Here', description=pages[page]
await msg.edit(embed=embed)
if reaction.emoji == 'emote of choice here' and page < len(pages) -1:
page += 1
embed = discord.Embed(title='Title Here', description= pages[page]
await msg.edit(embed=embed)
except asyncio.TimeoutError:
#do stuff here, could be pass or a message saying the timeout has been reached or something similar.