Contents

转发telegram群组消息到钉钉平台

简介

顾名思义,是一个tg转发消息的小工具,在写自动化的时候,需要监听tg群组里的osmedeus漏洞推送同步转发到钉钉上,需要就造了这么一个轮子(基于Golang)

能力有限,代码写得很垃圾,各位师傅们轻喷,也欢迎各位师傅指导与讨论

主要功能

  1. 监听tg群组里的所有消息并且转发到钉钉上

使用说明

依赖库:

  • github.com/blinkbean/dingtalk
  • github.com/go-telegram-bot-api/telegram-bot-api

注册一个专门监听群组消息的tg机器人并且记录下access token

1
2
3
@BotFather
osm_bot
xxx_osm_bot

/postsimg/tgMessageForwarding/1.png

创建TG频道后拉监听机器人进去后,需要修改脚本四处位置:

1
2
3
4
var dingToken = "钉钉机器人Webhook TOKEN"
var dingSecret = "钉钉机器人加签Secret"
bot, err := tgbotapi.NewBotAPI("tg机器人telegram_api_token")
if update.ChannelPost.Chat.UserName == "需要监听的群组名称

编译运行

1
2
3
go mod init
go mod tidy
go build

运行截图

后台挂载监听 /postsimg/tgMessageForwarding/2.png

使用osmedeus测试推送转发 /postsimg/tgMessageForwarding/3.png

项目地址:https://github.com/Shm1ly726/tg-message-forwarding

完整代码:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package main

import (
    "github.com/blinkbean/dingtalk"
    tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api"
    "log"
)

var msg string

type DingTalkMessage struct {
    MsgType string                 `json:"msgtype"`
    Text    map[string]interface{} `json:"text"`
}

func dingTalkBot(tg_massage string) {
    var dingToken = "钉钉机器人Webhook TOKEN"
    var dingSecret = "钉钉机器人加签Secret"
    cli := dingtalk.InitDingTalkWithSecret(dingToken, dingSecret)
    cli.SendTextMessage(tg_massage)
}

func tg_Bot() {
    bot, err := tgbotapi.NewBotAPI("tg机器人telegram_api_token")
    if err != nil {
        log.Panic(err)
    }
    u := tgbotapi.NewUpdate(0)
    u.Timeout = 60
    updates, err := bot.GetUpdatesChan(u)
    for update := range updates {
        if update.ChannelPost == nil {
            continue
        }
        if update.ChannelPost.Chat.UserName == "需要监听的群组名称" {
            msg = update.ChannelPost.Text
            dingTalkBot(msg)
        }
    }
}

func main() {
    tg_Bot()
}