Skip to content

voidint/wecombot

Repository files navigation

wecombot

PkgGoDev Go Report Card codebeat badge

wecombot 是企业微信群机器人的一个 go 语言 sdk,API友好,无任何第三方依赖。

安装

$ go get github.com/voidint/wecombot@latest

用法

发送文本类型消息

package main

import "github.com/voidint/wecombot"

func main() {
	bot := wecombot.NewBot("YOUR_KEY")
	bot.SendText("hello 世界!") // 最长不超过2048个字节
	bot.SendText(
		"你好 world!",
		wecombot.WithMentionedMobileList("186xxxx1234", "170xxxx9876"), // 发送文字内容并@某些手机用户
	)
}

发送Markdown类型消息

package main

import "github.com/voidint/wecombot"

var md = `
# 成绩单
**姓名:**张三
**数学:**<font color="info">97</font>
**语文:**<font color="comment">72</font>
**英语:**<font color="warning">61</font>
`

func main() {
	wecombot.NewBot("YOUR_KEY").SendMarkdown(md) // 最长不超过4096个字节
}

注意:企业微信群消息仅支持有限的 markdown 语法

发送图片类型消息

package main

import (
	"log"
	"os"

	"github.com/voidint/wecombot"
)

func main() {
	f, err := os.ReadFile("logo.jpg") // 图片最大不能超过2M,支持JPG,PNG格式。
	if err != nil {
		log.Fatal(err)
	}

	wecombot.NewBot("YOUR_KEY").SendImage(f)
}

发送图文类型消息

package main

import (
	"github.com/voidint/wecombot"
)

func takePointer(s string) *string {
	return &s
}

func main() {
	wecombot.NewBot("YOUR_KEY").SendNews(&wecombot.Article{
		Title:       "中秋节礼品领取",
		Description: takePointer("今年中秋节公司有豪礼相送"), // 可选字段使用指针类型
		URL:         "www.qq.com",
		PicURL:      takePointer("http://res.mail.qq.com/node/ww/wwopenmng/images/independent/doc/test_pic_msg1.png"),
	})
}

发送文件类型消息

package main

import (
	"log"
	"os"

	"github.com/voidint/wecombot"
)

func main() {
	data, err := os.ReadFile("学生成绩单.xlsx") // 文件大小不超过20M
	if err != nil {
		log.Fatal(err)
	}

	wecombot.NewBot("YOUR_KEY").SendFile(data, "学生成绩单.xlsx")
}

发送语音类型消息

package main

import (
	"log"
	"os"

	"github.com/voidint/wecombot"
)

func main() {
	data, err := os.ReadFile("生日祝福.amr") // 文件大小不超过2M,播放长度不超过60s,仅支持AMR格式。
	if err != nil {
		log.Fatal(err)
	}

	wecombot.NewBot("YOUR_KEY").SendVoice(data, "生日祝福.amr")
}

发送文本通知模板卡片类型消息

package main

import (
	"github.com/voidint/wecombot"
)

func takePointer(s string) *string {
	return &s
}

func main() {
	var msg wecombot.TextNoticeTemplateCardMessage
	msg.TemplateCard.MainTitle.Title = takePointer("欢迎使用企业微信")
	msg.TemplateCard.MainTitle.Desc = takePointer("您的好友正在邀请您加入企业微信")
	msg.TemplateCard.CardAction.Type = 1
	msg.TemplateCard.CardAction.URL = takePointer("https://work.weixin.qq.com/?from=openApi")
	// 参数较多,详见文档。

	wecombot.NewBot("YOUR_KEY").SendTextNoticeTemplateCardMessage(&msg)
}

发送图文展示模板卡片类型消息

package main

import (
	"github.com/voidint/wecombot"
)

func takePointer(s string) *string {
	return &s
}

func main() {
	var msg wecombot.NewsNoticeTemplateCardMessage
	msg.TemplateCard.MainTitle.Title = takePointer("欢迎使用企业微信")
	msg.TemplateCard.MainTitle.Desc = takePointer("您的好友正在邀请您加入企业微信")
	msg.TemplateCard.CardImage.URL = *takePointer("https://wework.qpic.cn/wwpic/354393_4zpkKXd7SrGMvfg_1629280616/0")
	msg.TemplateCard.CardAction.Type = 1
	msg.TemplateCard.CardAction.URL = takePointer("https://work.weixin.qq.com/?from=openApi")
	// 参数较多,详见文档。

	wecombot.NewBot("YOUR_KEY").SendNewsNoticeTemplateCardMessage(&msg)
}
package main

import (
	"log"
	"os"

	"github.com/voidint/wecombot"
)

func main() {
	data, err := os.ReadFile("学生成绩单.xlsx") // 文件大小不超过20M
	if err != nil {
		log.Fatal(err)
	}

	mediaRes, err := wecombot.NewBot("YOUR_KEY").UploadMedia(wecombot.NormalFile, data, "学生成绩单.xlsx")
	if err != nil {
		log.Fatal(err)
	}
	log.Printf("media id: %s", mediaRes.MediaID)
}