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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 02:45:00