使用 Go 發送微信羣消息

背景

最近的某個副業需要我寫一個腳本(腳本內容就不說了),需要通知羣成員,儘快地做出響應。所以去找一下 Go 是否有這樣的類庫。

在這個腳本里面,我只需要發送信息的能力即可。

openwechat

在尋找了一會之後發現 https://github.com/eatmoreapple/openwechat 這個庫,這個庫支持以下能力:

這很明顯已經滿足我的需求了,畢竟我的需求超簡單的!

例子

那我們立刻使用項目中的 README.md 例子來測試一下。

package main

import (
 "fmt"

 "github.com/eatmoreapple/openwechat"
)

func main() {
 bot := openwechat.DefaultBot(openwechat.Desktop) // 桌面模式

 // 註冊消息處理函數
 bot.MessageHandler = func(msg *openwechat.Message) {
  if msg.IsText() && msg.Content == "ping" {
   msg.ReplyText("pong")
  }
 }
 // 註冊登陸二維碼回調
 bot.UUIDCallback = openwechat.PrintlnQrcodeUrl

 // 登陸
 if err := bot.Login(); err != nil {
  fmt.Println(err)
  return
 }

 // 獲取登陸的用戶
 self, err := bot.GetCurrentUser()
 if err != nil {
  fmt.Println(err)
  return
 }

 // 獲取所有的好友
 friends, err := self.Friends()
 fmt.Println(friends, err)

 // 獲取所有的羣組
 groups, err := self.Groups()
 fmt.Println(groups, err)

 // 阻塞主goroutine, 直到發生異常或者用戶主動退出
 bot.Block()
}

這段代碼的內容比較簡單:

但是這裏有兩個問題需要注意:

實現對特定羣發送文本消息

因爲作者封裝得還算不錯,發送文本消息非常簡單,就一個函數的事情。

func main() {
 bot := openwechat.DefaultBot(openwechat.Desktop) // 桌面模式

 // 註冊登陸二維碼回調
 bot.UUIDCallback = openwechat.PrintlnQrcodeUrl

 // 登陸
 if err := bot.Login(); err != nil {
  fmt.Println(err)
  return
 }

 // 獲取登陸的用戶
 self, err := bot.GetCurrentUser()
 if err != nil {
  fmt.Println(err)
  return
 }

 // 獲取所有的羣組
 groups, err := self.Groups()
 for _, group := range groups {
  if group.NickName == "愛發白日夢的後端" {
   _, err = self.SendTextToGroup(group, "Hello!!!羣裏的朋友大家好呀!!!")
   if err != nil {
    panic(err)
   }
  }
 }

 // 阻塞主goroutine, 直到發生異常或者用戶主動退出
 bot.Block()
}

核心的函數就是 SendTextToGroup 這個方法,直接調用即可發送羣消息了。

效果如下:

總結

雖然我目前的需求已經被滿足了,不過這個庫裏面的好多功能我都沒有去用過,也沒有在這裏介紹,感興趣的同學可以自行深入去了解。

參考資料

[1]

issue: https://github.com/eatmoreapple/openwechat/issues/441

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/tl-sBa44jkFkyNwjJlS89g