MCPcopy Index your code
hub / github.com/electricbubble/wecom-bot-api

github.com/electricbubble/wecom-bot-api @v0.2.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.2.0 ↗ · + Follow
109 symbols 322 edges 15 files 19 documented · 17%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

WeCom-Bot-API

企业微信-群机器人-API

Installation

go get github.com/electricbubble/wecom-bot-api

Usage

纯文本消息

package main

import (
    botApi "github.com/electricbubble/wecom-bot-api"
    "os"
)

func main() {
    botKey := os.Getenv("WeCom_Bot_Key")
    phoneNumber := os.Getenv("Phone_Number")
    userid := os.Getenv("Userid")

    bot := botApi.NewWeComBot(botKey)

    // 仅发送文本内容
    _ = bot.PushTextMessage("hi")

    // 通过群成员 `手机号码` 进行 `@` 提醒
    _ = bot.PushTextMessage("hi again", botApi.MentionByMobile(phoneNumber))

    // 通过群成员 `userid` 进行 `@` 提醒
    _ = bot.PushTextMessage("hi again", botApi.MentionByUserid(userid))

    // @全部成员
    _ = bot.PushTextMessage("hi again",
        botApi.MentionAllByMobile(),
        // botApi.MentionAllByUserid(),
    )
}

Markdown 消息

package main

import (
    "bytes"
    botApi "github.com/electricbubble/wecom-bot-api"
    "github.com/electricbubble/wecom-bot-api/md"
    "os"
)

func main() {
    botKey := os.Getenv("WeCom_Bot_Key")
    userid := os.Getenv("Userid")

    bot := botApi.NewWeComBot(botKey)

    content := bytes.NewBufferString(md.Heading(1, "H1"))
    content.WriteString("实时新增用户反馈" + md.WarningText("132例") + ",请相关同事注意。\n")
    content.WriteString(md.QuoteText("类型:" + md.CommentText("用户反馈")))
    content.WriteString(md.QuoteText("普通用户反馈:" + md.CommentText("117例")))
    content.WriteString(md.QuoteText("VIP用户反馈:" + md.CommentText("15例")))
    // 👆效果等同于👇
    /*
        # H1
        实时新增用户反馈 <font color="warning">132例</font>,请相关同事注意。\n
        > 类型:<font color="comment">用户反馈</font>
        > 普通用户反馈:<font color="comment">117例</font>
        > VIP用户反馈:<font color="comment">15例</font>
    */

    // 仅发送 `markdown` 格式的文本
    _ = bot.PushMarkdownMessage(content.String())

    // 通过群成员 `userid` 进行 `@` 提醒
    _ = bot.PushMarkdownMessage(
        md.Heading(2, "H2") + md.Bold("hi") + "\n" + "> again\n" +
            md.MentionByUserid(userid),
    )
}

图片消息

package main

import (
    botApi "github.com/electricbubble/wecom-bot-api"
    "io/ioutil"
    "os"
    "path"
)

func main() {
    botKey := os.Getenv("WeCom_Bot_Key")
    bot := botApi.NewWeComBot(botKey)

    userHomeDir, _ := os.UserHomeDir()
    filename := path.Join(userHomeDir, "Pictures", "IMG_5246.jpg")
    readFile, _ := ioutil.ReadFile(filename)

    // 发送 图片消息
    _ = bot.PushImageMessage(readFile)
}

图文消息

package main

import (
    botApi "github.com/electricbubble/wecom-bot-api"
    "os"
)

func main() {
    botKey := os.Getenv("WeCom_Bot_Key")
    bot := botApi.NewWeComBot(botKey)

    article := botApi.NewArticle("中秋节礼品领取", "www.qq.com",
        botApi.ArticleDescription("今年中秋节公司有豪礼相送"),
        botApi.ArticlePicUrl("http://res.mail.qq.com/node/ww/wwopenmng/images/independent/doc/test_pic_msg1.png"),
    )
    article2 := botApi.NewArticle("图文标题2", "www.qq.com",
        botApi.ArticleDescription("图文描述2"),
    )
    article3 := botApi.NewArticle("图文标题3", "www.qq.com",
        botApi.ArticleDescription("图文描述3"),
    )
    _, _ = article2, article3

    // 发送 `1条图文` 消息
    _ = bot.PushNewsMessage(article)

    // 发送 `多条图文` 消息 (一个图文消息支持 `1~8条` 图文)
    _ = bot.PushNewsMessage(article, article2, article3)
}

文本通知模版卡片

package main

import (
    botApi "github.com/electricbubble/wecom-bot-api"
    "os"
)

