Commit 97dbd725 by HanSon

重新定制格式

1 parent a9347535
...@@ -34,28 +34,33 @@ $robot->server->setMessageHandler(function ($message) use ($path) { ...@@ -34,28 +34,33 @@ $robot->server->setMessageHandler(function ($message) use ($path) {
/** @var $message Message */ /** @var $message Message */
print_r($message); print_r($message);
// 位置信息 返回位置文字 if($message){
if ($message instanceof Location) { print_r($message->msg);
return $message;
} }
// 文字信息 // 位置信息 返回位置文字
if ($message instanceof Text) { // if ($message instanceof Location) {
// 联系人自动回复 // Text::send('地图链接:'.$message->from['UserName'], $message->url);
if ($message->fromType === 'Contact') { // return '位置:'.$message;
// }
return http()->post('http://www.tuling123.com/openapi/api', [ // 文字信息
'key' => '1dce02aef026258eff69635a06b0ab7d', // if ($message instanceof Text) {
'info' => $message->content // // 联系人自动回复
], true)['text']; // if ($message->fromType === 'Contact') {
// 群组@我回复 //
} elseif ($message->fromType === 'Group' && $message->isAt) { // return http()->post('http://www.tuling123.com/openapi/api', [
return http()->post('http://www.tuling123.com/openapi/api', [ // 'key' => '1dce02aef026258eff69635a06b0ab7d',
'key' => '1dce02aef026258eff69635a06b0ab7d', // 'info' => $message->content
'info' => $message->content // ], true)['text'];
], true)['text']; // // 群组@我回复
} // } elseif ($message->fromType === 'Group' && $message->isAt) {
} // return http()->post('http://www.tuling123.com/openapi/api', [
// 'key' => '1dce02aef026258eff69635a06b0ab7d',
// 'info' => $message->content
// ], true)['text'];
// }
// }
// 图片信息 返回接收到的图片 // 图片信息 返回接收到的图片
// if ($message instanceof Image) { // if ($message instanceof Image) {
...@@ -79,78 +84,78 @@ $robot->server->setMessageHandler(function ($message) use ($path) { ...@@ -79,78 +84,78 @@ $robot->server->setMessageHandler(function ($message) use ($path) {
// } // }
// 撤回信息 // 撤回信息
if ($message instanceof Recall && $message->msg['FromUserName'] !== myself()->username) { // if ($message instanceof Recall && $message->msg['FromUserName'] !== myself()->username) {
/** @var $message Recall */ // /** @var $message Recall */
if($message->origin instanceof Image){ // if($message->origin instanceof Image){
Text::send($message->msg['FromUserName'], "{$message->nickname} 撤回了一张照片"); // Text::send($message->msg['FromUserName'], "{$message->nickname} 撤回了一张照片");
Image::sendByMsgId($message->msg['FromUserName'], $message->origin->msg['MsgId']); // Image::sendByMsgId($message->msg['FromUserName'], $message->origin->msg['MsgId']);
}elseif($message->origin instanceof Emoticon){ // }elseif($message->origin instanceof Emoticon){
Text::send($message->msg['FromUserName'], "{$message->nickname} 撤回了一个表情"); // Text::send($message->msg['FromUserName'], "{$message->nickname} 撤回了一个表情");
Emoticon::sendByMsgId($message->msg['FromUserName'], $message->origin->msg['MsgId']); // Emoticon::sendByMsgId($message->msg['FromUserName'], $message->origin->msg['MsgId']);
}elseif($message->origin instanceof Video){ // }elseif($message->origin instanceof Video){
Text::send($message->msg['FromUserName'], "{$message->nickname} 撤回了一个视频"); // Text::send($message->msg['FromUserName'], "{$message->nickname} 撤回了一个视频");
Video::sendByMsgId($message->msg['FromUserName'], $message->origin->msg['MsgId']); // Video::sendByMsgId($message->msg['FromUserName'], $message->origin->msg['MsgId']);
}elseif($message->origin instanceof Voice){ // }elseif($message->origin instanceof Voice){
Text::send($message->msg['FromUserName'], "{$message->nickname} 撤回了一条语音"); // Text::send($message->msg['FromUserName'], "{$message->nickname} 撤回了一条语音");
}else{ // }else{
Text::send($message->msg['FromUserName'], "{$message->nickname} 撤回了一条信息 \"{$message->origin->msg['Content']}\""); // Text::send($message->msg['FromUserName'], "{$message->nickname} 撤回了一条信息 \"{$message->origin->msg['Content']}\"");
} // }
// return $message; // }
} //
// // 红包信息
// 红包信息 // if($message instanceof RedPacket){
if($message instanceof RedPacket){ // // do something to notify if you want ...
// do something to notify if you want ... // return $message->content . ' 来自 ' .$message->from['NickName'];
return $message->content . ' 来自 ' .$message->from['NickName']; // }
} //
// // 转账信息
// 转账信息 // if($message instanceof Transfer){
if($message instanceof Transfer){ // /** @var $message Transfer */
/** @var $message Transfer */ // return $message->content . ' 收到金额 ' . $message->fee;
return $message->content . ' 收到金额 ' . $message->fee; // }
} //
// // 推荐名片信息
// 推荐名片信息 // if($message instanceof Recommend){
if($message instanceof Recommend){ // /** @var $message Recommend */
/** @var $message Recommend */ // if($message->isOfficial){
if($message->isOfficial){ // return $message->from['NickName'] . ' 向你推荐了公众号 ' . $message->province . $message->city .
return $message->from['NickName'] . ' 向你推荐了公众号 ' . $message->province . $message->city . // " {$message->info['NickName']} 公众号信息: {$message->description}";
" {$message->info['NickName']} 公众号信息: {$message->description}"; // }else{
}else{ // return $message->from['NickName'] . ' 向你推荐了 ' . $message->province . $message->city .
return $message->from['NickName'] . ' 向你推荐了 ' . $message->province . $message->city . // " {$message->info['NickName']} 头像链接: {$message->bigAvatar}";
" {$message->info['NickName']} 头像链接: {$message->bigAvatar}"; // }
} // }
} //
// // 请求添加信息
// 请求添加信息 // if($message instanceof RequestFriend){
if($message instanceof RequestFriend){ // /** @var $message RequestFriend */
/** @var $message RequestFriend */ // $groupUsername = group()->getGroupsByNickname('芬芬', true)->first()['UserName'];
$groupUsername = group()->getGroupsByNickname('芬芬', true)->first()['UserName']; //
// Text::send($groupUsername, "{$message->province}{$message->city} 的 {$message->info['NickName']} 请求添加好友 \"{$message->info['Content']}\"");
Text::send($groupUsername, "{$message->province}{$message->city}{$message->info['NickName']} 请求添加好友 \"{$message->info['Content']}\""); //
// if($message->info['Content'] === '上山打老虎'){
if($message->info['Content'] === '上山打老虎'){ // Text::send($groupUsername, '暗号正确');
Text::send($groupUsername, '暗号正确'); // $message->verifyUser($message::VIA);
$message->verifyUser($message::VIA); // }else{
}else{ // Text::send($groupUsername, '暗号错误');
Text::send($groupUsername, '暗号错误'); // }
} // }
} //
// // 分享信息
// 分享信息 // if($message instanceof Share){
if($message instanceof Share){ // /** @var $message Share */
/** @var $message Share */ // $reply = "收到分享\n标题:{$message->title}\n描述:{$message->description}\n链接:{$message->url}";
$reply = "收到分享\n标题:{$message->title}\n描述:{$message->description}\n链接:{$message->url}"; // if($message->app){
if($message->app){ // $reply .= "\n来源APP:{$message->app}";
$reply .= "\n来源APP:{$message->app}"; // }
} // return $reply;
return $reply; // }
} //
// // 手机点击聊天事件
// 手机点击聊天事件 // if($message instanceof Touch){
if($message instanceof Touch){ // print_r($message);
Text::send($message->to['UserName'], "我点击了此群"); // Text::send($message->to['UserName'], "我点击了此群");
} // }
return false; return false;
......
...@@ -53,9 +53,7 @@ class Account ...@@ -53,9 +53,7 @@ class Account
*/ */
public function getAccount($username) public function getAccount($username)
{ {
$account = $username === myself()->username ? myself() : null; $account = static::$group->get($username, null);
$account = $account ? : static::$group->get($username, null);
$account = $account ? : static::$contact->get($username, null); $account = $account ? : static::$contact->get($username, null);
......
...@@ -39,7 +39,6 @@ class MessageFactory ...@@ -39,7 +39,6 @@ class MessageFactory
*/ */
private function handleMessageByType($msg) private function handleMessageByType($msg)
{ {
Console::log($msg['MsgType']);
switch($msg['MsgType']){ switch($msg['MsgType']){
case 1: //文本消息 case 1: //文本消息
if(Location::isLocation($msg)){ if(Location::isLocation($msg)){
......
...@@ -125,8 +125,6 @@ class MessageHandler ...@@ -125,8 +125,6 @@ class MessageHandler
$content = $this->messageFactory->make($selector, $msg); $content = $this->messageFactory->make($selector, $msg);
if($content){ if($content){
$this->addToMessageCollection($content); $this->addToMessageCollection($content);
}
if($this->handler instanceof Closure){
$reply = call_user_func_array($this->handler, [$content]); $reply = call_user_func_array($this->handler, [$content]);
if($reply){ if($reply){
if($reply instanceof Image){ if($reply instanceof Image){
......
...@@ -9,6 +9,8 @@ ...@@ -9,6 +9,8 @@
namespace Hanson\Vbot\Core; namespace Hanson\Vbot\Core;
use Hanson\Vbot\Collections\Contact;
class Myself class Myself
{ {
...@@ -33,6 +35,7 @@ class Myself ...@@ -33,6 +35,7 @@ class Myself
public function init($user) public function init($user)
{ {
contact()->put($user['UserName'], $user);
$this->nickname = $user['NickName']; $this->nickname = $user['NickName'];
$this->username = $user['UserName']; $this->username = $user['UserName'];
$this->sex = $user['Sex']; $this->sex = $user['Sex'];
......
...@@ -34,29 +34,29 @@ class Emoticon extends Message implements MediaInterface, MessageInterface ...@@ -34,29 +34,29 @@ class Emoticon extends Message implements MediaInterface, MessageInterface
{ {
$response = static::uploadMedia($username, $file); $response = static::uploadMedia($username, $file);
if(!$response){ if (!$response) {
Console::log("表情 {$file} 上传失败"); Console::log("表情 {$file} 上传失败");
return false; return false;
} }
$mediaId = $response['MediaId']; $mediaId = $response['MediaId'];
$url = sprintf(server()->baseUri . '/webwxsendemoticon?fun=sys&f=json&pass_ticket=%s' , server()->passTicket); $url = sprintf(server()->baseUri . '/webwxsendemoticon?fun=sys&f=json&pass_ticket=%s', server()->passTicket);
$data = [ $data = [
'BaseRequest'=> server()->baseRequest, 'BaseRequest' => server()->baseRequest,
'Msg'=> [ 'Msg' => [
'Type'=> 47, 'Type' => 47,
"EmojiFlag"=> 2, "EmojiFlag" => 2,
'MediaId'=> $mediaId, 'MediaId' => $mediaId,
'FromUserName'=> myself()->username, 'FromUserName' => myself()->username,
'ToUserName'=> $username, 'ToUserName' => $username,
'LocalID'=> time() * 1e4, 'LocalID' => time() * 1e4,
'ClientMsgId'=> time() * 1e4 'ClientMsgId' => time() * 1e4
] ]
]; ];
$result = http()->json($url, $data, true); $result = http()->json($url, $data, true);
if($result['BaseResponse']['Ret'] != 0){ if ($result['BaseResponse']['Ret'] != 0) {
Console::log('发送表情失败'); Console::log('发送表情失败');
return false; return false;
} }
...@@ -87,7 +87,7 @@ class Emoticon extends Message implements MediaInterface, MessageInterface ...@@ -87,7 +87,7 @@ class Emoticon extends Message implements MediaInterface, MessageInterface
{ {
$url = server()->baseUri . sprintf('/webwxgetmsgimg?MsgID=%s&skey=%s', $this->msg['MsgId'], server()->skey); $url = server()->baseUri . sprintf('/webwxgetmsgimg?MsgID=%s&skey=%s', $this->msg['MsgId'], server()->skey);
$content = http()->get($url); $content = http()->get($url);
FileManager::download($this->msg['MsgId'].'.gif', $content, static::$folder); FileManager::download($this->msg['MsgId'] . '.gif', $content, static::$folder);
} }
public function make() public function make()
......
...@@ -41,28 +41,28 @@ class Image extends Message implements MessageInterface, MediaInterface ...@@ -41,28 +41,28 @@ class Image extends Message implements MessageInterface, MediaInterface
{ {
$response = static::uploadMedia($username, $file); $response = static::uploadMedia($username, $file);
if(!$response){ if (!$response) {
Console::log("文件 {$file} 上传失败"); Console::log("文件 {$file} 上传失败");
return false; return false;
} }
$mediaId = $response['MediaId']; $mediaId = $response['MediaId'];
$url = sprintf(server()->baseUri . '/webwxsendmsgimg?fun=async&f=json&pass_ticket=%s' , server()->passTicket); $url = sprintf(server()->baseUri . '/webwxsendmsgimg?fun=async&f=json&pass_ticket=%s', server()->passTicket);
$data = [ $data = [
'BaseRequest'=> server()->baseRequest, 'BaseRequest' => server()->baseRequest,
'Msg'=> [ 'Msg' => [
'Type'=> 3, 'Type' => 3,
'MediaId'=> $mediaId, 'MediaId' => $mediaId,
'FromUserName'=> myself()->username, 'FromUserName' => myself()->username,
'ToUserName'=> $username, 'ToUserName' => $username,
'LocalID'=> time() * 1e4, 'LocalID' => time() * 1e4,
'ClientMsgId'=> time() * 1e4 'ClientMsgId' => time() * 1e4
] ]
]; ];
$result = http()->json($url, $data, true); $result = http()->json($url, $data, true);
if($result['BaseResponse']['Ret'] != 0){ if ($result['BaseResponse']['Ret'] != 0) {
Console::log('发送图片失败'); Console::log('发送图片失败');
return false; return false;
} }
...@@ -79,6 +79,6 @@ class Image extends Message implements MessageInterface, MediaInterface ...@@ -79,6 +79,6 @@ class Image extends Message implements MessageInterface, MediaInterface
{ {
$url = server()->baseUri . sprintf('/webwxgetmsgimg?MsgID=%s&skey=%s', $this->msg['MsgId'], server()->skey); $url = server()->baseUri . sprintf('/webwxgetmsgimg?MsgID=%s&skey=%s', $this->msg['MsgId'], server()->skey);
$content = http()->get($url); $content = http()->get($url);
FileManager::download($this->msg['MsgId'].'.jpg', $content, static::$folder); FileManager::download($this->msg['MsgId'] . '.jpg', $content, static::$folder);
} }
} }
\ No newline at end of file \ No newline at end of file
...@@ -78,12 +78,8 @@ class Message ...@@ -78,12 +78,8 @@ class Message
{ {
if ($this->msg['MsgType'] == 51) { if ($this->msg['MsgType'] == 51) {
$this->fromType = 'System'; $this->fromType = 'System';
} elseif ($this->msg['MsgType'] == 37) {
$this->fromType = 'FriendRequest';
} elseif ($this->msg['FromUserName'] === myself()->username) { } elseif ($this->msg['FromUserName'] === myself()->username) {
$this->fromType = 'Self'; $this->fromType = 'Self';
} elseif ($this->msg['ToUserName'] === 'filehelper') {
$this->fromType = 'FileHelper';
} elseif (substr($this->msg['FromUserName'], 0, 2) === '@@') { # group } elseif (substr($this->msg['FromUserName'], 0, 2) === '@@') { # group
$this->fromType = 'Group'; $this->fromType = 'Group';
} elseif (contact()->getContactByUsername($this->msg['FromUserName'])) { } elseif (contact()->getContactByUsername($this->msg['FromUserName'])) {
......
...@@ -33,7 +33,7 @@ class Text extends Message implements MessageInterface ...@@ -33,7 +33,7 @@ class Text extends Message implements MessageInterface
*/ */
public static function send($username, string $word) public static function send($username, string $word)
{ {
if(!$word){ if (!$word) {
return false; return false;
} }
...@@ -52,10 +52,10 @@ class Text extends Message implements MessageInterface ...@@ -52,10 +52,10 @@ class Text extends Message implements MessageInterface
'Scene' => 0 'Scene' => 0
]; ];
$result = http()->post(server()->baseUri . '/webwxsendmsg?pass_ticket=' . server()->passTicket, $result = http()->post(server()->baseUri . '/webwxsendmsg?pass_ticket=' . server()->passTicket,
json_encode($data, JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES), true json_encode($data, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES), true
); );
if($result['BaseResponse']['Ret'] != 0){ if ($result['BaseResponse']['Ret'] != 0) {
Console::log('发送消息失败'); Console::log('发送消息失败');
return false; return false;
} }
...@@ -67,6 +67,6 @@ class Text extends Message implements MessageInterface ...@@ -67,6 +67,6 @@ class Text extends Message implements MessageInterface
{ {
$this->content = $this->msg['Content']; $this->content = $this->msg['Content'];
$this->isAt = str_contains($this->content, '@'.myself()->nickname); $this->isAt = str_contains($this->content, '@' . myself()->nickname);
} }
} }
\ No newline at end of file \ No newline at end of file
...@@ -33,28 +33,28 @@ class Video extends Message implements MessageInterface, MediaInterface ...@@ -33,28 +33,28 @@ class Video extends Message implements MessageInterface, MediaInterface
{ {
$response = static::uploadMedia($username, $file); $response = static::uploadMedia($username, $file);
if(!$response){ if (!$response) {
Console::log("视频 {$file} 上传失败"); Console::log("视频 {$file} 上传失败");
return false; return false;
} }
$mediaId = $response['MediaId']; $mediaId = $response['MediaId'];
$url = sprintf(server()->baseUri . '/webwxsendvideomsg?fun=async&f=json&pass_ticket=%s' , server()->passTicket); $url = sprintf(server()->baseUri . '/webwxsendvideomsg?fun=async&f=json&pass_ticket=%s', server()->passTicket);
$data = [ $data = [
'BaseRequest'=> server()->baseRequest, 'BaseRequest' => server()->baseRequest,
'Msg'=> [ 'Msg' => [
'Type'=> 43, 'Type' => 43,
'MediaId'=> $mediaId, 'MediaId' => $mediaId,
'FromUserName'=> myself()->username, 'FromUserName' => myself()->username,
'ToUserName'=> $username, 'ToUserName' => $username,
'LocalID'=> time() * 1e4, 'LocalID' => time() * 1e4,
'ClientMsgId'=> time() * 1e4 'ClientMsgId' => time() * 1e4
] ]
]; ];
$result = http()->json($url, $data, true); $result = http()->json($url, $data, true);
if($result['BaseResponse']['Ret'] != 0){ if ($result['BaseResponse']['Ret'] != 0) {
Console::log('发送视频失败'); Console::log('发送视频失败');
return false; return false;
} }
...@@ -89,7 +89,7 @@ class Video extends Message implements MessageInterface, MediaInterface ...@@ -89,7 +89,7 @@ class Video extends Message implements MessageInterface, MediaInterface
'Range' => 'bytes=0-' 'Range' => 'bytes=0-'
] ]
]); ]);
FileManager::download($this->msg['MsgId'].'.mp4', $content, static::$folder); FileManager::download($this->msg['MsgId'] . '.mp4', $content, static::$folder);
} }
public function make() public function make()
......
...@@ -29,17 +29,6 @@ class Voice extends Message implements MessageInterface, MediaInterface ...@@ -29,17 +29,6 @@ class Voice extends Message implements MessageInterface, MediaInterface
} }
/** /**
* 根据MsgID发送文件
*
* @param $username
* @param $msgId
* @return mixed
*/
public static function sendByMsgId($username, $msgId)
{
}
/**
* 下载文件 * 下载文件
* *
* @return mixed * @return mixed
......
...@@ -13,15 +13,6 @@ interface MediaInterface ...@@ -13,15 +13,6 @@ interface MediaInterface
{ {
/** /**
* 根据MsgID发送文件
*
* @param $username
* @param $msgId
* @return mixed
*/
public static function sendByMsgId($username, $msgId);
/**
* 下载文件 * 下载文件
* *
* @return mixed * @return mixed
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!