加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Golang 微信机器人包

发布时间:2020-12-16 09:20:38 所属栏目:大数据 来源:网络整理
导读:一、 ? ? 最近用在学习golang,写了个小工具练练手。通过golang模拟微信网页端,接收微信服务器的消息并定制。可接入图灵机器人的api实现一个微信机器人的小玩具,当然了,可以有更多更好玩的玩法。 二、? ? ? 地址:?https://github.com/Orlion/Gochat ? ? G

一、

? ? 最近用在学习golang,写了个小工具练练手。通过golang模拟微信网页端,接收微信服务器的消息并定制。可接入图灵机器人的api实现一个微信机器人的小玩具,当然了,可以有更多更好玩的玩法。

二、?

? ? 地址:?https://github.com/Orlion/Gochat

?

?

Gochat

一个Go微信机器人包

特点

  1. 灵活。在微信从登录到开始同步服务器消息的过程中的各个节点触发事件,从而通过注册时间监听器就可以灵活的实现很多功能。
  2. 失败重新登录。可以通过注册同步失败的事件重新调用Login()方法来重新登录,从而达到失败自动重新登录,也可以调用pushlogin的接口免扫码来登录。

Demo

有部分伪代码,不能直接运行

package demo

import (
	"gochat"
	"os"
	"fmt"
)

func main() {
	// new 一个微信实例
	weChat := gochat.NewWeChat("storage.json",os.Stdout)
	// 注册事件监听
	RegListener(weChat)
	// 登录
	err := weChat.Login()
	if err != nil {
		fmt.Println(err.Error())
	}
	// Run 开始监听微信服务器
	err = weChat.Run()
	if err != nil {
		fmt.Println(err.Error())
	}
}

// 注册事件监听器
func RegListener(weChat *gochat.WeChat) {

	// 注册生成Uuid事件监听器
	weChat.SetListener(gochat.GEN_UUID_EVENT,func(event gochat.Event){
		eventData,ok := event.Data.(gochat.GenUuidEventData)
		if ok {
			sendEmail("Uuid=" + eventData.Uuid)
		}
	})

	// 注册已扫码事件监听器
	weChat.SetListener(gochat.SCAN_CODE_EVENT,ok := event.Data.(gochat.ScanCodeEventData)
		if ok {
			sendEmail("UserAvatar=" + eventData.UserAvatar)
		}
	})

	// 注册授权登录的事件监听器
	weChat.SetListener(gochat.CONFIRM_AUTH_EVENT,ok := event.Data.(gochat.ConfirmAuthEventData)
		if ok {
			sendEmail("RedirectUrl=" + eventData.RedirectUrl)
		}
	})

	// 注册已登录事件监听器
	weChat.SetListener(gochat.LOGIN_EVENT,ok := event.Data.(gochat.LoginEventData)
		if ok {
			sendEmail("DeviceID=" + eventData.DeviceID)
		}
	})

	// 注册初始化完成事件监听器
	weChat.SetListener(gochat.INIT_EVENT,ok := event.Data.(gochat.InitEventData)
		if ok {
			sendEmail("MemberCount=" + eventData.Me.MemberCount)
		}
	})

	// 注册联系人初始化完成事件监听器
	weChat.SetListener(gochat.CONTACTS_INIT_EVENT,ok := event.Data.(gochat.ContactsInitEventData)
		if ok {
			sendEmail("ContactsCount=" + eventData.ContactsCount)
		}
	})

	// 注册同步微信失败事件监听器
	weChat.SetListener(gochat.LISTEN_FAILED_EVENT,ok := event.Data.(gochat.ListenFailedEventData)
		if ok {
			sendEmail("ListenFailedCount=" + eventData.ListenFailedCount)
			if (eventData.ListenFailedCount > 10) {
				// 连续同步失败10次后重新登录
				weChat.Login()
			}
		}
	})

	// 注册联系人修改事件监听器
	weChat.SetListener(gochat.CONTACT_MODIFY_EVENT,ok := event.Data.(gochat.ContactModifyEventData)
		if ok {
			sendEmail("UserNames=" + eventData.UserNames)
		}
	})

	// 注册联系人删除事件监听器
	weChat.SetListener(gochat.CONTACT_DELETE_EVENT,ok := event.Data.(gochat.ContactDeleteEventData)
		if ok {
			sendEmail("UserNames=" + eventData.UserNames)
		}
	})

	// 注册消息事件监听器
	weChat.SetListener(gochat.MESSAGE_EVENT,ok := event.Data.(gochat.MessageEventData)
		if ok {
			if eventData.IsGroupMessage {
				if eventData.IsAtMe {
					weChat.SendTextMsg(tuling(eventData.Content,eventData.SenderUserId),eventData.SenderUserInfo.UserName)
				}
			} else {
				weChat.SendTextMsg(tuling(eventData.Content,eventData.SenderUserInfo.UserName)
			}
		}
	})
}

Something

??写完之后就没什么兴趣用这个库做东西了,主要是用的openshift太慢,而且微信很不稳定经常变更规则。

??不过用微信机器人还是可以做很多有趣的事情的,有不少同学在玩微信机器人。可以用java写个Android的App。

??类似项目有:

    • https://github.com/littlecodersh/ItChat
    • https://github.com/youfou/wxpy
    • https://github.com/liuwons/wxBot
      ...
      ..
      .

?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读