通过telegram机器人自动发送群消息

1、添加

①Telegram 添加 BotFather 进入聊天界面

②点击输入框中 /start

③回复内容中点击 /newbot

④阅读提示分别输入 name 和 username,比如叫test_bot

⑤返回token

2、启用

在Telegram搜索@test_bot,进入聊天界面,在聊天窗口输入/start,代表启用该机器人

二、查找群ID

将机器人test_bot添加进群

输入hello @test_bot

同时通过在浏览器输入 https://api.telegram.org/bot123456:ABC-DEF1234DEF1234DEF1234/getUpdates   查找群ID 【黑色加粗要替换成机器人的真实token】 

三、发送群消息

查看文档:https://core.telegram.org/bots/api#sendmessage

复制代码
type telegramMessage struct {
    ChatID                int64  `json:"chat_id"`
    Text                  string `json:"text"`
    ParseMode             string `json:"parse_mode"`
    DisableWebPagePreview bool   `json:"disable_web_page_preview"`
}

func SendMessageToTelegramGroup(token string, chatID int64, message string) error {
    apiURL := fmt.Sprintf("https://api.telegram.org/bot%s/sendMessage", token)
    telegramMessage := telegramMessage{
        ChatID:                chatID,
        Text:                  message,
        ParseMode:             "HTML",
        DisableWebPagePreview: true,
    }

    messageData, err := json.Marshal(telegramMessage)
    if err != nil {
        return err
    }

    resp, err := http.Post(apiURL, "application/json", bytes.NewBuffer(messageData))
    http.DefaultTransport.(*http.Transport).TLSClientConfig = &tls.Config{InsecureSkipVerify: true}
    if err != nil {
        return err
    }
    defer resp.Body.Close()

    if resp.StatusCode != http.StatusOK {
        return fmt.Errorf("failed to send message. Status code: %d", resp.StatusCode)
    }

    return nil
}
复制代码

四、踩过的坑

1、添加机器人进群时:

我设置的机器人名字是**work_bot,但不知道为什么用@一直搜不到,多次尝试后,在一个别的bot下搜到了,不确定是不是我操作创建机器人时出了问题;

2、一定要记得写ensure_ascii=False

最初没有写的时候,结果不是中文,我用转码工具尝试了应该是Unicode转中文,一直尝试怎么改代码实现Unicode转中文。后来发现问题出在json.dumps(datas, ensure_ascii=False)这里;

3、tg消息换行,用\n,已验证没有问题

posted @   李若盛开  阅读(3615)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
点击右上角即可分享
微信分享提示