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

Discord Bot开发:如何接收用户发送的string、uint类型多变量?

Discord Bot多类型参数接收方案解答

你的当前思路可以跑通,但存在几个明显缺陷:

  • 特殊字符冲突:如果用户输入的字符串本身包含&,拆分逻辑会直接出错,比如用户要传hello&world,拆分结果会完全不符合预期
  • 缺少校验逻辑:拆分后你还要额外写代码判断参数数量是否正确、第二个参数是不是合法的非负整数,异常处理成本很高
  • 用户使用门槛高:你需要额外告知用户用&拼接参数,用户输错格式的概率非常高

下面是三种更优的实现方案,按推荐优先级排序:

方案1:使用Discord原生斜杠命令(最推荐)

Discord的斜杠命令本身支持定义不同类型的参数,你在注册命令的时候直接指定两个参数:第一个为string类型,第二个为integer类型,同时给整数参数设置最小值为0就能满足uint要求。
用户使用的时候Discord会自动弹出参数填写提示,还会提前做类型校验,不符合类型的内容根本发不出来,你在代码里可以直接通过interaction.options拿到已经解析好的两个参数,完全不需要自己做字符串拆分和校验。
举个例子:你注册名为/submit的命令,定义两个必填参数:

  • content:字符串类型
  • num:整数类型,最小值0
    用户输入/submit content:hello world num:5即可提交,你直接取对应字段的值就能用。

方案2:正则匹配格式化的普通消息

如果你不想用斜杠命令,还是想用普通消息触发,可以优化拆分逻辑:约定用户把带特殊字符/空格的字符串用英文双引号包裹,后面跟数字,比如用户发"hello world" 5,你用正则/"(.*?)"\s+(\d+)/就能直接提取出两个参数,比简单的split靠谱很多,只要用户按规则用引号包裹字符串,就不会出现特殊字符冲突的问题。

这种方案需要额外做异常处理:用户没加引号、数字为负、参数数量不对的场景都要给明确的报错提示。

方案3:多轮交互接收参数

如果参数规则经常变动,或者用户不想记格式要求,可以做多轮对话:用户触发命令后,Bot先回复提示用户输入字符串内容,收到用户的字符串后,再提示用户输入数字,分别存储两次的消息内容即可。这种方案用户学习成本最低,只是交互步骤多一些。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 04:57:07