斜杠命令(/help)提供菜单、自动补全和经过校验的选项;前缀命令($help)则是普通消息,输入更快,对于 2022 年之前就使用过 Discord 的人来说也很熟悉。你无需二选一:Noxyr 让每条命令都支持两种方式,默认前缀为 $,每个服务器都可以更改。下面介绍两者实际的区别,以及各自在什么情况下更有优势。

Typing $help as a plain message and picking /help from the slash menu both reach the same bot reply. Prefix command (any message) $help Slash command (menu) /help /helpEvery command, grouped /help category:Tickets N Noxyr help Same reply, same permissions, either way.

简短的历史

多年来,每个机器人都使用前缀:!play、?ban、-help。后来 Discord 推出了斜杠命令,并在 2022 年通过取消大多数机器人读取消息内容的权限,要求认证机器人使用斜杠命令。斜杠命令因此成为标准,一代用户从未学过前缀的用法。但仍有许多服务器更喜欢直接输入 $help,而不是滚动浏览菜单;而且手机键盘让斜杠菜单操作起来很麻烦,因此同时支持两者的机器人能让所有人都满意。

斜杠命令的优势

  • 便于发现。输入 /,所有命令都会连同说明一起出现,无需帮助页面。
  • 参数校验。频道选项只接受频道,数字选项只接受数字。错误会在机器人处理之前就被拦截。
  • 自动补全。在输入时搜索歌曲、商品或播放列表,只有斜杠命令可以做到。
  • 表单。弹出式表单(模态框),例如 /quick catalog add 或建议箱,只能通过斜杠交互打开。
  • 私密回复。仅你自己可见的临时回复,是斜杠命令的功能。

前缀命令的优势

  • 速度。$skip 只需五次击键。无需菜单,也无需等待选择器加载。
  • 任何客户端、任何场景。消息就是消息,在最老的手机上,或通过其他平台的桥接,都能使用。
  • 肌肉记忆。用 ! 命令输入了十年的老成员和工作人员,不想重新学习。
  • 复制粘贴。工作人员指南可以写“运行 $ticket close reason:spam”,大家直接复制粘贴即可。

Noxyr 如何同时支持两者

每条斜杠命令都有一个同名的前缀版本,子命令和选项也完全相同。Noxyr 会将消息解析为斜杠命令会生成的相同结构,然后运行相同的代码,因此权限和行为完全一致。以下几条规则需要了解:

  • 子命令紧跟命令名:$ticket close、$music settings、$referrals link。
  • 选项格式为 名称:值:$sticky set text:"Read the rules" delay:300。引号可以将包含空格的内容保持在一起。未命名的单词会按顺序填入必填选项,因此 $play never gonna give you up 可以直接使用。
  • 提及或名称均可使用:#channel、@role、原始 ID,或频道或身份组的纯名称。
  • 是与否:布尔选项接受 yes/no、on/off、true/false。
  • 文件:将图片附加到消息中,即可填入附件选项。
  • 私密回复会发送到你的私信。当某条命令的回复只应给你本人看时,回复会发送到你的私信,并附注说明来自哪个服务器,因为普通消息无法设为临时可见。
  • 表单仅限斜杠使用。如果某条命令会打开弹出表单,其前缀版本会提示你改为运行斜杠命令。

更改前缀

/prefix view 显示当前前缀,/prefix set prefix:! 用于更改(一到五个字符,不含空格,因此 !、?、n! 或 nx. 都可以),/prefix reset 则恢复为 $。前缀按服务器单独设置,你的自定义机器人也使用同一个前缀。如果服务器中的其他机器人已经在使用 !,请选择其他前缀,以免两个机器人同时响应同一条消息。

你的服务器应该使用哪一种?

两者都用。让新成员使用斜杠菜单,因为它本身就具有引导性;让工作人员和老成员输入前缀命令。唯一需要统一的是文档:请用同一种风格编写内部指南,以免有人怀疑 $ 和 / 的行为是否不同。在 Noxyr 上两者的行为完全相同。

常见问题

前缀命令需要消息内容意图吗?需要,而 Noxyr 已经具备该权限。如果你运行的是自定义机器人,那么在设置时需要开启的两项意图中就包括它。

可以关闭前缀命令吗?如果你希望让它们不那么显眼,可以选择一个不常见的前缀;斜杠命令无论如何都会继续工作。

前缀在不同服务器之间是共享的吗?不是,每个服务器都有自己的前缀。

查看完整的命令列表,或添加 Noxyr 后尝试输入 $help。