wechaty/summer

开发基于 Wechaty 实现微俱乐部会员&活动管理的微信小程序

Opened this issue · 11 comments

开源软件供应链点亮计划

“开源软件供应链点亮计划-暑期2021”(以下简称 暑期2021)是由中科院软件所与 openEuler 社区共同举办的一项面向高校学生的暑期活动,旨在鼓励在校学生积极参与开源软件的开发维护,促进国内优秀开源软件社区的蓬勃发展。

根据项目的难易程度和完成情况,参与者还可获取“开源软件供应链点亮计划-暑期2021”活动奖金和奖杯。

官网:summer.iscas.ac.cn

Wechaty

Wechaty 是一个开源聊天机器人框架SDK,具有高度封装、高可用的特性,支持NodeJs, Python, Go 和Java 等多语言版本。在过去的4年中,服务了数万名开发者,收获了 Github 的 8000 Star。同时配置了完整的DevOps体系并持续按照Apache 的方式管理技术社区。

基于 Wechaty 实现微俱乐部会员&活动管理的微信小程序

背景介绍

目前有大量各种活动俱乐部使用微信群组织活动,发起接龙报名以及进行会员管理等。

俱乐部中大多采用传统的接龙方式进行活动报名,因个别群成员误操作经常出现接龙信息混乱、错误等情况,且活动信息、报名信息不能很好的留存和统计。

我们在本次 Summer 2021 的项目中,希望可以开发一个基于 Wechaty 的群组管理微信小程序。

需求介绍

  1. 使用微信小程作为俱乐部和活动管理后台,利用 Wechaty 将微信群及成员同步在小程序中创建同名俱乐部,并使用小程序作为后台管理活动及成员;

  2. 使用任意 Wechaty Puppet 实现微信机器人,支持群成员通过关键词指令 如 报名、取消名等报名活动;

  3. 小程序端发布活动、截止报名、活动开始等可以自动推送消息到对应微信群与成员进行互动。

项目难度

低(奖金:6000元)

导师联系方式

  • 鲁玉超:物联网行业产品经理、微信小程序群组大师开发者(atorber@163.com

项目产出目标

每日代码 commit

每周提交一份 report (回复本 issue)

每两周一次在线会议

每两周至少发布一个 开发版本

最终实现小程序发布上线,至少能够满足羽毛球俱乐部活动群内机器人报名管理的需求

项目技术栈

javasscript programming language

Git

微信小程序开发云开发

node.js/npm

[开发基于 Wechaty 实现微俱乐部会员&活动管理的微信小程序] 进度报告

日期:2021-07-04

本周完成的成果

  1. 创建并初始化项目,在微信开发者工具中完成获取用户授权的代码编写
  2. 完成前期环境的初步搭建

本周遇到的困难和需要配合的地方

  1. 在预览GitHub自己所发的博客时先决条件获取存在困难
  2. 对命令提示符的使用不够熟练

下周的开发计划和预计成果

  1. 预计完成bot预览及引入
  2. 搭建小程序第一页面,完成初始化页面设计

其他需要说明和同步的事项

暂无

[开发基于 Wechaty 实现微俱乐部会员&活动管理的微信小程序] 进度报告

日期:2021-07-18

本周完成的成果

  1. 进行期初项目报告的提交
  2. 熟悉git的初级使用方法,了解PR的基础操作

本周遇到的困难和需要配合的地方

  1. 对于如何取消已发布的PR存在疑惑
  2. md文档编写时多次格式出错,尤其是细节方面总结不够到位

下周的开发计划和预计成果

  1. 预计完成bot预览及引入
    2.从开发微信小程序入手,推进小程序学习

其他需要说明和同步的事项

暂无

项目中期报告

项目信息

项目名称

开发基于 Wechaty 实现微俱乐部会员&活动管理的微信小程序

方案描述

技术要求:Linux/JavaScript/NodeJS/Git
项目所含模块:

模块 功能 备注
群管理 创建群组/群成员管理 利用wechaty机器人在小程序中同步建群
用户管理 用户基本信息/身份绑定 微信信息与小程序内用户自动绑定
群主发布活动 创建活动/基本信息填写/限制设定  
群主管理活动 同时管理多个活动/操作活动状态/修改活动信息 node-schedule
成员报名活动 报名/取消  
帮助 关键词回复/关键词关联操作 微信对话开放平台
互动操作 活动相册  

时间规划

第一阶段 设计小程序的基本框架
7/1-7/7 引入chatbot;整理基础用法/开发生产环境/用户协议
7/8-7/14 确定1-2条各功能块实现路径,列出技术难点;绑定用户数据到俱乐部
7/15-7/20 使用微信对话开放平台实现“关键词回复”功能

第二阶段 实现群主&群成员操作功能块
7/20-7/26 实践“群主发布活动”功能;调试
7/27-8/2 实践“群主管理活动”功能;调试
8/3-8/9 实践“成员报名活动”功能;调试
8/10-15 完善优化以上功能块

第三阶段 互动操作功能实现
8/16-8/22 实践“活动相册”功能;调试
8/23-8/29 实践“帮助”功能(将关键词与操作关联,要求提高容错性)
8/30-9/5 邀请志愿者使用小程序;检查基础功能漏洞;设计自设定功能

第四阶段 添加功能块&检查完善
9/6-9/12 实践自设定功能;调试
9/13-9/19 邀请志愿者使用小程序;收集程序运行中出现的问题
9/20-9/26 针对问题完善程序功能
9/27-9/30 小程序整体优化升级(着重用户数据处理)

项目中期报告

项目信息

项目名称

开发基于 Wechaty 实现微俱乐部会员&活动管理的微信小程序

方案描述

技术要求:Linux/JavaScript/NodeJS/Git
项目所含模块:

模块 功能 备注
群管理 创建群组/群成员管理 利用wechaty机器人在小程序中同步建群
用户管理 用户基本信息/身份绑定 微信信息与小程序内用户自动绑定
群主发布活动 创建活动/基本信息填写/限制设定  
群主管理活动 同时管理多个活动/操作活动状态/修改活动信息 node-schedule
成员报名活动 报名/取消  
帮助 关键词回复/关键词关联操作 微信对话开放平台
互动操作 活动相册  

时间规划

第一阶段 设计小程序的基本框架
7/1-7/7 引入chatbot;整理基础用法/开发生产环境/用户协议
7/8-7/14 确定1-2条各功能块实现路径,列出技术难点;绑定用户数据到俱乐部
7/15-7/20 使用微信对话开放平台实现“关键词回复”功能

第二阶段 实现群主&群成员操作功能块
7/20-7/26 实践“群主发布活动”功能;调试
7/27-8/2 实践“群主管理活动”功能;调试
8/3-8/9 实践“成员报名活动”功能;调试
8/10-15 完善优化以上功能块

第三阶段 互动操作功能实现
8/16-8/22 实践“活动相册”功能;调试
8/23-8/29 实践“帮助”功能(将关键词与操作关联,要求提高容错性)
8/30-9/5 邀请志愿者使用小程序;检查基础功能漏洞;设计自设定功能

第四阶段 添加功能块&检查完善
9/6-9/12 实践自设定功能;调试
9/13-9/19 邀请志愿者使用小程序;收集程序运行中出现的问题
9/20-9/26 针对问题完善程序功能
9/27-9/30 小程序整体优化升级(着重用户数据处理)

中期审核意见
项目完成度:能够按原计划实施项目,基本功能框架按要求完成
学生参与度:积极主动,能够积极参与
代码贡献量:一般
综合评价及建议:项目基本符合预期,下一步需加快业务功能实现进度,保证最终交付

@atorber Please keep this issue open until OSPP program is finished :)

