首页 > 解决方案 > 如何使用相同的装饰器制作 2 个 on_member 工作事件?

问题描述

@client.event
async def on_member_join(member):
    global welcome_channel_dict
    global autoroles
    channel_id = welcome_channel_dict[str(member.guild.id)]
    embed=discord.Embed(colour=discord.Colour.green())    
    embed=discord.Embed(title="<:memberjoined:778987095837769759> Member Joined", color=0x2ECC71, description=f'{member.mention} joined **{member.guild}**! Enjoy your stay!  :tada:')
    embed.set_thumbnail(url=member.avatar_url)    
    await client.get_channel(channel_id).send(embed=embed)
    
    role = discord.utils.get(member.guild.roles, id=autoroles[str(member.guild.id)]) 

    await member.add_roles(role)

我想要实现的目标:现在,autorole只有当人们启用了欢迎消息时才有效。我希望它单独工作。

标签: pythondiscord.py

解决方案


你的客户应该是Bot一流的

from discord.ext.commands import Bot
client = Bot(command_prefix="!")

稍后在代码中

async def on_member_join(member):
    #do_some_stuff

client.add_listener(on_member_join)

async def on_member_join(member):
    #do_some_more_stuff

client.add_listener(on_member_join)


推荐阅读