zoukankan      html  css  js  c++  java
  • 如何使用golang操作微信

    openwechat

    golang版个人微信号API, 类似开发公众号一样,开发个人微信号

    使用前提

    golang版本大于等于1.11

    安装

    go get

    go get github.com/eatMoreApple/openwechat
    

    快速开始

    登录微信

    package main
    
    import (
    	"fmt"
    	"github.com/eatMoreApple/openwechat"
    )
    
    func main() {
    	messageHandler := func(msg *openwechat.Message) {
    		fmt.Println(msg)
    	}
    	bot := openwechat.DefaultBot()
        
        // 注册消息处理函数
    	bot.MessageHandler = messageHandler
        // 设置默认的登录回调
        // 可以设置通过该uuid获取到登录的二维码
    	bot.UUIDCallback = openwechat.PrintlnQrcodeUrl
        // 登录
    	if err := bot.Login(); err != nil {
    		fmt.Println(err)
    		return
    	}
        // 阻塞主程序,直到用户退出或发生异常
    	bot.Block()
    }
    

    突破网页版登录限制

    网页版登陆不上的可以尝试使用该模式登陆

    bot := openwechat.DefaultBot(openwechat.Desktop)
    

    回复消息

    messageHandler := func(msg *openwechat.Message) {
    		msg.ReplyText("hello")
    }
    

    获取消息的发送者

    messageHandler := func(msg *openwechat.Message) {
    		sender, err := msg.Sender()
    }
    

    获取所有的好友

    // 登录之后调用
    self, err := bot.GetCurrentUser()
    if err != nil {
        fmt.Println(err)
        return
    }
    friends, err := self.Friends()
    

    发送消息给好友

    self, err := bot.GetCurrentUser()
    if err != nil {
        fmt.Println(err)
        return
    }
    friends, err := self.Friends()
    if err != nil {
        fmt.Println(err)
        return
    }
    if friends.Count() > 0 {
        // 发送给第一个好友
        friends[0].SendText("你好")
    }
    

    发送图片消息

    friends, err := self.Friends()
    if err != nil {
        fmt.Println(err)
        return
    }
    if friends.Count() > 0 {
        // 发送给第一个好友
        img, _ := os.Open("test.png")
        defer img.Close()
        friends[0].SendImage(img)
    }
    bot.Block()
    

    搜索好友

    friends, err := self.Friends()
    if err != nil {
        fmt.Println(err)
        return
    }
    results := friends.Search(1, func(friend *Friend) bool { return friend.User.RemarkName == "阿青" }, func(friend *Friend) bool { return friend.Sex == 2 }) // 查找数量为1符合条件的好友
    fmt.Println(results)
    

    搜索群组

    groups, err := self.Groups()
    if err != nil {
        fmt.Println(err)
        return
    }
    results := group.Search(1, func(group *Group) bool { return group.NickName == "厉害了" }) 
    fmt.Println(results)
    

    更多功能请在代码中探索。。。

    // todo: add more support

  • 相关阅读:
    文件和数组的排序
    批量删除文档中的注释和空行
    strcat()的编写
    OpenGL鼠标旋转图像
    c++对文件操作的支持(二)
    汉字的16进制存储
    启动程序的c++方法
    HDU 2199 Can you solve this equation? 二分
    HDU 2899 Strange fuction 二分
    HDU 1233 还是畅通工程 最小生成树
  • 原文地址:https://www.cnblogs.com/ivy-blogs/p/14697504.html
Copyright © 2011-2022 走看看