使用Go語言實現(xiàn)發(fā)送微信群消息
背景
最近的某個副業(yè)需要我寫一個腳本(腳本內容就不說了),需要通知群成員,盡快地做出響應。所以去找一下 Go 是否有這樣的類庫。
在這個腳本里面,我只需要發(fā)送信息的能力即可。
openwechat
在尋找了一會之后發(fā)現(xiàn) https://github.com/eatmoreapple/openwechat 這個庫,這個庫支持以下能力:
- 消息回復、給指定對象(好友、群組)發(fā)送文本、圖片、文件、emoji表情等消息
- 熱登陸(無需重復掃碼登錄)、自定義消息處理、文件下載、消息防撤回
- 獲取對象信息、設置好友備注、拉好友進群等
這很明顯已經(jīng)滿足我的需求了,畢竟我的需求超簡單的!
例子
那我們立刻使用項目中的 README.md 例子來測試一下。
package main
import (
"fmt"
"github.com/eatmoreapple/openwechat"
)
func main() {
bot := openwechat.DefaultBot(openwechat.Desktop) // 桌面模式
// 注冊消息處理函數(shù)
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, 直到發(fā)生異?;蛘哂脩糁鲃油顺?
bot.Block()
}
這段代碼的內容比較簡單:
- 在瀏覽器中顯示二維碼
- 用戶掃碼模擬微信登錄
- 獲取掃碼微信的信息
- 獲取用戶所有的好友
- 獲取用戶所有的群組
但是這里有兩個問題需要注意:
模式只能選擇桌面模式,當我使用網(wǎng)頁版模式的時候會報以下錯誤:login forbidden: try to login with desktop mode
我猜測是因為微信那邊已經(jīng)不運營微信網(wǎng)頁版了

獲取的不是所有的群聊
從 issue[1] 找到解答:需要將群聊保存到通訊錄才行。
實現(xiàn)對特定群發(fā)送文本消息
因為作者封裝得還算不錯,發(fā)送文本消息非常簡單,就一個函數(shù)的事情。
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 == "愛發(fā)白日夢的后端" {
_, err = self.SendTextToGroup(group, "Hello?。?!群里的朋友大家好呀?。?!")
if err != nil {
panic(err)
}
}
}
// 阻塞主goroutine, 直到發(fā)生異?;蛘哂脩糁鲃油顺?
bot.Block()
}
核心的函數(shù)就是 SendTextToGroup 這個方法,直接調用即可發(fā)送群消息了。
效果如下:

總結
雖然我目前的需求已經(jīng)被滿足了,不過這個庫里面的好多功能我都沒有去用過,也沒有在這里介紹,感興趣的同學可以自行深入去了解。
到此這篇關于使用Go語言實現(xiàn)發(fā)送微信群消息的文章就介紹到這了,更多相關Go發(fā)送微信群消息內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Golang使用CGO與Plugin技術運行加載C動態(tài)庫
這篇文章主要介紹了Golang使用CGO與Plugin技術運行加載C動態(tài)庫,Golang?程序在運行時加載C動態(tài)庫的技術,跳過了Golang項目編譯階段需要鏈接C動態(tài)庫的過程,提高了Golang項目開發(fā)部署的靈活性2022-07-07
Golang的循環(huán)語句和循環(huán)控制語句詳解
循環(huán)語句為了簡化程序中有規(guī)律的重復性操作,需要用到循環(huán)語句,和其他大多數(shù)編程語言一樣,GO的循環(huán)語句有for循環(huán),不同的是沒有while循環(huán),而循環(huán)控制語句可以改變循環(huán)語句的執(zhí)行過程,下面給大家介紹下go循環(huán)語句和循環(huán)控制語句的相關知識,一起看看吧2021-11-11

