Closed semilt closed 2 years ago
This pull request is being automatically deployed with Vercel (learn more).
To see the status of your deployment, click below or on the icon next to each commit.
🔍 Inspect: https://vercel.com/drincann/mirai-js/4oURShgEngz5DSETpuSsZG52B99s
✅ Preview: Canceled
[Deployment for 902ee6b canceled]
现在有一些问题需要解决。
不知道为什么,pre-commit hook 未成功运行 lint-staged,导致你提交的文件行尾换行是 LF,而不是 .eslintrc.json 中定义的 CRLF,能否在提交前额外运行一次 npm run lint
或 npx eslint --fix .
。
感觉关于 package.json 和 package-lock.json 的修改不适合出现在这次提交中,这个我在这次 PR 之后会检查一下。
麻烦在解决这些问题的基础上,不要添加新的 commit,因为尤其是行尾换行的问题可能造成一些不必要的麻烦。能否回退版本,在解决问题后 force push 到你的仓库。
你可以不用 close 这个 pr,后续修改会自动同步到这里。
一会你可以 reopen。
额外运行了lint命令以及eslint命令后所有的js文件仍然是LF,我再看一下怎么处理 所有的ts文件都没有问题
@Drincann 我注意到我在原仓库直接fork出来的代码中dist/node下除index.js外的所有js文件的行尾全部都是LF?
@Drincann 我注意到我在原仓库直接fork出来的代码中dist/node下除index.js外的所有js文件的行尾全部都是LF?
因为 .eslintignore 忽略了 dist 下的内容,构建的结果无所谓。
其中 dist/*.ts 是直接 copy 过去的,所以是 CRLF。另外,我这里 dist/node/index.js 也是 LF。
@Drincann 我注意到我在原仓库直接fork出来的代码中dist/node下除index.js外的所有js文件的行尾全部都是LF?
因为 .eslintignore 忽略了 dist 下的内容,构建的结果无所谓。
其中 dist/*.ts 是直接 copy 过去的,所以是 CRLF。另外,我这里 dist/node/index.js 也是 LF。
这样的话我还需要处理 dist 下的 js 文件全部为LF的问题吗?
不需要,我特意在 .eslintignore 中忽略了 dist 下的所有文件,就是为了防止 lint 影响到它们,导致提交的时候出现很多不必要的修改。
我这边无法reopen,我重新提交一遍吧
comment一下以后又可以了……
我修改了一下NodeList的名称,这样更加明了
const { Bot, Message, ForwardNode } = require('Mirai-js');
...
bot.sendForward({
friend: 'xxx',
nodeList: new ForwardNode().addForwardNodeById(id).addForwardNode({
senderId: 'xxx',
time: 1000,
senderName: 'master',
messageChain: new Message().addPlain('你好,我是bot1!')
})
}).then(forwardId => {...});
还有一些问题,我们慢慢解决。
还有一些问题,我们慢慢解决。
例如什么问题呢?
你可以直接在你的仓库提交修改。
好的,那我明天修改之后再提交
我在思考将其从根暴露出来是否正确,因为它本质上还是一个 MessageChain。
...
我还有另外一个想法,那就是让 sendMessage 的 message 允许接收一个像 ForwardMessage 的东西,让它实现 MessageChainGetable,这保证了语义,也保证了一条合并转发消息链里只有一个 NodeList,还省去了实现 sendForword 重用 sendMessage 存在的一些问题。
你有什么建议吗?
我觉得这个想法很不错,值得与当前的方案进行讨论和对比一下。
我认为将sendForward与sendMessage合并是很不错的,只需要在方法内部设置参数优先级或者检查唯一性就可以。不过这样对于Message类的设计需要考虑如何将ForwardNodeList合并进去,是要在除messageChain以外再添加一个私有变量NodeList吗?这部分我还不是很确定
现在 sendMessage 是抽象层,所以它不需要做任何改动,只需要扩展一个实现了 MessageChainGetable 的 ForwardMessage 类(或者还有更好的名字)即可。
关于如何合并到 Message 中,我有一个可行的方案,就是让 ForwardMessage 的构造过程作为 Message 的静态工厂方法暴露出去。
或者有更好的想法?
我拉了下你的仓库,貌似 LF 的问题没有解决。:open_mouth:
修改了一个版本,另外我本地所有src中的文件都是CRLF,可能是git自动转换了,我已经重新配置了git 这个版本删除了 sendForward 方法和 ForwardNode 类,并入 sendMessage 方法和 Message 类。 新的用法为
bot.sendMessage({
friend: 'xxx',
message: new Message().createForward().addForwardDataNode({
senderId: 'xxx',
senderName: 'name',
time: 1000,
messageChain: new Message().addPlain('转发测试')
}).addForwardIdNode(id)
});
在执行 createForward() 后这个Message类里的私有属性 isForward 变更为 True ,忽略已有的其他类型内容,并且新的其他类型的内容虽然会被添加进 messageChain 中但是最终在调用 getMessageChain 时也会被忽略。 在未调用 createForward() 时直接调用 addForwardDataNode 或 addForwardIdNode 会抛出异常
先 merge 了,接下来的修改交给我吧。
OK,要close吗?
不用
尝试着实现了单独的
Bot.sendForward
目前的用法是