爱意满满的作品展示区。
askfermi

搞了一个转发长任务的 shell 命令结果到 telegram 的机器人

  •  
  •   askfermi ·
    xzyaoi · May 25, 2020 · 3481 views
    This topic created in 2269 days ago, the information mentioned may be changed or developed.

    最近遇到很多长任务,后台跑着跑着就忘了:( 花了几分钟搞了一个把 shell 命令运行的结果转发到 telegram 的 bot,用于提醒自己命令的执行情况。使用起来比较简单:

    • @notihubot 获取自己的 id 。关注这个 bot,发送 /myid 即可。
    • release page 下载二进制包,放到系统的 PATH 里。
    • 执行命令时,只需tg [YOUR_ID] [YOUR COMMAND]即可,例如tg 000000 ls

    效果图:Snipaste_2020-05-25_03-00-12.png

    GitHub: https://github.com/xzyaoi/tg

    顺便发一个分享创造的电报群: https://t.me/chuangzao101

    求个 star :),而且我对 go 的 os/exec 不是特别了解,如果有实现上的错误麻烦大佬指出。

    4 replies    2020-06-07 07:17:02 +08:00
    Shazoo
        1
    Shazoo  
       May 26, 2020
    为啥要这么麻烦?

    ```
    curl --location --request POST 'https://api.telegram.org/bot<YourBotToken>/sendMessage' \
    --form 'text=`<YourCommandHere>`' \
    --form 'chat_id=<YourChatId>' \
    --form 'parse_mode=markdown'
    ```
    c0xt30a
        2
    c0xt30a  
       May 26, 2020
    @Shazoo

    发送消息记得过滤下特殊字符:

    ```
    special_chars = ['~', "'", '[', '\\', '@', '^', '{', '%', '(', '"', '*', '|', ',', '&', '<', '`', '}', ']', '!', '>', ')']
    ```

    还可以发送图片,我用的命令行是:
    ```
    f'/usr/bin/curl -s -X POST https://api.telegram.org/{token}/sendPhoto -F chat_id={id} -F photo="@{photo_path}"'
    ```

    发送文件是:
    ```
    f'/usr/bin/curl -F document="@{file_path}" https://api.telegram.org/{token}/sendDocument?chat_id={id}'
    runking
        3
    runking  
       May 30, 2020
    借这个主题问一下
    弄了个机器人转发备用机的未接来电和短信

    使用的是 http get

    然后,短信里面如果有特殊字符,特殊字符后面的内容就看不到了

    这种怎么可以把特殊给处理下能在机器人中正常显示
    askfermi
        4
    askfermi  
    OP
       Jun 7, 2020
    @runking 没有搞过这种,为什么不用 post 呢?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2713 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 15:34 · PVG 23:34 · LAX 08:34 · JFK 11:34
    ♥ Do have faith in what you're doing.