discord.py whois指令用户角色列表显示No roles异常修复
问题根因
Discord 中所有服务器成员默认都会持有@everyone角色,原有逻辑在遍历角色列表时,只要检测到@everyone就直接往结果列表追加No roles,没有判断用户是否存在其他自定义角色,因此无论用户有没有额外角色,No roles都会被拼接到最终输出里,出现异常展示。
修复方案
直接替换原代码中角色列表处理的片段,调整判断逻辑:先过滤掉默认的@everyone角色收集所有有效自定义角色,仅当有效角色列表为空时才返回无角色提示。
替换后的角色处理代码:
# 过滤@everyone默认角色,收集用户持有的所有自定义角色 rlist = [role.mention for role in user.roles if role.name != "@everyone"] # 按是否存在自定义角色生成最终展示内容 b = " | ".join(rlist) if rlist else "No roles"
额外优化提示:原代码中角色字段传值写的
value=''.join([b])属于冗余写法,直接写value=b即可,展示效果完全一致。
修复后效果
- 当用户持有除
@everyone外的自定义角色时:仅拼接展示所有实际角色,不会混入No roles提示 - 当用户没有任何自定义角色时:正常显示
No roles提示,符合需求预期
内容的提问来源于stack exchange,提问作者Tahikato
相关产品推荐
相关产品推荐

