如何从Bash脚本向telegram-cli发送命令批量添加联系人
我来帮你搞定这个批量添加联系人的需求!要从Bash脚本给telegram-cli发送命令,有两种实用的方法,我给你详细拆解一下:
方法1:通过管道(Pipe)批量输入命令
telegram-cli支持从标准输入读取命令,所以我们可以用Bash的while循环读取手机号文件的每一行,然后把生成的add_contact命令通过管道传给telegram-cli执行。
示例脚本如下:
#!/bin/bash # 替换成你的手机号文件路径,要求每行一个手机号(带国家代码,比如+8613xxxxxxxxx) PHONE_FILE="phone_numbers.txt" # 先检查文件是否存在 if [[ ! -f "$PHONE_FILE" ]]; then echo "错误:手机号文件 $PHONE_FILE 不存在!" exit 1 fi # 启动telegram-cli并通过管道传入命令 while read -r phone; do # 跳过空行 if [[ -z "$phone" ]]; then continue fi # 生成add_contact命令,这里把手机号同时作为 firstName 和 lastName,你可以自定义 echo "add_contact $phone $phone ''" done < "$PHONE_FILE" | telegram-cli -W
说明:
-W参数是让telegram-cli以交互模式启动但等待输入,这样管道里的命令才能被正确执行。第一次运行telegram-cli需要扫码登录,之后会话会自动保存。
方法2:使用telegram-cli的
--exec参数批量执行 这个方法会先把所有add_contact命令拼接成一个字符串,然后通过--exec参数一次性传给telegram-cli执行,适合大规模批量操作。
示例脚本:
#!/bin/bash PHONE_FILE="phone_numbers.txt" if [[ ! -f "$PHONE_FILE" ]]; then echo "错误:手机号文件 $PHONE_FILE 不存在!" exit 1 fi # 拼接所有add_contact命令,用分号分隔 COMMANDS="" while read -r phone; do if [[ -n "$phone" ]]; then COMMANDS+="add_contact $phone $phone '';" fi done < "$PHONE_FILE" # 执行批量命令 telegram-cli -W --exec "$COMMANDS"
关键注意事项
- 手机号格式必须正确:一定要带国家代码前缀(比如
+86、+1),否则Telegram无法识别该号码。 - 自定义联系人信息:你可以把脚本里的
$phone替换成自定义的姓名,比如echo "add_contact $phone '新联系人' ''"。 - 避免重复添加:如果某个号码已经是你的联系人,telegram-cli会返回错误提示,但不会中断后续命令执行。
内容的提问来源于stack exchange,提问作者user8129861
相关产品推荐
相关产品推荐

