Discord Py-如何在用户发送消息时向用户添加角色?

Discord Py-如何在用户发送消息时向用户添加角色?,discord,discord.py,Discord,Discord.py,我想使用正则表达式来查看和接受来自用户的任何传入消息,并为他们分配一个角色。但前提是该用户尚未分配角色。我在运行代码时没有收到任何错误,但它不起作用 以下是我所拥有的: @client.event async def on_message(message): match = re.search(r'(.*?)', message.content) member = message.author role = discord.utils.get(member.guild.r

我想使用正则表达式来查看和接受来自用户的任何传入消息,并为他们分配一个角色。但前提是该用户尚未分配角色。我在运行代码时没有收到任何错误,但它不起作用

以下是我所拥有的:

@client.event
async def on_message(message):
    match = re.search(r'(.*?)', message.content)
    member = message.author
    role = discord.utils.get(member.guild.roles, name="Creators")
    if message.author == client.user:
        return

    if role not in member.roles:
        if match and message.channel.id == target_channel:
            # add member to role
            # send message to to users
            await message.channel.send(
                f'Hi {message.author}, welcome to the server! Don\'t forget to choose your #roles'
            )
            await discord.Member.add_roles(member, role)

要从消息上的
获取
成员
对象,可以使用
Member=message.author
。 然后只需执行
成员。添加角色(role)

您编写的:

await discord.Member.add_roles(member, role)

从文档中可以看到,传递的参数是
*角色,reason=None,atomic=True
<代码>角色
必须指定,
原因
原子
是可选的

您试图传递的
成员
不是有效的参数

discord.Member
是一个类。您需要获取该类的
实例
ctx.author
discord.Member
的一个实例

因此,最后的决定应该是:

await ctx.author.add_roles(role)

感谢大家的帮助,原来是一些很小的事情(我也很笨)阻止了它的工作


在将
message.channel.id
.id与
target\u channel
进行比较时,我忘记了channel id对象不是作为字符串输入的,但是target\u channel被设置为字符串,因此无法将它们视为相等。只需将
message.channel.id
转换为字符串就可以了。

*roles
是一个参数列表,这意味着它应该作为单独的参数传递,而不是列表。感谢您的更正。我删除了虚假信息。