func main() {
    botKey := os.Getenv("WeCom_Bot_Key")
    bot := botApi.NewWeComBot(botKey)

    // "media_id":"38BHOWH1SHSCZImMcuPmG2TuJSpYikh0AxznKJYSUJAJaFJvDeRu60NTAuj_IKLoR"
    media := botApi.Media{ID: "38BHOWH1SHSCZImMcuPmG2TuJSpYikh0AxznKJYSUJAJaFJvDeRu60NTAuj_IKLoR"}

    rawUrl := "https://work.weixin.qq.com/api/doc/90000/90136/91770#%E6%96%87%E6%9C%AC%E9%80%9A%E7%9F%A5%E6%A8%A1%E7%89%88%E5%8D%A1%E7%89%87"

    // botApi.TemplateCardActionApp("APPID", "/index.html")

    _ = bot.PushTemplateCardTextNotice(
        botApi.TemplateCardMainTitle("一级标题", "标题辅助信息"), botApi.TemplateCardActionUrl(rawUrl),
        botApi.TemplateCardSource("https://wework.qpic.cn/wwpic/252813_jOfDHtcISzuodLa_1629280209/0", "企业微信"),
        botApi.TemplateCardEmphasisContent("关键数据标题", "关键数据描述"),
        botApi.TemplateCardSubTitleText("二级普通文本"),
        botApi.TemplateCardHorizontalContent("二级标题(text)", botApi.TemplateCardHorizontalContentText("二级文本")),
        botApi.TemplateCardHorizontalContent("二级标题(url)", botApi.TemplateCardHorizontalContentUrl(rawUrl, "api地址")),
        botApi.TemplateCardHorizontalContent("二级标题(media)", botApi.TemplateCardHorizontalContentMedia("IMG_5246.jpg", media)),
        botApi.TemplateCardJump("跳转指引", botApi.TemplateCardJumpUrl(rawUrl)),
        botApi.TemplateCardJump("企业微信官网", botApi.TemplateCardJumpUrl("https://work.weixin.qq.com")),
    )
}

图文展示模版卡片

package main

import (
    botApi "github.com/electricbubble/wecom-bot-api"
    "os"
)

func main() {
    botKey := os.Getenv("WeCom_Bot_Key")
    bot := botApi.NewWeComBot(botKey)

    // "media_id":"38BHOWH1SHSCZImMcuPmG2TuJSpYikh0AxznKJYSUJAJaFJvDeRu60NTAuj_IKLoR"
    media := botApi.Media{ID: "38BHOWH1SHSCZImMcuPmG2TuJSpYikh0AxznKJYSUJAJaFJvDeRu60NTAuj_IKLoR"}

    rawUrl := "https://work.weixin.qq.com/api/doc/90000/90136/91770#%E5%9B%BE%E6%96%87%E5%B1%95%E7%A4%BA%E6%A8%A1%E7%89%88%E5%8D%A1%E7%89%87"
    imgUrl := "https://wework.qpic.cn/wwpic/354393_4zpkKXd7SrGMvfg_1629280616/0"

    // botApi.TemplateCardActionApp("APPID", "/index.html")

    _ = bot.PushTemplateCardNewsNotice(
        botApi.TemplateCardMainTitle("一级标题", "标题辅助信息"), botApi.TemplateCardImage(imgUrl), botApi.TemplateCardActionUrl(rawUrl),
        botApi.TemplateCardSource("https://wework.qpic.cn/wwpic/252813_jOfDHtcISzuodLa_1629280209/0", "企业微信"),
        botApi.TemplateCardVerticalContent("卡片二级标题", "二级普通文本"),
        botApi.TemplateCardHorizontalContent("二级标题(text)", botApi.TemplateCardHorizontalContentText("二级文本")),
        botApi.TemplateCardHorizontalContent("二级标题(url)", botApi.TemplateCardHorizontalContentUrl(rawUrl, "api地址")),
        botApi.TemplateCardHorizontalContent("二级标题(media)", botApi.TemplateCardHorizontalContentMedia("IMG_5246.jpg", media)),
        botApi.TemplateCardJump("跳转指引", botApi.TemplateCardJumpUrl(rawUrl)),
        botApi.TemplateCardJump("企业微信官网", botApi.TemplateCardJumpUrl("https://work.weixin.qq.com")),
    )
}

文件消息

package main

import (
    botApi "github.com/electricbubble/wecom-bot-api"
    "os"
    "path"
)

func main() {
    botKey := os.Getenv("WeCom_Bot_Key")
    bot := botApi.NewWeComBot(botKey)

    userHomeDir, _ := os.UserHomeDir()
    filename := path.Join(userHomeDir, "Pictures", "IMG_5246.jpg")

    // 必须先通过企业微信上传文件接口, 获取 `media_id` (仅三天内有效)
    // https://work.weixin.qq.com/api/doc/90000/90136/91770#%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0%E6%8E%A5%E5%8F%A3
    media, _ := bot.UploadFile(filename)
    // 发送 文件消息
    _ = bot.PushFileMessage(media)
}

Extension points exported contracts — how you extend this code

WeComBot (Interface)
(no doc) [1 implementers]
api.go
TextMsgOption (FuncType)
(no doc)
text.go
TemplateCardMainTitleOption (FuncType)
(no doc)
templatecard.go
ArticleOption (FuncType)
(no doc)
news.go
TemplateCardOption (FuncType)
(no doc)
templatecard.go
TemplateCardHorizontalContentOption (FuncType)
(no doc)
templatecard.go
TemplateCardJumpOption (FuncType)
(no doc)
templatecard.go
TemplateCardAction (FuncType)
(no doc)
templatecard.go

Core symbols most depended-on inside this repo

TemplateCardHorizontalContent
called by 10
templatecard.go
TemplateCardJump
called by 8
templatecard.go
TemplateCardJumpUrl
called by 8
templatecard.go
pushMsg
called by 7
bot.go
QuoteText
called by 6
md/helper.go
CommentText
called by 6
md/helper.go
SetDebug
called by 5
api.go
newTemplateCardMsg
called by 4
templatecard.go

Shape

Function 61
Struct 22
Method 17
FuncType 8
Interface 1

Languages

Go100%

Modules by API surface

templatecard.go34 symbols
api.go15 symbols
bot.go11 symbols
bot_test.go10 symbols
md/helper.go9 symbols
text.go8 symbols
news.go8 symbols
markdown.go3 symbols
image.go3 symbols
file.go3 symbols
text_test.go1 symbols
news_test.go1 symbols

For agents

$ claude mcp add wecom-bot-api \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page