Python新手如何开发Discord UwU词频统计工具并向uwu.json存储数据
Discord UwU词频统计机器人实现方案
1 修正JSON存储格式
你给出的示例格式不符合JSON规范,会导致读写失败,正确的存储结构如下:
{ "852419718819348510": { "uwu": 1, "awo": 12 }, "其他用户ID": { "uwu": 2 } }
JSON规范要求:键必须为字符串,键值对使用冒号分隔,不同字段用逗号分隔,不支持等号赋值语法
2 依赖安装
- 安装Discord Python SDK:
pip install discord.py - 内置
json模块无需额外安装
3 完整实现代码
import discord import json import os # 配置项 UWU_DATA_FILE = "uwu.json" BOT_TOKEN = "你的机器人Token" # 要统计的关键词列表,可自行扩展 TARGET_WORDS = ["uwu", "awo"] # 加载统计数据 def load_uwu_data(): if not os.path.exists(UWU_DATA_FILE): return {} with open(UWU_DATA_FILE, "r", encoding="utf-8") as f: try: return json.load(f) except json.JSONDecodeError: # 文件损坏时重置为空 return {} # 保存统计数据 def save_uwu_data(data): with open(UWU_DATA_FILE, "w", encoding="utf-8") as f: json.dump(data, f, indent=2, ensure_ascii=False) # 初始化机器人 intents = discord.Intents.default() intents.message_content = True bot = discord.Client(intents=intents) uwu_data = load_uwu_data() @bot.event async def on_ready(): print(f"已登录为 {bot.user}") @bot.event async def on_message(message): # 忽略机器人自己发的消息 if message.author == bot.user: return user_id = str(message.author.id) msg_content = message.content.lower() # 初始化用户数据 if user_id not in uwu_data: uwu_data[user_id] = {word:0 for word in TARGET_WORDS} # 统计关键词出现次数 for word in TARGET_WORDS: count = msg_content.count(word) if count > 0: uwu_data[user_id][word] += count # 保存数据 save_uwu_data(uwu_data) if __name__ == "__main__": bot.run(BOT_TOKEN)
4 部署配置说明
- 前往Discord开发者门户创建机器人应用,获取机器人Token
- 在开发者后台的「Bot」设置页开启
Message Content Intent权限 - 将机器人邀请到对应服务器,授予「读取消息/查看频道」「发送消息」权限
- 替换代码中的
你的机器人Token为实际值后运行脚本即可
5 常见问题排查
- JSON读写报错:检查
uwu.json文件是否被手动修改损坏,删除损坏文件后脚本会自动重建 - 机器人无法统计消息:确认
Message Content Intent权限已开启,机器人在频道内有对应权限 - 匹配规则不符合预期:可将
msg_content.count(word)替换为全词匹配逻辑,避免短词被误匹配
内容的提问来源于stack exchange,提问作者SkypeGirl
相关产品推荐
相关产品推荐

