l.Mr
@156157
[开发手记] MaoRum: 定投记录小助手(一)
2021-12-30 09:51
Words count: 2584
MaoRum: "定投"记录机器人。交互生成番茄记录。可生成当日番茄记录图,可将对应的图发送到Rum的指定群组中。可获取指定群组的最新信息

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"
}

Solstice Sun and Milky Way

交互逻辑

  • 回复GAO,答复所有可选项
  • 回复gao,答复选项类型(”人生五味”),选择对应的类型后,自动生成一条番茄记录
  • 回复mao,生成当日的番茄图
  • 回复rum,将当日的番茄图和总结信息发送到指定的Rum群组(需要配置rum信息)
  • 回复mur(rum的倒序),读取指定Rum群组的最新一条信息

选项类型的人生五味: 取拼音首字母作为命令行参数(多么有本土气息~)

  • 读书,-D
  • 健身,-J
  • 帮朋友,-B
  • 陪家人,-P
  • 工作,-G

番茄记录

  1. 交互式生成,输入gao,返回选项列表;选择对应的选项,返回不同的时长;选择对应时长,完成一条番茄结论。也可以按照最后的格式,一次性完成。

例如,输入-J20,健身20分钟。表示刚刚完成了20分钟的健身训练。其中-J表示类型,20表示时长分钟数;健身20分钟表示评论内容,可省略。使用英文字符,作为分隔符号。
简化输入:-J20即可生成一条番茄记录。

这种记录的对应项目开始时间根据输入时间和时长自动计算。

  1. 同时指定:项目类型,开始时间,时长。使用固定格式-J, 2021-12-30 12:30, 30, 完成跑步五公里

使用英文字符,作为分隔符号,分别输入项目类型,开始时间,时长,评论。其中开始时间的格式为yyyy-mm-dd HH:MM,评论内容可省略。

上面的积累可简化为-J, 2021-12-30 12:30, 30

  1. 图片坐标轴说明。横轴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群组MaoRum定投记录小助手,重新提供云服务上的24小时群组,种子信息如下,Mixin群组 点击加入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"
}
Arweave TX
_OcSEIkmE98RrCJkUshFaPgFT2B_4rjC55DQzgkHZQI
Content Digest
58e1c3a8a918f737730032c239f3d7176b77ec293047c956355d2925e3868223
Reward
17 : 1
0 times bought, 4 times reward
0.0
Price(BTC)
4
Paid Times
16.4922
Revenue(USD)
0.0
My Share(%)
Comments
Subscribe
l.Mr
@156157
Subscribing: 5 Subscribers: 33
知行合一 幸福生长
Subscribe
Related Posts
Mixin Safe尝鲜 人人都能用的Mixin助理机器人
Rules Stats Help Github Twitter Discord
l.Mr
@156157
Subscribing: 5 Subscribers: 33
知行合一 幸福生长
Subscribe
Related Posts
Mixin Safe尝鲜 人人都能用的Mixin助理机器人
Rules Stats Help Github Twitter Discord