需求
- 一些报表等内容,需要定时发送到土豆群组、个人、频道
- 多个项目都需要集成使用该功能
技术实现
- 创建土豆机器人
- 实现发送消息功能 接口
- 不像Telegram那样, potato 没有相关PHP的SDK包,于是自己决定开发一个
- 基于 Composer Library 进行开发
- 发布到 git 仓库,多项目直接 通过 Composer 引用
详细步骤
- 通过 BotFather 生成 XXXBot
- 获取 Http Api Token
- 获取 chat_id 分以下三种情况 - 好友(向 XXXBot 发送消息【接口xx】,或者加好友【接口】) - 群组(把 XXXBot 拉入群组) - 频道(把 XXXBot 拉入频道)
- 基于 Token 调用相应的接口
- 项目中 通过 composer 安装包
- 具体的业务中调用发送消息接口
SDK 使用方法
- 安装: composer require jsyqw/potato-bot
- 使用 SDK
//创建 potato 对象
$potato = new Potato(POTATO_BOT_TOKEN, POTATO_BOT_USERNAME);
发送消息
$reqData = new \Jsyqw\PotatoBot\Requests\ReqSendMessage();
$reqData->chat_type = \Jsyqw\PotatoBot\Types\ChatType::PeerChat;//群组
$reqData->chat_id = 10764236;
$reqData->text = date('Y-m-d H:i:s');
$ret = PotatoRequest::sendTextMessage($reqData);
var_dump($ret);
$reqData = new \Jsyqw\PotatoBot\Requests\ReqSendMessage();
$reqData->chat_type = \Jsyqw\PotatoBot\Types\ChatType::PeerUser;//个人
$reqData->chat_id = 23063733; // qq_1234
$reqData->text = date('Y-m-d H:i:s');
$ret = PotatoRequest::sendTextMessage($reqData);
var_dump($ret);
获取机器人基本信息
$ret = PotatoRequest::getMe();
var_dump($ret->result);
获取机器人的群组信息
$ret = PotatoRequest::getGroups();
echo json_encode($ret->result);
getUpdates
$ret = PotatoRequest::getUpdates();
echo json_encode($ret->result);
设置回调的钩子
$reqData = new \Jsyqw\PotatoBot\Requests\ReqSetWebhook();
$reqData->url = 'http://47.107.71.208:8088/a.php';
$ret = PotatoRequest::setWebhook($reqData);
var_dump($ret);
删除 回调
$ret = PotatoRequest::delWebhook();
var_dump($ret);
发送图片信息
$reqData = new \Jsyqw\PotatoBot\Requests\ReqSendPhoto();
$reqData->chat_id = 10764236; //群组
$reqData->chat_type = \Jsyqw\PotatoBot\Types\ChatType::PeerChat;
//$reqData->photo = '000002259ad1fc6b355c64d5ea30d41a';
$reqData->photo = fopen('./img.png', 'r');
$reqData->caption = '图片说明';
$ret = PotatoRequest::sendPhoto($reqData);
var_dump($ret);
发送文件
$reqData = new \Jsyqw\PotatoBot\Requests\ReqSendDocument();
$reqData->chat_id = 10764236; //群组
$reqData->chat_type = \Jsyqw\PotatoBot\Types\ChatType::PeerChat;
$reqData->document = '000002269a4b2176355c7bd5ea371a49';
//$reqData->document = fopen('./img.png', 'r');
$reqData->caption = '文件说明';
$ret = PotatoRequest::sendDocument($reqData);
var_dump($ret);
修改消息 ,注意必须是自己发送的消息才能修改
$reqData = new \Jsyqw\PotatoBot\Requests\ReqEditMessageText();
$reqData->chat_type = \Jsyqw\PotatoBot\Types\ChatType::PeerUser;
$reqData->chat_id = 23063733; // qq_1234
$reqData->text = 'update '.date('Y-m-d H:i:s');
$reqData->message_id = 64;
$ret = PotatoRequest::editMessageText($reqData);
var_dump($ret);
删除
$reqData = new \Jsyqw\PotatoBot\Requests\ReqDeleteMessage();
$reqData->chat_type = \Jsyqw\PotatoBot\Types\ChatType::PeerUser;
$reqData->chat_id = 23063733; // qq_1234
$reqData->message_id = 64;
$ret = PotatoRequest::deleteMessage($reqData);
退群或者频道
$reqData = new \Jsyqw\PotatoBot\Requests\ReqLeaveChat();
$reqData->chat_type = \Jsyqw\PotatoBot\Types\ChatType::ChannelChat;
$reqData->chat_id = 10764523; // 频道 ChinaMan
$ret = PotatoRequest::leaveChat($reqData);
其他
- 土豆聊天的官方地址
https://www.potato.im/ - 我的 开源 sdk 项目
https://github.com/jasonyqwang/PotatoBot.git
网友评论