先上项目地址 github.com/tans/push-b…
源代码仅百余行,各位开发大佬喜欢记得github上点个小星星支持一下
机器人使用场景
-
加机器人获得个人消息推送接口, 可用于推送服务器报警,交易提醒等实时关注事件.
-
邀请机器人入群,即可获得推送到该群的接口.
代码实现
机器人基于wechaty, 代码使用node.js的sdk.
bot = new Wechaty(
puppet: "wechaty-puppet-service"
puppetOptions:
token: process.env.WECHATY_TOEKN
)
机器人核心代码很简单
- 加好友立即生成回复推送地址
- 入群自动回复群推送地址
bot.on "friendship", (friendship) ->
# 自动通过好友, 并发送拉入群提醒
contact = friendship.contact()
await sendWebhook contact
.on "room-join", (room, inviteeList, inviter) ->
for invitee in inviteeList
if invitee.self()
await room.say "大家好,我是推送精灵, 通过接口可以控制我发送消息到群上."
await sendRoomWebHook inviter, room
.on "room-invite", (roomInvitation) ->
await roomInvitation.accept()
.on "message", (message) ->
text = message.text()
if text is "webhook" or text is "推送地址"
await sendWebhook message.talker()
推送核心代码
- 利用fastify的rate-limit中间件, 根据token限制接口调用频率
- 根据机器人根据token找到私聊对象发送消息
fastify.get(
"/send/:token"
,
config:
rateLimit:
max: 10
keyGenerator: (req) ->
return req.params.token
,
(request, reply) ->
{ msg } = request.query
{ token } = request.params
user = await UserDB.findOne token: token
return status: false, msg: "token not exists" unless user
contact = bot.Contact.load user.contactid
await contact.say msg
return
status: true
)
机器人目前是免费开放使用, 由于只对开发者开放, 一般是用作报警或者关键信息实时提醒, 相信大家不会用来干些坏事吧.
感谢wechaty, 把机器人的开发封装如此简单, 机器人是云托管, 无需电脑挂机,企业微信目前还是很稳定, 加好友和消息发送都几乎没有限制, 只要大家合规使用机器人还是很安全.
个人微信 | 扫码机器人体验 |
---|---|
如果有其他使用场景或者改进想法,欢迎和我交流,支持定制开发. |