分享一个使用 telegram bot 创建报警工具 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
xjp
V2EX    分享创造

分享一个使用 telegram bot 创建报警工具

  •  
  •   xjp 2018-03-11 15:35:44 +08:00 7095 次点击
    这是一个创建于 2845 天前的主题,其中的信息可能已经有所发展或是发生改变。

    个人的程序的报警很多人都用的 server 酱 之前我也是用这个的 个人使用的时候确实非常方便 但是因为 server 酱是基于微信公众号的 所以如果要发送个多人 或者分组发送消息 还是不是很方便 于是自己开始准备用 wepy 来做这个工具 结果发现貌似 itchat 接口被封掉了 issues 不得不寻求其他的方法

    最终找到了 telegram 不得不说 虽然是聊天工具 但是对开发者还是相当友好的 各种接口都有提供 而且提供了一个非常强大的机器人系统 可以进行各种操作 而且流程非常简单

    创建自己的机器人

    搜索BotFather 这个帐号 然后发送/start开始对话 BotFather是 telegram 的一个机器人帐号 用来管理所有用户创建的机器人 开始对话之后 会提示你进行各种操作 来创建和管理自己的机器人 设置机器人的用户名 创建完成之后会得到一个机器人 token 之后所有的操作都是使用这个 token 来做

    创建频道

    telegram 和微信不同 除了组之外还有频道的概念 频道里只有管理员可以发送消息 其他人可以订阅这个频道 接受消息 非常符合报警这个使用场景 创建完了之后设置频道的名称 并且将你的机器人设置为频道的管理员即可

    发送消息

    然后就可以测试了 用的是python-telegram-bot这个库

    from telegram import Bot bot = Bot(token = "tokenofyourtelegrambot") bot.send_message("@channelname", "测试内容测试内容") 

    是不是简单到爆炸。。。。 然后在使用flask之类的封装一下成 http 接口简直好用到不行

    当然除了 使用 channel 外 send_message接口也是可以给普通的组或者单人聊天发送消息的 频道的名称是以@开头 如果是普通的聊天或者群聊的话参数是会话的 id 而且机器人可以接收数据和人进行交互 来进行各种操作

    我自己手动稍微搞了一下 建了个机器人 xjpin_bot 封了个 http 接口 大家感兴趣的话 可以建个频道 把这个机器人加一下管理员 然后请求 感受一下 真的非常非常非常非常方便好用

     curl -d "cOntent=testfromtbot" http://tbot.xjp.in/@channelname 

    然后分享下完整代码 二十行不到

     #!/usr/bin/env python3 # -*- coding: utf-8 -*- from flask import Flask, request from telegram import Bot app = Flask(__name__) TOKEN = "xxxxxxxxx" bot = Bot(token = TOKEN) @app.route('/<chat_id>', methods = ["POST"]) def alarm(chat_id): cOntent= request.form["content"] try: bot.send_message(chat_id, content) return "ok" except Exception as e: return str(e) if __name__ == '__main__': app.run(port = 8000) 

    另外 telegram 网站在国内并不能直接打开 桌面端要上一下梯子才能用 但是手机客户端却能直接用 所以还是非常方便的

    19 条回复    2018-03-13 13:03:04 +08:00
    creedowl
        1
    creedowl  
       2018-03-11 18:29:00 +08:00
    你确定手机没梯子能直连。。。
    cdwyd
        2
    cdwyd  
       2018-03-11 18:34:00 +08:00 via Android
    手机客户端并不能直接用(_)!!
    aheadlead
        3
    aheadlead  
       2018-03-11 18:36:37 +08:00
    头像好评… 日常其实很好看的嘛,为啥销量这么差
    haozi1986
        4
    haozi1986  
       2018-03-11 18:37:13 +08:00
    其实用 requests 就可以直接推送消息,这样可以少装一个库
    livc
        5
    livc  
       2018-03-11 19:21:38 +08:00
    看成了 xjping_bot
    xzl
        6
    xzl  
       2018-03-11 20:32:41 +08:00
    水一下,楼主的 id 吓我一跳
    xjp
        7
    xjp  
    OP
       2018-03-11 21:38:53 +08:00 via iPhone
    @creedowl @cdwyd 手机可以啊 ios 版和安卓都没有问题 但是桌面 mac 版访问不了 宽带是浙江电信 手机 4G 是中国移动
    xjp
        8
    xjp  
    OP
       2018-03-11 21:40:50 +08:00 via iPhone
    @haozi1986 对的 直接用 request 请求 telegram 的 api 也是可以的 但是我太懒 还是用第三方封装的比较方便 嘻嘻嘻
    cdwyd
        9
    cdwyd  
       2018-03-11 23:48:10 +08:00
    @xjp
    用的联通,试过几次直连没成功。
    logOo
        10
    logOo  
       2018-03-11 23:52:34 +08:00 via Android
    @xzl xjp xjb 我是看走眼了
    htfy96
        11
    htfy96  
       2018-03-11 23:55:47 +08:00
    最大的问题是 tg 是被墙的,所以服务器上还要跑代理有点麻烦(
    xjp
        12
    xjp  
    OP
       2018-03-12 00:20:52 +08:00
    @cdwyd mmmm....啊 我以为是都可以直连的 啊。。。。 原来不是。。。。
    ihciah
        13
    ihciah  
       2018-03-12 00:22:36 +08:00 via iPhone
    requests 支持 socks5,开一个$$就可以了。
    日常安利: https://github.com/ihciah/shadowsocks-with-socks-auth
    搭在国内机器上,手机只需要在 tg 里配置一个 socks 即可(已稳定运行 5 个月)。
    CloudnuY
        14
    CloudnuY  
       2018-03-12 02:40:04 +08:00
    Server 酱的推熊服务也可以一对多推送,还挺好玩的
    xmoiduts
        15
    xmoiduts  
       2018-03-12 09:32:06 +08:00 via Android
    感谢作者分享,这个包的官方例程有点迷,上来就是一堆 handler 创建回复机器人,看了这篇文章后茅塞顿开,原来直接 send_message 就行了。刚刚用框架成功创建了自己的通知通道。
    junbaor
        16
    junbaor  
       2018-03-12 17:38:00 +08:00
    用 Server 酱推到微信就可以了,国内服务器你用这玩意还要维护机器到 Telegram API 的连接稳定性
    junbaor
        17
    junbaor  
       2018-03-12 17:38:32 +08:00
    不是否定这东西的意思,各有所用,嗯~
    fakeJas0n
        18
    fakeJas0n  
       2018-03-13 11:11:44 +08:00
    服务器还要挂代理向 telegram 通信
    这就麻烦了
    GabrielChen
        19
    GabrielChen  
       2018-03-13 13:03:04 +08:00
    哇,你也逛 v 站啊
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2943 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 31ms UTC 12:51 PVG 20:51 LAX 04:51 JFK 07:51
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86