discord.py 赋予游戏活动角色

时间:2021-02-13 15:33:29

标签: python-3.x discord.py

我正在尝试制作一个机器人,当有人在玩游戏时,它会给出一个角色。 例如有人玩 CSGO,机器人会在玩游戏时给他 CSGO 角色。 我似乎无法弄清楚。

@client.event
async def on_member_update(before, after):
    if after.activity != before.activity:
        role = discord.utils.get(after.guild.roles, name=after.activity)
        if role == None:
            await create_role(name=after.activity, hoist=True)
        await after.add_roles(role)
    elif before.activity != after.activity and not after.activity:
        role = discord.utils.get(after.guild.roles, name=after.activity)
        if role in after.roles: 
            await after.remove_roles(role)

1 个答案:

答案 0 :(得分:1)

您可以在 on_member_update 活动中查看会员正在玩的游戏。为此,您需要检查 Member.activity 参数。

应该是这样的:

@client.event
async def on_member_update(before, after):
    games = ["game1", "game2", "game3"]
    if after.activity and after.activity.name.lower() in games:
            # Assuming the role name is the same as the game
            role = discord.utils.get(after.guild.roles, name=after.activity)
            await after.add_roles(role)
    elif before.activity and before.activity.name.lower() in games and not after.activity:
            role = discord.utils.get(after.guild.roles, name=after.activity)
            if role in after.roles: 
                await after.remove_roles(role)

参考:

相关问题