【问题标题】:Discord.py auto role/welcome messageDiscord.py 自动角色/欢迎信息
【发布时间】:2022-02-03 02:04:05
【问题描述】:

我正在尝试让它将成员角色赋予新成员,但它似乎不起作用任何人都可以帮忙吗?

@client.event
async def on_member_join(ctx, member):
    if member.guild.name == "VRnerds":  # Server Name
        role = discord.utils.get(member.guild.roles, name="members")
        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=datetime.datetime.utcnow())

        embed.add_field(name="Please check out the Rules Channel!", value="Coming soon", inline=False)
        embed.add_field(name="Latest announcements are made here!", value="Coming soon", inline=False)
        embed.set_footer(text="")

        await client.get_channel(938282805274771458).send(embed=embed)

    else:
        return

【问题讨论】:

标签: python discord.py


【解决方案1】:

首先,on_member_join 不采用ctx 参数,因此您的代码中现在没有定义member

其次(对我来说一直都是这样,猜对所有人来说都是这样)你不能做await client.get_channel(C_ID).send() 因为client.get_channel 不是协程,所以你不能在它上面使用await。

(第三,如果你没有得到任何东西,你就不需要else: return

最后你的代码应该是这样的:

@client.event
async def on_member_join(member):
    if member.guild.name == "VRnerds":  # Server Name
        role = discord.utils.get(member.guild.roles, name="members")
        await member.add_roles(role)
        embed = discord.Embed(title="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=datetime.datetime.utcnow())
        # you don't need the f before Strings with no variables or statements in it

        embed.add_field(name="Please check out the Rules Channel!", value="Coming soon", inline=False)
        embed.add_field(name="Latest announcements are made here!", value="Coming soon", inline=False)
       embed.set_footer(text="")  # < You can remove this if there wasn't any content

        c = client.get_channel(938282805274771458)
        await c.send(embed=embed)

我还建议您使用 member.guild.get_role(ROLE_ID),因为您可以稍后更改角色的名称,然后这仍然有效

【讨论】:

    【解决方案2】:

    我认为这里的错误是name=members。将其更改为id=roleid,其中 roleid 是您要提及的角色 ID 的整数状态。您可以在 DiscordUI 中通过启用开发者模式并右键单击角色并单击复制 ID 来执行此操作。

    【讨论】:

    • 不行,不行
    猜你喜欢
    • 2021-09-23
    • 1970-01-01
    • 2021-02-13
    • 2021-08-13
    • 2021-06-10
    • 2021-08-17
    • 1970-01-01
    • 2020-10-21
    • 1970-01-01
    相关资源
    最近更新 更多