如何通过电报机器人给自己或群组发消息
如题,什么情况下需要用到这个方法呢?
如果你的网络业务通知是通过短信发送管理员的,采用这种方式可以节省短信费用。
还可以用来发送简报给管理员,发送通知或推广信息到群组,想想是不是一个很棒的主意!
试想你有一个外贸独立站,在每天00:00的时候你想要知道前一天网站的PV,订单量,销售额等等,首先你想到的肯定是打开网站后台查看,这当然没错,但是如果到时间你的Telegram自动收到一条消息,为你推送这些消息,是不是很酷,而且免费。更多玩法全靠你的想象力!
本文适用人群
电报 (Telegram) 需要科学上网才能用,国内用不了,有跨境电商,海外业务的小伙伴应该会用到,它是一个聊天工具,类似微信,相当灵活,有大量的API接口可以使用,今天我们要说的就是机器人接口!
创建机器人
电报的机器人其实就是一个聊天对象,表现形式和你添加的好友一样,只是名字需要以 bot 结尾,不区分大小写。
要使用机器人发消息给自己或群组,先得有一个机器人,创建一个属于自己的机器人很简单,添加BotFather这个账号,依次发送以下内容即可:
- /start
- /newbot
- YourNameBot (给你的机器人取名字,以 Bot 结尾,不区分大小写,直接发送过去即可,如果重名了会提示重新输入)
有的小伙伴可能不知道怎么添加BotFather,随便找一个好友,给他发送 “@BotFather” 然后点击这条消息即可与BotFather对话了。
如图,创建成功后BotFather会返回一个token,如上图所示,这是用来调用API接口的,先记下后面会用到。
准备会话
上面我们创建了“YourNameBot”这个机器人,要与之回话,在任意聊天窗口发送 “@YourNameBot” 然后点击这条消息即可打开与YourNameBot的聊天。
如果你需要机器人发送消息给群组,还需要把机器人拉入到群组中。
特别注意:需要先与机器人之间创建会话,机器人才能下发消息,否则机器人无法主动发送消息,切记!
通过阅读电报机器人API文档得知,机器人发送文本消息需要以下三个变量:
- token (创建机器人时已获得)
- chat_id (聊天ID)
- message (要发送的消息,这个由你输入即可,或者是网站后台程序生成的报表数据等等,支持emoji表情哦)
还差chat_id还没有,要怎么获取呢,添加userinfobot获取你的ID,和上面一样,在任意聊天窗口发送“@userinfobot”然后点击这条消息即可打开与userinfobot的聊天,发送任意消息给userinfobot它会返回你的信息,其中包含一个ID,这就是我们需要的chat_id
至此,我们已经准备好了所有的必要条件,只需要写点代码来下发消息即可。
开始写代码
我们采用PHP实现,使用其他语言的小伙伴请当成伪代码来看,参考官方文档轻松实现消息下发。
文档地址:https://core.telegram.org/bots/api#sendmessage
采用 telegram-bot/api 这个开源的SDK,用Composer安装SDK到项目中:
composer require telegram-bot/api
或前往 https://github.com/TelegramBot/Api 下载此SDK手动加入到自己的项目。
PHP发送代码:
/**
* 使用BotAPI发送文本消息给个人或群组
*
* @return boolean
*/
public function send()
{
$token = '你机器人的token';
$chat_id = '个人ID或群组ID';
$message = '不用上班的程序员';
try {
$bot = new \TelegramBot\Api\BotApi($token);
$m = $bot->sendMessage($chat_id, $message);
if ($m instanceof \TelegramBot\Api\Types\Message) {
return true;
}
return true;
} catch (\Exception $e) {
return false;
}
}
如果你不使用PHP,可以通过CURL来测试下发消息,CURL代码如下:
curl -X POST “https://api.telegram.org/bot<token>/sendMessage" -d "chat_id=-xxx&text=不用上班的程序员"
替换里面的 <token> 为你机器人的token,替换 -xxx 为你的chat_id
如何获取电报群组的ID?
上面我们通过userinfobot这个机器人获取个人的chat_id, 使得机器人可以发消息给个人,群组则没办法通过这种方式获取其ID。
通过下面的步骤可以获得群组ID:
- 在群里发送任意消息
- 打开这个网址 https://api.telegram.org/bot<替换成你机器人的token, 包括尖括号>/getUpdates, 页面会输出一段JSON
- 查找 id: -xxx 的一段值,这里的 -xxx 就是群组ID,机器人下发消息的时候的chat_id字段使用这个即可发送消息到群组了
至此我们已经可以通过程序触发电报机器人下发消息给个人或群组了,只需要在你后台程序合适的地方触发即可,或者设立定时任务来触发下发消息或报表。
除了发送文本消息,还可以发送图片,语音,视频,动画,文件等等。
能看到这里,说明你已经有了很多奇思妙想,可以应用到自己的业务中,马上试试吧!如果没时间,就先点赞收藏下吧,回头慢慢看!
直达链接: 堆栈导航-BotFather