discord.py开发角色创建日志机器人时出现AttributeError报错如何解决?
问题修复方案
错误原因
- 首先是
on_guild_role_create事件的入参结构使用错误:discord.py 中该事件仅接收1个参数,即新创建的Role对象,你定义了两个参数会把传入的Role赋值给第一个变量guild,才会触发Role对象没有audit_logs属性的报错。 - 其次审计日志动作枚举值使用错误:角色创建对应的枚举是
discord.AuditLogAction.role_create,不是discord.AuditLogChanges。
修复后代码
@client.event async def on_guild_role_create(role): # 从角色对象获取所属服务器 guild = role.guild # 修正审计日志动作枚举 logs = await guild.audit_logs(limit=1, action=discord.AuditLogAction.role_create).flatten() channel = guild.get_channel(channel_ID) # 此处替换为你自己的频道ID变量 # 提前判断日志和频道有效性,避免索引报错 if logs and channel: log = logs[0] if log.target == role: await channel.send(f'{log.user.mention} 创建了新角色 {role.mention}')
额外注意项
- 确保你的机器人账号已经被授予
查看审计日志的服务器权限,否则会拉取日志失败。 - 可根据需求调整消息格式,新增角色颜色、权限配置等字段的展示。
内容的提问来源于stack exchange,提问作者Doctor
相关产品推荐
相关产品推荐

