基于telegram-cli定时发送TG信息(2021-3-7更新)

1.部署docker版telegram-cli

在群晖内新建tg_cli文件夹,并在目录内新建 /app文件夹。

例如我在docker文件夹内新建

请输入图片描述

感谢@云淡风轻近午天 提供telegram-cli的docker镜像。

在群晖docker中的注册表搜索tg_cli,双击下载 kukudemajia/tg_cli,等待下载完毕。

请输入图片描述

镜像下载完毕,使用root账号登陆群晖ssh,执行以下命令创建容器。(其中的 8822端口可自己定义,/volume1/docker/tg_cli/app替换为上步新建的文件夹位置。)

 docker run -d --name tg_cli --privileged=true -p 8822:22 -v /volume1/docker/tg_cli/app:/app kukudemajia/tg_cli:1.4.1

如下图就是创建成功

请输入图片描述

输入以下命令,进入容器

docker exec -it tg_cli /bin/sh

请输入图片描述

安装 cron

apt-get install cron -y

请输入图片描述

安装 vim

apt-get install vim -y

请输入图片描述

2.激活 TG API

访问 telegram 的 API申请网站(点击进入),输入TG的绑定手机号和验证码,点击登陆。

请输入图片描述

选择创建的application种类为app安卓等。

重要是获取 Public keys,如下图,电脑端新建一个文件,然后把 Public keys 的全部内容复制进去并保存,命名为 Public-keys.pub

请输入图片描述

请输入图片描述

下载本站提供的msg.sh(下载链接),把 Public-keys.pubmsg.sh一并上传到第一步创建的 app文件夹内

请输入图片描述

测试TG登陆,打开容器,终端机,新建通过命令启动,输入 /bin/sh启动,进入sh终端后输入

/usr/local/share/tg/bin/telegram-cli -k /app/Public-keys.pub

会提示输入TG绑定手机号和验证码,登录完毕后可以输入名令 quitsafe_quit退出。

请输入图片描述

请输入图片描述

请输入图片描述

3.通过cron设置定时发送信息

如果上步测试登陆没有问题,就可以使用命令发送信息了

比如按照这个格式执行发送内容

bash /app/msg.sh 昵称或@用户名 内容

例如 给一位昵称 VAY,用户名为 VAY1314,发送内容为 test的消息,那命令如下

bash /app/msg.sh VAY或@VAY1314 test

(注:如昵称中含有空格请用_符号替换,如V A需写成V_A)

定时执行就可以使用crontabs计划任务,

在上步进入的终端机中,输入下方命令,进入crontabs文件,编写计划任务

(注:

进入编辑模式:打开crontabs后,按 i进入编辑模式。

退出并保存:先按 esc退出编辑模式,再输入 :wq保存编写的cron。)

crontab -e

比如在crontabs写入命令,就是在 每天上午10点30分给VAY发送“/help”消息。

30 10 * * * bash /app/msg.sh VAY /help

更多的cron表达式写法也可参照我写的CRON表达式白话版简要说明

原创文章,作者:VAY冬冬,如若转载,请注明出处:https://blog.vay1314.top/archives/158

(0)
VAY冬冬的头像VAY冬冬
上一篇 2021年2月12日
下一篇 2021年3月26日

相关推荐

0 0 投票数
文章评分
订阅评论
提醒
guest
70 评论
最旧
最新 最多投票
内联反馈
查看所有评论
Mark

支持,不错 冬佬晚上好滴!学生卡!打卡时间:上午12:25:49,请上车的乘客系好安全带~

奥奥

冬佬,这个如果我群晖强制不走代理,能否自动提交tg?

DDD

谢谢大佬~~学习了~
另外有个小错误
```
bash /app/msg.sh VAY /help
```
用户名`vay`前面要加`@`
应该改成
bash /app/msg.sh @VAY /help
滴!学生卡!打卡时间:上午12:55:58,请上车的乘客系好安全带~

DDD

那可能是可以选择`昵称`或者`@用户名`
因为机器人的昵称有空格,所以我用@用户名才发送成功

出发

冬佬,这个教程第一部分crontabs到底是什么格式文件?如何建立?不懂啊,一直卡在这里,能否更新详细点教程,还有如何映射等问题。

我

没有给登录账户赋予权限 只能root账户 输入命令

我

没有给登录账户赋予权限 只能root账户 输入命令

我

抱歉 搞错了。。。。麻烦博主删掉吧OωO

yhh

冬佬,可以一次发送多条消息吗?

yhh

冬佬,可以一次发送多条消息吗?

jclame

谢谢,弄了一下终于成功了~不过有个地方要注意:手机号码前面要加一个+86,比如号码是13333333333的,输入号码应该是+86 13333333333,注意86和号码之间有空格,最后的命令应该是crontab -e,没有s哈,十分感谢

光光

冬佬,消息内容有空格怎么处理?jd助力码里面有空格,如果有空格,空格后面的内容都没发出去

f

冬佬,cron可以设置具体到秒吗?我怎么进去crontab -e设置上边说明只到分

tian9570

