예제 #1
0
async def wait_react(
    msg: discord.Message, bot: discord.ext.commands.Bot,
    allowed: Tuple[str, ...] = None, timeout=10.0
):
    fut = asyncio.get_running_loop().create_future()
    async def listener(payload: discord.RawReactionActionEvent):
        if allowed is not None and str(payload.emoji) not in allowed:
            return
        if payload.message_id == msg.id and payload.user_id != bot.user.id:
            fut.set_result(str(payload.emoji))
    bot.add_listener(listener, 'on_raw_reaction_add')
    bot.add_listener(listener, 'on_raw_reaction_remove')
    r = await fut # await asyncio.wait_for(fut, timeout)
    bot.remove_listener(listener, 'on_raw_reaction_add')
    bot.remove_listener(listener, 'on_raw_reaction_remove')
    return str(r)
예제 #2
0
def teardown(bot: discord.ext.commands.Bot):
    bot.remove_listener(on_message)