如何让discord.py机器人仅在特定角色发送消息时执行动作?
我想做一个机器人,每当某个角色发送消息时,它就会自动发送一条消息。我的问题是,这样做是否可能?因为我看到的Discord机器人通常都是在收到命令后才发送消息,所以我很好奇,这种情况是否可行。
1 个回答
0
是的,你可以设置一个命令,只有特定角色的用户才能触发这个命令。
如果这是一个命令,你可以使用 @app_commands.checks.has_role
或者 @app_commands.checks.has_any_roles
来检查用户的角色。
举个例子:
@client.command
@app_commands.checks.has_role("name")
async def my_command(ctx):
# do something
@client.command
@app_commands.has_any_role("role1","foo",11132312313213)
async def my_command1(ctx):
#do something
你也可以在 on_message
里检查用户是否有某个角色,方法是使用 discord.Member.get_role()
。
举个例子:
@client.event
async def on_message(message):
if message.author.get_role(role_id):
#do something
文档参考: