Arondight / Adachi-BOT

一个在 QQ 中运行的原神助手
MIT License
344 stars 75 forks source link

不在命令中强制使用空白字符分割参数 #334

Closed Arondight closed 2 years ago

Arondight commented 2 years ago

这样可以避免硬编码而且能把关键词抓出来,只要正则写的够好,我想也不会频繁出现误响应的问题

例如之前 我的 胡桃 是用若干个空白字符分割,既然已经知道了 name 是胡桃 ,似乎没必要非得抓着空格不放。

另外也带来了两个问题:

  1. 目前不少插件没有做入口验证,按照约定应该加一个,但是当前只有口头约定,加不加没有什么影响,不加还清晰一些。但是如果要改正则,有的插件不加功能验证反而会造成困惑
  2. 正则抓关键字应该放到入口验证的块内,最好每个入口一个独立的函数处理,工作量可能会稍微大一些
Arondight commented 2 years ago

我觉得还需要在 utils 下写一个关键词抓取函数,给出用于分割的 name 例如 我的 ,给出要抓关键字的数量其后若干个或者抓取所有

Arondight commented 2 years ago

function findKeywords (msg, name, delimiter = []) 差不多是这种感觉,不需要告诉函数要抓几个关键字,全都切分塞进一个数组要用几个调用者本身就知道,这个参数多此一举。

只是上班途中的一个想法,细节我还得想想,不一定就这么好做。

Arondight commented 2 years ago

function findKeywords (msg, name, keywords = [])

const words = findKeywords(msg, name, [“\d+?”, “(“ + on + “|” + off + “)”]); # 点歌权限 12345678 on

const words = findKeywords(msg, name, [“\d+?”, “.+”]); # 回话 12345678 第一句话 第二句话 第三句话

Arondight commented 2 years ago

抓关键字时每抓出来一个都裁剪字符串再进行下一次抓取,直到作为返回值的数组填充完毕

Arondight commented 2 years ago

@Mark9804 如果我周天做了这个,改动会非常多,你 merge 完毕后,直接再提交一个 revert 即可,这样不会影响到你本地的修改,而且这些我想也不是必需的,只是使用起来稍稍方便了一点,然后就是代码看上去好看了许多,我觉得对用户来说没有什么区别。

mark9804 commented 2 years ago

这个功能我也需要,周天的时候我自己解决fork的代码冲突问题就可以

Arondight commented 2 years ago

这周改代码改的太累了,我摸了,下周在做这个功能吧……

# user @ CentOS-8-Tencent in ~/Repo/my/Adachi-BOT on git:dev o [20:47:25]
$ g pl -p                                                                                                         on git:dev↓11| o
Enter passphrase for key '/home/user/.ssh/id_rsa':
Updating 22d78b8..9405001
Fast-forward
 .eslintrc.json                                             |   4 +-
 .prettierrc.json                                           |   2 +-
 README.md                                                  |  15 ++--
 app.js                                                     | 118 ++++++++++++-------------------
 config_defaults/command.yml                                |   1 -
 config_defaults/command_master.yml                         |  32 ++++++---
 config_defaults/setting.yml                                |   9 ++-
 "docs/\345\274\200\345\217\221\346\214\207\345\274\225.md" |  99 +++++++++++++++++++-------
 src/plugins/aby/aby.js                                     |  64 +++++++++++++++++
 src/plugins/aby/index.js                                   | 104 ++++-----------------------
 src/plugins/artifacts/artifacts.js                         | 245 +++++++---------------------------------------------------------
 src/plugins/artifacts/data.js                              | 233 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 src/plugins/artifacts/index.js                             | 115 ++++++------------------------
 src/plugins/artifacts/init.js                              |   9 +++
 src/plugins/artifacts/strengthen.js                        |  26 +++++++
 src/plugins/card/card.js                                   |  44 ++++++++++++
 src/plugins/card/index.js                                  |  82 ++++------------------
 src/plugins/character/character.js                         | 116 ++++++++++++++++++++++++++++++
 src/plugins/character/index.js                             | 157 ++++-------------------------------------
 src/plugins/gacha/data.js                                  | 226 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 src/plugins/gacha/gacha.js                                 | 242 +++------------------------------------------------------------
 src/plugins/gacha/index.js                                 | 180 +++++++++--------------------------------------
 src/plugins/gacha/init.js                                  |  16 +++++
 src/plugins/gacha/pool.js                                  |  31 ++++++++
 src/plugins/gacha/select.js                                |  64 +++++++++++++++++
 src/plugins/master/index.js                                | 235 +++++++++++++++----------------------------------------------
 src/plugins/master/parse.js                                |  10 +++
 src/plugins/master/reply_auth.js                           |  30 ++++++++
 src/plugins/material/index.js                              |  66 +++++------------
 src/plugins/material/material.js                           |  25 +++++++
 src/plugins/music/data.js                                  | 145 ++++++++++++++++++++++++++++++++++++++
 src/plugins/music/index.js                                 |  60 +++-------------
 src/plugins/music/music.js                                 | 151 ++++-----------------------------------
 src/plugins/overview/index.js                              |  71 ++++---------------
 src/plugins/overview/info.js                               |  36 ++++++++++
 src/plugins/package/index.js                               |  91 +++---------------------
 src/plugins/package/package.js                             |  55 +++++++++++++++
 src/plugins/rating/data.js                                 | 134 +++++++++++++++++++++++++++++++++++
 src/plugins/rating/index.js                                | 241 +++-----------------------------------------------------------
 src/plugins/rating/rating.js                               |  51 ++++++++++++++
 src/plugins/save/index.js                                  |  74 +++-----------------
 src/plugins/save/save.js                                   |  58 +++++++++++++++
 src/plugins/tools/feedback.js                              |  33 +++------
 src/plugins/tools/index.js                                 |  59 +++++++---------
 src/plugins/tools/menu.js                                  |  12 ++--
 src/plugins/tools/prophecy.js                              |  20 +++---
 src/plugins/tools/quote.js                                 |   9 ++-
 src/plugins/tools/roll.js                                  |  11 ++-
 src/plugins/tools_master/boardcast.js                      |  28 +++-----
 src/plugins/tools_master/cookies_invalid.js                |  14 +---
 src/plugins/tools_master/count.js                          |  10 +--
 src/plugins/tools_master/index.js                          |  55 ++++-----------
 src/plugins/tools_master/reply.js                          |  14 ++--
 src/plugins/tools_master/search.js                         |  26 +++----
 src/plugins/tools_master/status.js                         |  15 ++--
 src/utils/api.js                                           |  36 +++-------
 src/utils/auth.js                                          |  52 ++++++++++----
 src/utils/cache.js                                         |   5 +-
 src/utils/config.js                                        | 154 ++++++++--------------------------------
 src/utils/cookie.js                                        |  24 ++-----
 src/utils/database.js                                      |  38 ++--------
 src/utils/detail.js                                        |  95 +++++--------------------
 src/utils/file.js                                          |   1 -
 src/utils/id.js                                            |  13 +---
 src/utils/init.js                                          |   5 +-
 src/utils/load.js                                          | 145 +++++++++++++++++---------------------
 src/utils/render.js                                        |   8 +--
 src/utils/tools.js                                         |   3 +-
 src/views/component/card/card.js                           |  13 ++--
 src/views/component/character/character.js                 |  30 ++------
 src/views/genshin-aby.html                                 | 163 +++++++++---------------------------------
 src/views/genshin-artifact.html                            |  12 +---
 src/views/genshin-card.html                                |  46 +++---------
 src/views/genshin-character.html                           |  42 +++--------
 src/views/genshin-gacha.html                               |  37 ++--------
 src/views/genshin-info.html                                |  46 +++---------
 src/views/genshin-overview.html                            | 103 +++++----------------------
 77 files changed, 2185 insertions(+), 2959 deletions(-)
 create mode 100644 src/plugins/aby/aby.js
 create mode 100644 src/plugins/artifacts/data.js
 create mode 100644 src/plugins/artifacts/init.js
 create mode 100644 src/plugins/artifacts/strengthen.js
 create mode 100644 src/plugins/card/card.js
 create mode 100644 src/plugins/character/character.js
 create mode 100644 src/plugins/gacha/data.js
 create mode 100644 src/plugins/gacha/init.js
 create mode 100644 src/plugins/gacha/pool.js
 create mode 100644 src/plugins/gacha/select.js
 create mode 100644 src/plugins/master/parse.js
 create mode 100644 src/plugins/master/reply_auth.js
 create mode 100644 src/plugins/material/material.js
 create mode 100644 src/plugins/music/data.js
 create mode 100644 src/plugins/overview/info.js
 create mode 100644 src/plugins/package/package.js
 create mode 100644 src/plugins/rating/data.js
 create mode 100644 src/plugins/rating/rating.js
 create mode 100644 src/plugins/save/save.js
Arondight commented 2 years ago

这周再不做,其他的坑就填不上了