如何让discord.py机器人仅在特定角色发送消息时执行动作?

-2 投票
1 回答
25 浏览
提问于 2025-04-13 02:43

我想做一个机器人,每当某个角色发送消息时,它就会自动发送一条消息。我的问题是,这样做是否可能?因为我看到的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

文档参考:

撰写回答