土豆聊天 potato chat 机器人发送消息功能

需求

  • 一些报表等内容,需要定时发送到土豆群组、个人、频道
  • 多个项目都需要集成使用该功能

技术实现

  • 创建土豆机器人
  • 实现发送消息功能 接口
  • 不像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

你可能感兴趣的:(土豆聊天 potato chat 机器人发送消息功能)