我有一个机器人,它有一个命令“!ShowInventory”,它会显示玩家的库存,机器人会对库存消息做出反应
msg = await ctx.send(toSend)
await msg.add_reaction("⬅️")
await msg.add_reaction("➡️")
要获得 toSend
...
第 1 步:将数组 player.Inventory
拆分为几个较小的数组,如下所示
y = list(chunks(player.Inventory, 4))
def chunks(l, n):
n = max(1, n)
return (l[i:i+n] for i in range(0, len(l), n))
输出看起来像这样
Array = [array[items, moreitems, moreitems, moreitems,], array[etc, etc, etc, etc]]
注意:player.Inventory 是一个单独的类 (Inventory = []
) 中的数组 (player
)
第 2 步:
现在我的新数组看起来像 y = [array[items, moreitems, moreitems, moreitems,], array[etc, etc, etc, etc]]
,我从这样的子数组中获取项目
for x in list(y[pageNumber - 1]):
toSend += x + "\n"
(-1 因为第一页存储在索引 0 而不是索引 1)
所以现在 toSend 是一个看起来像的字符串
Items
Items
Items
etc
问题:我想知道我该怎么做
例如:如果他们用“⬅️”做出反应,机器人将发送一条包含前几页项目的新消息,如果他们用“➡️”做出反应,它将发送一条包含下一页项目的新消息。我也希望这是一个循环,以便用户可以重复这个反应过程以进入上一页/下一页
这是一个冗长的问题,如果您需要任何说明,请随时提出。
答案 0 :(得分:1)
使用 wait_for
msg = await ctx.send(toSend)
await msg.add_reaction("⬅️")
await msg.add_reaction("➡️")
reaction, user = await bot.wait_for("reaction_add", check=lambda r, u: r.message.id == msg.id)
if str(reaction.emoji) == "⬅️":
# previous page
elif str(reaction.emoji) == "➡️":
# next page