"""监听多个直播间的例子"""

import asyncio
from blive import BLiver, Events, BLiverCtx
from blive.msg import DanMuMsg,InteractWordMsg


# 定义弹幕事件handler
async def listen(ctx: BLiverCtx):
    danmu = DanMuMsg(ctx.body)
    print(
        f'\n【{ctx.bliver.uname}】{danmu.sender.name} ({danmu.sender.medal.medal_name}:{danmu.sender.medal.medal_level}): "{danmu.content}"\n'
    )

async def listen_join(ctx: BLiverCtx):
    join = InteractWordMsg(ctx.body)
    print(
        f"\n【{ctx.bliver.uname}】欢迎",
        f"{join.user['name']} ({join.user['medal']['medal_name']}:{join.user['medal']['medal_level']})",
        "进入直播间",
    )

async def main():
    # 两个直播间
    hai7 = BLiver(21452505)
    azi = BLiver(510)

    azi.register_handler(Events.DANMU_MSG, listen)
    azi.register_handler(Events.INTERACT_WORD, listen_join)
        # 注册handler
    hai7.register_handler(Events.DANMU_MSG, listen)
    hai7.register_handler(Events.INTERACT_WORD, listen_join)

    # 以异步task的形式运行
    task1 = hai7.run_as_task()
    task2 = azi.run_as_task()

    # await 两个任务
    await asyncio.gather(*[task1, task2])


if __name__ == "__main__":
    loop = asyncio.get_event_loop()
    loop.run_until_complete(main())