【问题标题】:How to detect discord user streaming activity update (discord.py)如何检测不和谐的用户流活动更新(discord.py)
【发布时间】:2021-10-01 22:14:56
【问题描述】:

我有这段代码来检测某人的活动何时设置为流式传输,但是按照我所做的方式(我相当确定有更好的方法),我不确定如何检测它何时是不再设置为流式传输并移除角色。

@client.event
async def on_member_update(before, after):
    game = [i for i in after.activities if str(i.type) == "ActivityType.streaming"]
    if game:
      channel = client.get_channel(848003612121628682)
      guild = client.get_guild(762352010463936523)
      role = discord.utils.find(lambda r: r.name == 'Live!', guild.roles)
      await after.add_roles(role)
      await channel.send("<@427155509129379851> someone live")
      print(game[0].name)
      print(f'{after.name}')

【问题讨论】:

    标签: python discord discord.py


    【解决方案1】:

    您可以检查ActivityType.streaming 是否在before.activities 中但不在after.activities

    @client.event
    async def on_member_update(before, after):
        game = [i for i in after.activities if str(i.type) == "ActivityType.streaming"]
        if game:
            channel = client.get_channel(848003612121628682)
            guild = client.get_guild(762352010463936523)
            role = discord.utils.find(lambda r: r.name == 'Live!', guild.roles)
            await after.add_roles(role)
            await channel.send("<@427155509129379851> someone live")
            print(game[0].name)
            print(f'{after.name}')
    
        was_streaming = [i for i in before.activities if str(i.type) == "ActivityType.streaming"]
        if not game and was_streaming:
            guild = client.get_guild(762352010463936523)
            role = discord.utils.find(lambda r: r.name == 'Live!', guild.roles)
            await after.remove_roles(role)
    
    

    【讨论】:

      猜你喜欢
      • 2020-01-22
      • 2017-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-11
      • 2011-01-13
      • 1970-01-01
      相关资源
      最近更新 更多