美文网首页
开源群抽奖微信机器人

开源群抽奖微信机器人

作者: 秒单 | 来源:发表于2021-07-14 21:35 被阅读0次

周末抽空实现一个群抽奖机器人, 源代码100行左右,本来打算在100行以内实现, 但是影响可读性,让它自由生长好了。

代码地址: tans/luckybot

目前wechaty是微信机器人解决方案中比较成熟的,wechaty更像是一个sdk,背后主要靠token提供商来提供机器人托管服务, 当然也有免费的解决方案。使用wechaty的好处是把微信接口和业务逻辑分离,机器人尽管把业务逻辑实现就好。

通过开发群抽奖机器人, 很好的体验上手wechaty。

机器人使用CoffeeScript(编译成JS)开发

初始化 和 启动

{ PuppetPadlocal } = require "wechaty-puppet-padlocal"
{ Wechaty, ScanStatus } = require "wechaty"
bot = new Wechaty(
    name: "luckybot"
    puppet: new PuppetPadlocal { token }
)
bot.start()

机器人很适合node.js的生态开发,基于事件,异步处理,单进程。配合pm2进程管理, 可以很方便的在服务器托管启动机器人。

扫码登陆

bot.on "scan", (qrcode, status) ->
    if status is ScanStatus.Waiting and qrcode
        require("qrcode-terminal").generate qrcode, small: true

监听scan事件,把二维码打印到终端。手机扫码即可自动完成登陆

延时处理

sleep = ->
    new Promise (resolve) ->
        setTimeout resolve, _.random(1.2, 3.2) * 1000

测试过程中, 发现机器人居然秒回消息。担心微信的风控于是简单实现一个随机的sleep

抽奖逻辑

抽奖代码不贴了,感兴趣可以翻一番源代码。 主要是产品设计的时候,把UI交互变成命令行,这对于开发者比较简单,但是用户接受度如何还是有待验证。

比如 创建抽奖活动。 如果在ui界面,会有输入框输入抽奖人数,奖品,活动名字。 然后还有保存按钮,查看参与抽奖人数等等。如果是机器人实现,应该变成命令式,这时候要尽量简化。把整个ui交互转化成一句话:

发起抽奖|抽2人

通过识别关键字,创建群抽奖活动, 然后机器人继续主持活动进行, 提示大家发送参与抽奖关键字参与。

整个流程基于对话和文本。 感觉产品的设计又回到了80年代的命令行程序开发。

流程引导,信息提示,异常纠正,权限分离。成为机器人开发时候需要特别关注的细节。

抽奖流程:

  1. 发起抽奖
  2. 参与抽奖
  3. 开奖

最后贴上开发时候的测试图:

image.png

相关文章

网友评论

      本文标题:开源群抽奖微信机器人

      本文链接:https://www.haomeiwen.com/subject/vedupltx.html