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
是一个参数列表,这意味着它应该作为单独的参数传递,而不是列表。感谢您的更正。我删除了虚假信息。