测试时总是出现这个> FAIL: 38: can not parse arg #1
然后退出

tian9570

测试时总是出现这个> FAIL: 38: can not parse arg #1
然后退出

tian9570

bash /app/msg.sh @TuringLabbot test,应该不错啊,直接从tg复制的

tian9570

用博主刚发的命令不停的在刷新消息,就是没有向指定联系人发送测试消息。加入-e的参数就会很快跳出报错FAIL: 38: can not parse arg #1

tian9570

root@89ac88f3cfcf:/app# /usr/local/share/tg/bin/telegram-cli -k /app/Public-keys.pub -
W -e msg Turing_Lab_Bot test
change_user_group: can't find the user telegramd to switch to
Telegram-cli version 1.4.1, Copyright (C) 2013-2015 Vitaly Valtman
Telegram-cli comes with ABSOLUTELY NO WARRANTY; for details type `show_license'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show_license' for details.
Telegram-cli uses libtgl version 2.1.0
Telegram-cli includes software developed by the OpenSSL Project
for use in the OpenSSL Toolkit. (http://www.openssl.org/)
I: config dir=[/root/.telegram-cli]

ttt

这是不是就可以自动提交互助码了🌝🌝🌝

1

[secret] 这个占用挺大的,同时telethon 会导致失败
[/secret]

tian9570

大佬 ,你第二张图片 直接生成 crontab文件怎么弄的,我的需要进入容器才能修改很麻烦

tian9570

FAIL: 38: can not parse arg #1
大佬,这段时间报错38是什么原因啊

tian9570

应该不错啊,前段时间刚弄好的时候可以的,现在的话运行同样的发送助力码脚本大部分错误38,只有一两个可以发送

tian9570

那个是用数字id发送消息的吧,之前看过就是不会用,请问博主出的是docker下的教程吗

tian9570

哦,就是和藏经阁现在发的监控脚本差不多的吗

tian9570

感谢大佬解答

dhbowen

不支持6位cron吗?
秒不支持啊,现在上车要精确到秒了

Oniyou

冬佬,为啥我登录的时候没有提示输入手机号呢?直接到到命令行界面了,可以输入help查看命令,但是不能发消息之类的。应该是没有登录的,进去的时候都没提示输入手机号,试了很多次都不行……

Oniyou

有代理的,测试curl -I http://www.google.com有正常返回

Oniyou

宿主机和docker都配置了http代理,可以正常翻墙的,curl -I http://www.google.com返回状态码200,就是执行命令的不给telegram的登录提示

dhbowen

测试时总是出现这个> FAIL: 38: can not parse arg #1
然后退出
我发信息的时候也是这个提示,什么问题冬佬
登陆没问题

dhbowen

找到解决办法了
第一次登录到 telegram-cli 后,直接给某个对象发送消息会提示:error FAIL: 38: can not parse arg #1,但是我的用户名写的是没问题的。这时候需要首先执行一下 dialog_list 会输出当前登录账户的会话列表,可以看到每个会话的对象名称,这时候就可以正常通过使用对象名称或者 @username 来发送消息了。

建议执行时加上 -W参数以加载 dialog 列表,否则可能出现报警:error FAIL: 38: can not parse arg #1:
telegram-cli -W -e "msg @username message"

dhbowen

新的问题,定时任务设置好了,但是好像不按定时时间执行。

dhbowen

我去,不能定时的问题都是群晖docker版本低,要官网下载最新的docker安装,群晖不推送新版

dhbowen

问题就出在那个高权限命令,--privileged=true,不加这个发信息都正常,定时任务不执行,谷歌发现是真root权限问题,加了直接所有容器一重启就api错误,最后把docker套件都玩崩了。群晖默认docker版本太老,最后死马当活马医,发现官网有新docker套件,更新后所有问题全解决了。

dhbowen

另外error FAIL: 38: can not parse arg #1,的问题配置好后用手机端先发个信息给相应的用户就可以解决

dhbowen

冬佬,我想随机时间发TG信息可以吗?有的鸡场开始判断机器人签到了,我怀疑是根据时间判断,想随机。有办法实现吗?麻烦了

dhbowen

能举个例子吗?
30 8 * * * * sleep $[RANDOM\%90]m ; bash /app/msg.sh 昵称或@用户名 内容,90分钟内随机的意思?

dhbowen

可我试了实际没随机啊

dhbowen

随机任务搞定,多谢

Uknwoho

hi 请问用手机号登录 不论是 +861234567 还是 +86 1243253253 还是 +86 124 2435 3432 都报错:

*** 1638937561.735690 Notification API_64BIT_LOGIN_APP_OUTDATED_61: You are using an outdated app that is no longer supported. To access your messages, please update your app to the latest version. If you don’t know how to update your app, go to https://telegram.org/dl
*** 1638937561.735976 error for query 'send code' #7039183224485282816: #400 UPDATE_APP_TO_LOGIN
*** 1638937561.736023 Incorrect phone number
有人遇到不? 怎么解决呢

Uknwoho

有其他的telegram cli工具推荐吗.. 网上找了很久都是这一个.