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

如何在BetterDiscord插件中从设置获取输入变量?

如何获取Discord插件设置中的输入变量

嘿,刚入门Discord插件开发碰到这个问题太正常了!我来给你梳理下目前主流的两种插件框架(BetterDiscord和Vencord)里,获取用户在设置中输入变量的具体方法,都是非常基础且实用的操作~

在BetterDiscord中获取设置变量

BetterDiscord自带了专门的Settings API来管理插件设置,步骤很清晰:

1. 先注册你的设置项

首先你需要定义好插件的设置面板,比如添加一个文本输入框让用户输入内容:

// 调用BetterDiscord的Settings API
const settings = BdApi.Settings;

// 注册插件设置
settings.register("MyFirstPlugin", { // 第一个参数是你的插件唯一标识ID
  category: "基础设置",
  settings: [
    {
      type: "textbox",
      id: "customNickname", // 这个ID是后续获取值的关键
      name: "自定义昵称",
      note: "输入你想要在插件中使用的自定义昵称",
      defaultValue: "", // 默认空值
    }
  ]
});

2. 获取用户输入的变量

当用户在设置面板输入内容后,你可以通过get方法拿到对应的值:

// 格式:settings.get(插件ID, 设置项ID)
const userNickname = settings.get("MyFirstPlugin", "customNickname");
console.log("用户设置的昵称:", userNickname); // 输出用户输入的内容

在Vencord中获取设置变量

Vencord的设置系统更偏向React生态,但同样有简洁的API可以用:

1. 定义设置Schema

先通过definePluginSettings来声明你的设置项:

import { definePluginSettings } from "@api/Settings";

// 导出设置对象,方便后续调用
export const settings = definePluginSettings({
  customStatusText: {
    type: "string",
    default: "",
    description: "输入你想要展示的自定义状态文本",
  }
});

2. 获取设置值

  • 普通JS代码中:直接访问设置对象的store属性就能拿到值
const statusText = settings.store.customStatusText;
console.log("用户设置的状态:", statusText);
  • React组件中:可以用useSetting钩子来实现响应式获取(值变化时自动更新)
import { useSetting } from "@api/Settings";

function MyPluginComponent() {
  // 解构出当前值和修改方法
  const [statusText, setStatusText] = useSetting(settings.keys.customStatusText);
  
  return (
    <input 
      value={statusText} 
      onChange={(e) => setStatusText(e.target.value)}
      placeholder="输入自定义状态"
    />
  );
}

通用提示

不管你用的是哪种插件框架,核心逻辑都是一致的:先通过框架提供的API注册你的设置项(给每个输入项分配唯一ID),再通过框架的读取API,结合插件标识和设置项ID来获取用户输入的变量。如果是其他小众框架,建议去查它的官方文档,找「Settings API」相关的读取方法,思路都是相通的~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:55:46