美文网首页
土豆聊天 potato chat 机器人发送消息功能

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

作者: PHP的点滴 | 来源:发表于2019-05-15 13:26 被阅读0次

    需求

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

    技术实现

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

    其他

    相关文章

      网友评论

          本文标题:土豆聊天 potato chat 机器人发送消息功能

          本文链接:https://www.haomeiwen.com/subject/fnlpaqtx.html