学习笔记|简单使用Telegram Bot API做消息推送

  • 首页 > 笔记
  • 作者:jaz
  • 时间: 2021年2月8日 13:38
  • 字数:4958 个
  • 字号:
  • 评论:8 条
  • 浏览:32406 次
  • 百度:百度已收录
  • 分类: 笔记
  • 时间:2021-2-8 13:38 热度:32406° 评论:8 条 


        最近看见好几篇关于Telegram bot推送的帖子,之前简单了解过,自己琢磨官方文档就能明白大半了https://core.telegram.org/bots/api,本帖记录学习过程,仅本小白理解过程,有可能说的不对。

    打不开?试试 https://pp.us-south.cf.appdomain.cloud/


    下面说说自己琢磨的


    server酱为什么火?最主要是微信api不是每个人都可以申请,所以想推送信息到微信就需要用到它

    TG不一样,api开放,bot的ap也i很简单。(另外账号api和bot api功能和使用好像不一样,这里只说bot)


    1.TG bot申请无门槛,https://t.me/BotFather 申请就是了


    2.TG bot的api很简单

    ● 官方提供的api地址:https://api.telegram.org

    ● 使用方法:

    https://api.telegram.org/bot<token>/METHOD_NAME

        -bot<token>申请bot时生成,

        -METHOD_NAME 参数很多,推送常用的是几个sendXxxx的,如sendMessage、sendPhoto、sendVideo、sendMediaGroup、sendDocument

    ● 请求方式:post/get都可以





    举个最简单的例子,我创建了一个bot名字叫@push2tgbot,token为1545138812:AAGroid6uSJFbQxRM2f8X6KHlsnDReHUkvE,我怎么用bot给我自己发消息呢?


    先去 @push2tgbot 创建对话,然后通过getUpdates的方法获取到你发给bot的对话信息。

    简单做法浏览器访问下面这个链接就能获得对话信息,记录其中的chat_id(用户对话的chat_id就是userid)。

    https://api.telegram.org/bot1545138812:AAGroid6uSJFbQxRM2f8X6KHlsnDReHUkvE/getUpdates


    然后用sendMessage方法就可以让bot给你发一条信息(将下面的chat_id改为刚从上面链接获取到的你的chat_id,向频道群组发时就需要bot加群)

    https://api.telegram.org/bot1545138812:AAGroid6uSJFbQxRM2f8X6KHlsnDReHUkvE/sendMessage?chat_id=1138220708&text=H
    ello


    3.TG bot的更新消息的方法有两个,一个是getUpdates,一个是Webhooks

    getUpdates是pull模式,大概理解是程序请求一下getUpdates获取用户发过来的信息,再处理信息做出响应。

    Webhooks是push模式,Telegram会将用户发送的信息发送到你配置的一个webhook url上,这样程序就可以根据用户发送的信息做出响应


    如果单单是做推送,发个简单消息,不需要啥交互的,好像根本不需要理会啥更新模式,不用配置webhook,嫌bot token暴露外在的,可以反代时把二级目录也反代就好了。


    4.官方提供的bot api是有一些限制(文件大小、效率等等),可以自己搭建api(https://github.com/tdlib/telegram-bot-api),自己搭建的api好处:

    下载没有大小限制的文件,直接下载文件,无需在getFile请求之后

    最大上传2000 MB的文件。

    使用文件的本地路径和文件URI方案上传的文件.

    webhook可以使用HTTP URL、本地IP地址、使用任何端口,最大连接数100000。


    5.推送可能常用到的方法

    sendMessage/sendPhoto/sendAudio/sendDocument/sendVideo/sendVoice/sendMediaGroup等等几个方法的参数大同小异

    还有其他方法可以到https://core.telegram.org/bots/api 下面的Available methods查看


    例子:

    ### sendMessage(直接文本,支持MarkdownV2/HTML)

    https://api.telegram.org/bot1545138812:AAGroid6uSJFbQxRM2f8X6KHlsnDReHUkvE/sendMessage?chat_id=1138220708&text=Hello
    curl -X POST \
         -H 'Content-Type: application/json' \
         -d '{"chat_id": "1138220708", "text": "This is a test from curl", "disable_notification": true}' \
         https://api.telegram.org/bot1545138812:AAGroid6uSJFbQxRM2f8X6KHlsnDReHUkvE/sendMessage


    ### sendPhoto(单张图片。最大10M,可以url地址或者本地图片)

    https://api.telegram.org/bot1545138812:AAGroid6uSJFbQxRM2f8X6KHlsnDReHUkvE/sendPhoto?chat_id=1138220708&photo=https://pixiv50.com/static/images/wcldpgn/6203904_82693450_p0.jpg
    curl -F "chat_id=<CHAT_ID>" -F "photo=@/home/logo.png" \


    ### sendVideo(最大50M,只支持mp4) 加标题参数 caption

    https://api.telegram.org/bot1545138812:AAGroid6uSJFbQxRM2f8X6KHlsnDReHUkvE/sendVideo?chat_id=1138220708&video=https://cdntube2.b-cdn.net/mp4/6ce773dc977f726cd5d56cb28d9d77b2414a6497.mp4&caption=Laura's got big tittie's
    curl方式:
    curl -F video=@"/path/to/video/file" https://api.telegram.org/bot<token>/sendVideo?chat_id=<chat_id>
    
    python方式:
    files = {'video': open('123.mp4', 'rb')}
    r = requests.post(url, files=files)
    print r.text


    #### 加 标题参数 caption, 格式参数parse_mode ,用MarkdownV2模式给标题加超链接

    https://api.telegram.org/bot1545138812:AAGroid6uSJFbQxRM2f8X6KHlsnDReHUkvE/sendVideo?chat_id=1138220708&video=https://cdntube2.b-cdn.net/mp4/6ce773dc977f726cd5d56cb28d9d77b2414a6497.mp4&caption=[Laura's got big tittie's](https://4k5.net/read-8127.html)&parse_mode=MarkdownV2


    ### sendMediaGroup(多个媒体,一次最多好像9个,以json模式,第一张图加标题参数)

    https://api.telegram.org/bot1545138812:AAGroid6uSJFbQxRM2f8X6KHlsnDReHUkvE/sendMediaGroup?chat_id=1138220708&media=[{"caption":"[Pixiv50](https://pixiv50.com/)","parse_mode":"MarkdownV2","type":"photo","media":"https://pixiv50.com/static/images/wcldpgn/6203904_82693450_p0.jpg"},{"type":"photo","media":"https://www.pixiv50.com/static/images/iamcnqu/3371956_83774670_p0.jpg"}]


    6.墙

    国内环境,使用Telegram需要代理,不能直接访问,可以尝试:


    ①或者找找个web代理使get请求成功就好,一些能访问外网的奇奇怪怪接口都可以,如

    https://thingproxy.freeboard.io/fetch/https://api.telegram.org/bot1545138812:AAGroid6uSJFbQxRM2f8X6KHlsnDReHUkvE/getMe


    ②反代bot api

    可以使用CF 上的worker反代,具体参考文末两贴


    ③搭建本地api,项目地址:https://github.com/tdlib/telegram-bot-api简单看了一下,这个需要用到的好像就是账号api


    至于怎么上TG客户端接收信息就不说了



    相关:最近看见好几篇关于Telegram bot推送的帖子,如下

    【TG酱】 一个telegram提醒机器人- https://www.hostloc.com/thread-805263-2-1.html

    基于 vercel 的 TG消息机器人,【TG SERVER酱】- https://www.hostloc.com/thread-805478-1-1.html

    利用cf workers 饭袋tg api,实现webhooks推送- https://www.hostloc.com/thread-805471-1-1.html

    分享个以前找到的一个CF_worker反代TG_BOT_API的脚本- https://www.hostloc.com/thread-805441-1-1.html

     


     

    正文到此结束
    您阅读这篇文章共花了: 
    本文链接://blog.jialezi.net/?post=168
    版权声明:若无特殊注明,本文皆为《jaz》原创,转载请保留文章出处。
    捐赠支持:如果觉得这篇文章对您有帮助,请“扫一扫”鼓励作者!

    热门推荐

    Hello! How do you see it?

    你还可以输入250 / 250 个字

    嘻嘻 大笑 可怜 吃惊 害羞 调皮 鄙视 示爱 大哭 开心 偷笑 嘘 奸笑 委屈 抱抱 愤怒 思考 日了狗

    已有8条吐槽

    匿名

    2023-07-17 18:43 IANA保留地址
    发帖软件 www.teamczyx.com
     未知操作系统   未知浏览器

    匿名

    2022-11-10 14:35 美国Computer
    还是不特别明白
     未知操作系统   未知浏览器

    匿名

    2022-05-10 21:35 重庆市电信
    jialezi?我
     未知操作系统   未知浏览器

    匿名

    2021-09-11 16:01 广东省深圳市宝安区电信
    我刚发现是草榴社区?
     未知操作系统   未知浏览器

    保护膜

    2021-07-29 17:31 山东省德州市电信
    结束了学校生活,再次学习确实挺困难的www.jinjiasuye.com
     未知操作系统   未知浏览器

    匿名

    2021-07-19 09:27 美国Xerox
    大佬,现在无法申请api_id 和 api_hash怎么办啊?
     未知操作系统   未知浏览器

    匿名

    2021-04-04 13:22 IANA保留地址
    老哥,https://jialezi.net/的源码可以分享下吗?我学习下
     未知操作系统   未知浏览器

    jaz

    2021-04-07 16:28 香港Windows Azure东亚数据中心
    @匿名:网页另存为一下
     未知操作系统   未知浏览器

    返回顶部    返回首页    手气不错    捐赠支持         
    版权所有:Jialezi `s blog    站点维护:    +主题:海云彩色