MaoRum: 定投记录小助手
Mixin & Rum 开发学习作品
格式化信息,生成番茄记录。自动生成当日番茄记录图,可将对应的图发送到Rum的指定群组中。可获取指定群组的最新信息
快速入门
- 创建mixin机器人,创建说明
- 将私钥文件命名为
config.json
报错在config
目录下 - 同目录下保持
rum.yml
文件,内容如下 - 下载编译好的文件直接启动,或下载本仓库(on gitee, on github)后执行
go run main.go
windows-maorum-v0.1.0.zip
macos-maorum-v0.1.0.tar.gz
linux-maorum-v0.1.0.tar.gz
rum:
host: 127.0.0.1 #
port: 1799 # 节点与网络-> 节点参数 -> 端口
cert.file: path\to\rum-app\resources\quorum_bin\certs\server.crt # rum安装目录下的文件 rum-app\resources\quorum_bin\certs\server.crt
post.group.id: valid-post-rum-group-id # 群组详情 -> ID 分享tomato的群组
read.group.id: valid-read-rum-group-id # 群组详情 -> ID 读取信息的群组
config.json文件内容类似——
{
"pin": "11111",
"client_id": "xxx-xx-xx-xx-xxx",
"session_id": "xxx-1e57-4bxxx65-xxx-xxxx",
"pin_token": "xxxxx-xxxx",
"private_key": "xxxxxxxx"
}
交互逻辑
- 回复
GAO
,答复所有可选项 - 回复
gao
,答复选项类型(”人生五味”),选择对应的类型后,自动生成一条番茄记录 - 回复
mao
,生成当日的番茄图 - 回复
rum
,将当日的番茄图和总结信息发送到指定的Rum群组(需要配置rum信息) - 回复
mur
(rum
的倒序),读取指定Rum群组的最新一条信息
选项类型的人生五味: 取拼音首字母作为命令行参数(多么有本土气息~)
-
读书
,-D
-
健身
,-J
-
帮朋友
,-B
-
陪家人
,-P
-
工作
,-G
番茄记录
- 交互式生成,输入
gao
,返回选项列表;选择对应的选项,返回不同的时长;选择对应时长,完成一条番茄结论。也可以按照最后的格式,一次性完成。
例如,输入-J20,健身20分钟
。表示刚刚完成了20分钟的健身训练。其中-J
表示类型,20
表示时长分钟数;健身20分钟
表示评论内容,可省略。使用英文字符,
作为分隔符号。
简化输入:-J20
即可生成一条番茄记录。
这种记录的对应项目开始时间根据输入时间和时长自动计算。
- 同时指定:项目类型,开始时间,时长。使用固定格式
-J, 2021-12-30 12:30, 30, 完成跑步五公里
使用英文字符,
作为分隔符号,分别输入项目类型
,开始时间
,时长
,评论
。其中开始时间的格式为yyyy-mm-dd HH:MM
,评论
内容可省略。
上面的积累可简化为-J, 2021-12-30 12:30, 30
- 图片坐标轴说明。横轴24小时扩大10倍,范围会自动限定在项目发生的时间区域内,
130
表示13点;纵坐标表示分钟数。
已知问题
- 没有检查项目是否发生在重复时间
-
读取Rum群组的图片过大导致上传失败,程序报错忽略大图
下一步计划
- 支持指定开始时间(目前的逻辑是
记录的时刻 - 时长
为默认的开始时间) - 部署机器人,直接添加机器人即可使用(依赖rum的linux环境编译和群组添加功能,应该已经支持,我还没进行实践)
- 番茄项目格式信息可配置(目前采用的是”锤子手机文青“配色)
开发手记
BotDemo是最初的学习,使用golang模仿官方视频的Node实现,学习mixin机器人api。
后续还给golang的sdk提了两个pr。发送群组按钮的功能还没有发布,所有依赖需要下载官方的master版本之后,使用本地代码替代。
replace github.com/MixinNetwork/bot-api-go-client => D:\gogogo\bot-api-go-client
常用的开发操作都有涉及:字符串处理、文件处理、画图、数据库操作、网络交互、配置信息
- 色彩转换使用golang playground的colors包
- 画图操作根据plot的wiki实现
- 数据库使用gorm包,采用Sqllite数据库
- rum的交互是本地生成了quorum的swagger文件
启动swagger服务依赖swaggo生成的docs包。scripts文件夹下提供了对应的生成脚本,结果我自己研究了半天,只生成了个空的swagger接口文档。
最终在wsl环境下生成,复用即可。
陆续开发了一段时间,应该一开始就使用git记录,查看本地文件的修改时间,可以确定最早开工时间是2021-12-20 11:25
广告时间
读到这里的都是真爱。欢迎加入Rum群组,重新提供云服务上的24小时群组,种子信息如下,Mixin群组 点击加入MaoRum用户组MaoRum定投记录小助手
MaoRum@Ali
{
"genesis_block": {
"BlockId": "40954a2e-6683-4c15-8d1b-3a9bf8f02f7b",
"GroupId": "9d6acf79-5372-47ae-b8fb-ad8581a107a4",
"ProducerPubKey": "CAISIQKiHLLvKfUwlT/dJu+O7fYtp6jeqRGgiICvqV7eVfwUgw==",
"Hash": "jO+PtO76NiyxnJHPKWhuhjkvFK3/Qp29BSvoF0rFo1E=",
"Signature": "MEUCIBpjkIh9jSxn/H52iYFq2njRCgXTq4WLF2MeBgDpbFEgAiEA5uxeIeJgwu4HUodobURP8wes/8oaoRSF10MtWVu+gXw=",
"TimeStamp": "1641193768392650291"
},
"group_id": "9d6acf79-5372-47ae-b8fb-ad8581a107a4",
"group_name": "MaoRum@Ali",
"owner_pubkey": "CAISIQKiHLLvKfUwlT/dJu+O7fYtp6jeqRGgiICvqV7eVfwUgw==",
"consensus_type": "poa",
"encryption_type": "public",
"cipher_key": "fa4772726a9090540ac33b8cbb600004ba8a91beb7f92e5cfda8d3754f2e7afb",
"app_key": "group_timeline",
"signature": "304402204fa3848ff1fabf361c306a77e52cd68fa0dae4a9b7441445f5ec846140d6bb8e022013c034508e58166321d1b447028735942fee4bf4a6e76919b2e66c81de89de04"
}
MaoRum@Tencent
{
"genesis_block": {
"BlockId": "6a27a83c-cb95-4d91-ad7d-bb223e17d8e9",
"GroupId": "a56ea0d0-1fb3-4aff-b729-2be0083be99b",
"ProducerPubKey": "CAISIQKqu17ot1gDMY2KcVnPhXK5pRNUHZrWyycRhNm+dALWSA==",
"Hash": "L5c3rt6Cv+G60t4it8Fo4vvkb1w+E29Vo3T53tsUngE=",
"Signature": "MEYCIQCxX6ZG6VKY6SJhr8P2hnqj24OlRcE9Sg+CVPLaS4jclQIhAPsnQwIMTjigMKgdLIZPDEbHQtLL7ZgbSAmAJzfksFuN",
"TimeStamp": "1641194121994526104"
},
"group_id": "a56ea0d0-1fb3-4aff-b729-2be0083be99b",
"group_name": "MaoRum@Tencent",
"owner_pubkey": "CAISIQKqu17ot1gDMY2KcVnPhXK5pRNUHZrWyycRhNm+dALWSA==",
"consensus_type": "poa",
"encryption_type": "public",
"cipher_key": "7fef1e18d53986915a3b0bb9ee22a47b8eaf989012172b161bafda589bc22f54",
"app_key": "group_timeline",
"signature": "304502207842bd87a8d1bd434d6da4ddb3af93388b71ffe663fba679cc0f6682a455c84d0221009a42f9bb0f5c9012363ac8fae57c2ea32a33c7a2ba3a87ab2857cf88940b0e1c"
}