中期 Demo day

期中汇报的视频 https://b23.tv/R6npFU

LiveCoding https://b23.tv/qMkDPK

Hi, @mangguo188 Please upload to youtube as well, looking forward to the youtube link!

Thanks.

项目结项报告

项目信息

项目名称

开发基于 Wechaty 实现微俱乐部会员&活动管理的微信小程序

方案描述

技术要求:Linux/JavaScript/NodeJS/Git
项目所含模块:

模块 功能 备注
群管理 创建群组/群成员管理 利用wechaty机器人在小程序中同步建群
用户管理 用户基本信息/身份绑定 微信信息与小程序内用户自动绑定
群主发布活动 创建活动/基本信息填写/限制设定  
群主管理活动 同时管理多个活动/操作活动状态/修改活动信息 node-schedule
成员报名活动 报名/取消  
帮助 关键词回复/关键词关联操作 微信对话开放平台
互动操作 活动相册  

时间规划

第一阶段 设计小程序的基本框架
第二阶段 实现群主&群成员操作功能块
第三阶段 互动操作功能实现
第四阶段 添加功能块&检查完善

遇到的问题及解决方案:

1.启动小程序后仅出现授权页面,授权后无应有显示。
方案:本项目需要小程序与机器人一同登录,只有机器人持有者登入小程序,界面才会正确显示。找到云开发日志中机器人持有者发布的消息,将其wxid赋值给小程序使用者(小程序使用者原先的wxid是系统自动生成的数字,仅保证wxid唯一,但无意义)。
2.云函数编写过程中常出现错误,但是错误查找需要提交运行,时间周期长且提交次数有限,需要发掘更好检验错误的方法。
方案:在老师的建议下,我先在机器人中模拟后端返回,将函数编写在机器人服务中,检验函数的正确性,当所有函数运行完毕无错后再在后端更改相应函数,此举大大减少了云函数的上传次数,降低电脑负荷。
3.本项目仅对文本信息可做出响应反馈,对于超链接、图片、视频等消息无法提取有效信息。
方案:暂时搭建响应超链接、图片、视频的框架,后续功能待有时间可持续开发。
4.编写完成后,小程序的云开发部分与前端部分与机器人位于同一文件夹下,两者分别不明晰,加上每个文件夹下都有index.js文件,极易出现修改错误。
方案:将小程序封装到mp文件夹下,机器人封装到wechatbot文件夹下,使两者功能可以分开使用,也易连接(需要注意的是,由于小程序云函数封装到mp文件夹下,从微信开发者工具上查看时只需要打开mp文件夹,不然会出现无法部署的问题)。

项目展望:

本项目仅完成基础功能开发,目前使用者进入小程序可以随时查看群活动与该群内成员id,包括报名记录等便利统计数据的内容。但将基本框架已搭建完毕,后续有时间可加更多功能模块,包括如何将群机器人与小程序1对1的关系解开,方便更多小程序使用者简便获取活动管理功能等。

项目成果:

https://github.com/mangguo188/wechaty-club-management

结项 Demo

期中汇报的视频 https://youtu.be/eSgaD32njVw

国内链接> https://b23.tv/R6npFU

LiveCoding https://youtu.be/5LZ08re5YR8

国内链接> https://b23.tv/qMkDPK

项目结项审核

初审导师:鲁玉超
审核时间:2021-10-13 17:48:59
审核意见:

  • 项目完成度:项目基本按原定方案完成功能开发,主体功能完成,项目可以独立部署和稳定运行
  • 学生参与度:学生在项目实施过程中是能够积极参与,主动性较高,可以按要求和进度完成工作
  • 代码贡献量:本项目学生提供的代码量在50%以上
  • 综合评价及建议:基本完成了既定方案的功能开发,规划的拓展功能、创新功能仍有迭代优化空间