You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Discord.py如何获取角色创建者信息?无关联函数时的解决办法

解决Discord机器人获取角色创建者的问题

你提到的on_guild_role_create事件确实没有直接返回角色创建者的信息,要实现限制特定用户创建角色的需求,有两种可行的方案:

1. 通过服务器审计日志查询创建者

Discord服务器的审计日志会记录所有角色创建操作,你可以在on_guild_role_create触发后,查询对应服务器的最新角色创建审计日志条目,从中提取创建者信息。

代码示例(以discord.py为例)

@bot.event
async def on_guild_role_create(role):
    # 查询服务器最新的角色创建审计日志,限制返回1条
    async for entry in role.guild.audit_logs(action=discord.AuditLogAction.role_create, limit=1):
        # 确保审计日志条目对应当前创建的角色(避免短时间多角色创建的误判)
        if entry.target.id == role.id:
            creator = entry.user
            # 定义需要限制的用户ID列表
            restricted_user_ids = [123456789012345678, 987654321098765432]
            if creator.id in restricted_user_ids:
                await role.delete(reason="限制滥用角色创建权限")

注意事项

  • 机器人需要拥有**查看审计日志(View Audit Log)**的服务器权限,否则无法查询审计日志。
  • 加入entry.target.id == role.id的判断是为了避免短时间内多个角色创建时,拿到错误的审计日志条目。

2. 直接修改服务器权限(更高效的方案)

如果不需要复杂的动态限制逻辑,最直接的方法是在Discord服务器设置中,直接取消特定用户/角色的**创建角色(Create Roles)**权限。这样这些用户根本无法创建角色,不需要机器人事后删除,效率更高。

内容的提问来源于stack exchange,提问作者Iirus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 08:29:55