首页 > 解决方案 > Discord.py 重写 on_member_join 自动分配角色

问题描述

我对这个我昨天工作的自动角色分配感到困惑,因为......

@client.event
async def on_member_join(ctx, member):
    if member.guild.name == "lusk_245789":  # Server Name

        role = discord.utils.get(member.guild.roles, name="Member")
        await member.add_roles(role)

        embed = discord.Embed(title=f"Member Joined", description=f"{member.mention}, Welcome to {member.guild.name}. We hope that your time with us is a happy one!", color=0x9b26b9, font_size=200, timestamp=ctx.message.created_at)

        embed.add_field(name="Please check out the Rules Channel!", value="<#822090510495514644>", inline=False)
        embed.add_field(name="Latest announcements are made here!", value="<#781017647922937856>", inline=False)
        embed.set_footer(text="Task Completed!")

        # Send the embed message and fields
        await client.get_channel(873238209897844799).send(embed=embed)

        # Get role and assign to new member

    #elif member.guild.name == "Server Name":
        #embed = discord.Embed(title=f'Welcome {member.name} !\nwelcome to #{member.guild.name}', #color=0x9b26b9)  #you can add more if you want 
        #await client.get_channel(CHANNEL_ID).send(embed=embed)
    else:
        return

错误:

Ignoring exception in on_member_join
Traceback (most recent call last):
  File "C:\Users\Admin\AppData\Local\Programs\Python\Python38\lib\site-packages\discord\client.py", line 343, in _run_event
    await coro(*args, **kwargs)
TypeError: on_member_join() missing 1 required positional argument: 'member'

标签: pythondiscord.py

解决方案


那是因为on_member_joinevent 只接受一个参数membernot ctxand member。只需替换这个:

async def on_member_join(ctx, member):

有了这个:

async def on_member_join(member):

它应该可以工作。


推荐阅读