parent
b9403a85a3
commit
d8a1e17a2f
@ -0,0 +1,32 @@ |
|||||||
|
import asyncio |
||||||
|
from typing import List, Callable, Awaitable |
||||||
|
|
||||||
|
from discord import Message, Embed |
||||||
|
from discord.ext.commands import Context |
||||||
|
|
||||||
|
|
||||||
|
async def make_tabbed_message(ctx: Context, message: Message, emote_ids: List[int], embeds: List[Embed], timeout=300): |
||||||
|
async def callback(index, _ctx, _message): |
||||||
|
await message.edit(embed=embeds[index]) |
||||||
|
|
||||||
|
await make_reaction_message(ctx, message, emote_ids, callback, timeout) |
||||||
|
|
||||||
|
|
||||||
|
async def make_reaction_message(ctx: Context, message: Message, emote_ids: List[int], |
||||||
|
callback: Callable[[int, Context, Message], Awaitable[None]], timeout = 300): |
||||||
|
for emote_id in emote_ids: |
||||||
|
await message.add_reaction(ctx.bot.get_emoji(emote_id)) |
||||||
|
|
||||||
|
def check(rxn, usr): |
||||||
|
return usr == ctx.author and rxn.emoji.id in emote_ids and rxn.message.id == message.id |
||||||
|
|
||||||
|
while True: |
||||||
|
try: |
||||||
|
reaction, user = await ctx.bot.wait_for('reaction_add', timeout=timeout, check=check) |
||||||
|
emote_index = emote_ids.index(reaction.emoji.id) |
||||||
|
await callback(emote_index, ctx, message) |
||||||
|
await message.remove_reaction(reaction, user) |
||||||
|
except asyncio.TimeoutError: |
||||||
|
for emote_id in emote_ids: |
||||||
|
await message.remove_reaction(ctx.bot.get_emoji(emote_id), ctx.bot.user) |
||||||
|
break |
Loading…
Reference in new issue