使用Python导出Discord用户到JSON遇Snowflake类型键错误
解决方法
错误原因
TypeError的问题根源在于你用Member.id(Snowflake对象)作为字典的键,而JSON序列化仅支持字符串、数字、布尔值或None这类基础数据类型,无法识别自定义的Snowflake对象。同时你还需要过滤掉bot用户,并调整输出格式以匹配需求。
修改后的代码
import interactions from interactions import Button, ButtonStyle, SelectMenu, SelectOption, ActionRow, spread_to_rows import json memberslist = await guild.get_all_members() # 过滤非bot用户,转换ID为字符串,按要求格式整理数据 membersdict = { str(member.id): {"Username": member.user.username} for member in memberslist if member.user.bot is None } with open("playersbackup.json", "w") as n: json.dump(membersdict, n, indent=4)
关键修改点
- 将
Member.id转为字符串:str(member.id),确保JSON能正常识别字典的键 - 添加过滤条件:
if member.user.bot is None,只保留非bot用户 - 调整值的结构:从直接存储Member对象改为仅保留包含用户名的子字典,完全匹配你需要的JSON格式
内容的提问来源于stack exchange,提问作者plerpsandplerps
相关产品推荐
相关产品推荐

