seven 4 zile în urmă
părinte
comite
2beb7d45a4
1 a modificat fișierele cu 74 adăugiri și 1 ștergeri
  1. 74 1
      app/Http/Controllers/api/TelegramWebHook.php

+ 74 - 1
app/Http/Controllers/api/TelegramWebHook.php

@@ -40,6 +40,16 @@ class TelegramWebHook extends Controller
         $update = $telegram->getWebhookUpdate(); // 获取更新数据
         $update->callbackQuery;
         if ($update->has('callback_query')) {
+            $json['type'] = 'callback_query';
+            $callbackQuery = $update->callbackQuery;
+            $json['update'] = $callbackQuery;
+            $message = $callbackQuery->message;
+            $from = $callbackQuery->from;
+            $data = $callbackQuery->data; // 获取 callback_data
+            $m = new Message();
+            $m->json = $data;
+            $m->save();
+            Util::delCache($message->chat->id);
             Log::error('Telegram 回调数据(JSON): ' . json_encode($update, JSON_UNESCAPED_UNICODE));
 
         }else {
@@ -48,8 +58,65 @@ class TelegramWebHook extends Controller
                 $message = $update['message'];
                 $chatId = $message['chat']['id'];
                 $messageId = $message['message_id'];
+                DB::beginTransaction();
+                try {
+                    $m = new Message();
+                    $m->json = json_encode($update);
+                    $m->save();
+
+                    //用户发送图片,结算截图
+                    if (isset($message['photo'])) {
+                        $stepStatus = Cache::get(get_step_key($chatId), -1);
+                        $stepStatus = intval($stepStatus);
+                        // //结算截图
+                        // if ($stepStatus === StepStatus::INPUT_IMAGE) {
+                        //     $photo = $message['photo'][count($message['photo']) - 1];
+                        //     $res = (new SettlementService())->photo($photo, $chatId);
+                        //     if ($res) $telegram->sendMessage($res);
+                        // }//
+                        // //充值截图
+                        // else if ($stepStatus === StepStatus::INPUT_TOP_UP_IMAGE) {
+                        //     $photo = $message['photo'][count($message['photo']) - 1];
+                        //     $res = TopUpService::photo($chatId, $photo);
+                        //     if (isset($res['message_id'])) $telegram->editMessageText($res);
+                        //     else $telegram->sendMessage($res);
+                        // }
+
+                    } //用户发送了消息
+                    else if (isset($message['text'])) {
+                        $text = $message['text'];
+                        if ($message['chat']['type'] === 'private') {
+                            switch ($text) {
+                                case "/start":
+                                    Util::delCache($chatId);
+                                    $user = User::where('member_id', $chatId)->first();
+                                    if (!$user) {
+                                        $user = new User();
+                                        $user->member_id = $chatId;
+                                    }
+                                    $user->first_name = $message['chat']['first_name'];
+                                    $user->save();
+                                    //给每个用户生成一个专属的USDT钱包
+                                    WalletService::getUserWallet($chatId);
 
-                Log::error('Telegram 回调数据(JSON): ' . json_encode($update, JSON_UNESCAPED_UNICODE));
+                                    $username = config('services.telegram.username');
+                                    $telegram->sendMessage(['chat_id' => $chatId, 'text' => "你好,请选择功能菜单"]);
+                                    break;
+                                default:
+                                    //输入结算分数
+                            }
+                        }
+                    }
+
+                } catch (\Exception $e) {
+                    DB::rollBack();
+                    $m = new Message();
+                    $m->json = json_encode([
+                        'line' => $e->getLine(),
+                        'message' => $e->getMessage()
+                    ]);
+                    $m->save();
+                }
             }
 
         }
@@ -57,6 +124,12 @@ class TelegramWebHook extends Controller
     }
 
 
+    public function processChatMessage($chatId, $messageId, $message, $from)
+    {
+
+    }
+
+
     public function handleMessage(Request $request)
     {