You need to enable JavaScript to run this app. 如何用Python/JS为DND Discord服务器开发可存储角色的Discord bot
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python/JS为DND Discord服务器开发可存储角色的Discord bot

DND Discord Bot 角色信息存储实现指南

核心逻辑先讲透

你平时写普通Python用的全局变量、类实例变量,本质都是存在bot进程的运行内存里的——只要bot进程重启(不管是本地调试关了窗口、云端服务重启、代码更新重新部署),内存里存的所有角色数据会全部清空。这就是你现在卡壳的本质:普通变量没有突破进程生命周期的持久化能力,根本扛不住Discord bot长时间运行的场景需求。
要实现稳定存DND角色信息的能力,根本不需要从零搞复杂的存储框架,核心就是把内存里的变量值,在修改后同步写到磁盘或者独立存储介质里,让数据不再跟着进程重启消失就行。

分技术栈的可落地方案(按入门难度从低到高排序)

方案1:零依赖本地JSON文件存储(最适合入门,Python/JS通用实现逻辑)

这个方案完全不需要安装第三方数据库、搭建额外服务,刚好适配你和好友的小规模DND服务器(撑死存几十上百个角色,性能完全够用)。
实现逻辑拆解:

  • 专门创建一个本地json文件,用来存储所有结构化的角色数据
  • bot启动时,自动读取这个json文件的内容,加载回你已经熟悉的内存字典结构里
  • 每次用户新增、修改角色信息时,先更新内存里的字典数据,再立刻把最新的字典内容写回这个json文件
    Python端的极简实现示例(完全用标准库,不需要额外装包):
import json
from pathlib import Path

# 定义本地存储文件路径
DATA_STORE = Path("dnd_character_db.json")

# bot启动时加载已有存量数据
def load_all_data():
    if not DATA_STORE.exists():
        # 首次运行时初始化空数据结构
        return {}
    with open(DATA_STORE, "r", encoding="utf-8") as f:
        return json.load(f)

# 数据修改后同步写回本地文件
def save_all_data(data):
    with open(DATA_STORE, "w", encoding="utf-8") as f:
        json.dump(data, f, ensure_ascii=False, indent=2)

数据结构设计实用技巧:用Discord用户的ID当顶层存储键,从根源上避免不同用户的角色数据串号,参考结构:

{
  "1234567890987654321": {
    "characters": [
      {
        "name": "瓦利索恩",
        "age": 127,
        "class": "木精灵游侠",
        "current_hp": 32
      }
    ]
  }
}

JS栈的实现逻辑完全一致,用内置的fs模块读写json文件即可,没有额外学习成本。
这个方案的局限性:如果你的bot部署在没有持久化磁盘的免费Serverless平台上,本地文件会在平台回收容器时被清空,不适合这类部署场景。

方案2:嵌入式单文件数据库(无额外服务,查询能力更强)

如果觉得json文件做条件检索太麻烦,又不想单独启动独立的数据库服务,可以用嵌入式数据库方案:

  • Python栈直接用标准库自带的sqlite3,本质也是一个存放在本地磁盘的单文件数据库,不需要启动独立的数据库进程,支持结构化SQL查询(比如直接检索“所有力量值超过18的角色”,比遍历json文件效率高很多)
  • JS栈可以用better-sqlite3,逻辑和Python的sqlite完全对齐,同样是单文件存储
    这个方案比json文件的稳定度更高,支持并发写操作,不会因为频繁读写文件出现数据损坏的问题。

实用避坑提醒

  • 小规模好友服务器完全没必要一开始就上重量级的独立数据库(比如Postgres、MongoDB),徒增维护成本,等后面数据量真的到了单文件存不下的程度,再做数据迁移也完全来得及
  • 写本地文件/数据库的时候,简单加一点异常捕获,避免因为文件权限不够、磁盘满了这类问题直接把bot搞崩
  • 不要往明文存储里放敏感权限相关的内容,这类场景再加对应加密逻辑就好

内容的提问来源于stack exchange,提问作者Raging Ultimate

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.03 13:36:04