seven 1 săptămână în urmă
părinte
comite
87fd97b561
2 a modificat fișierele cu 150 adăugiri și 74 ștergeri
  1. 81 73
      app/Http/Controllers/api/TelegramWebHook.php
  2. 69 1
      app/Services/KeyboardService.php

+ 81 - 73
app/Http/Controllers/api/TelegramWebHook.php

@@ -493,6 +493,14 @@ class TelegramWebHook extends BaseController
             $user->save();
             App::setLocale($user->language);
             if ($message['chat']['type'] === 'private') {
+
+                // 校验开始菜单事件
+                $returnMsg = KeyboardService::checkStart($chatId,$text);
+                if($returnMsg){
+                    return $returnMsg;
+                }
+
+
                 switch ($text) {
                     case "/start":
                         Util::delCache($chatId);
@@ -500,79 +508,79 @@ class TelegramWebHook extends BaseController
                         WalletService::getUserWallet($chatId);
                         self::setReplyKeyboard($chatId);
                         break;
-                    case lang("近期注单"):
-                    case lang('"✅近期注单"'):
-                        Util::delCache($chatId);
-                        $returnMsg = BetService::record($chatId);
-                        break;
-                    case lang("今日流水"):
-                    case lang("🔍今日流水"):
-                        Util::delCache($chatId);
-                        $returnMsg = BalanceLogService::getTodayFlowing($chatId);
-                        // $this->telegram->sendMessage($result);
-                        break;
-                    case lang("流水列表"):
-                    case lang("🔍流水列表"):
-                        Util::delCache($chatId);
-                        $returnMsg = BalanceLogService::getFlowingHistory($chatId);
-                        // $this->telegram->sendMessage($result);
-                        break;
-                    case lang("联系客服"):
-                        Util::delCache($chatId);
-                        $receivingAddress = Config::where('field', 'receiving_address')->first()->val;
-                        $serviceCustomer = Config::where('field', 'service_customer')->first()->val;
-                        $text = "官方唯一上分地址:\n";
-                        $text .= "USDT: \n";
-                        $text .= "{$receivingAddress}\n\n\n";
-                        $text .= "‼️特别注意‼️特别注意‼️\n";
-                        $text .= "‼️近期骗子肆意妄为,猖狂狡诈。经常冒充我方财务,管理人员以各种手段行使诈骗之术。多数为要求转账/提供验证码等。任何主动私聊您的都是非奸即盗。望各位老板谨记,预防受骗!\n";
-                        $text .= "‼️本群管理以及财务绝不会主动私聊客户。请各位老板务必认准群内带标识管理账号,转账前务必核对是否官方账号以及地址。任何一切不是官方行为的受骗上当,本群概不负责,谢谢!\n";
-                        $text .= "‼️为了您的资金安全,下分更换地址请提前告知财务,并使用原地址进行转账或录屏进行身份核实,核实为本人操作后才可进行更换地址下分\n";
-                        $text .= "‼️如查分金额与实际转账金额不同,请重新喊查。玩家重复查3次以上错误金额则视为恶意捣乱,将不退还转账金额!\n";
-                        $text .= "‼️如因为人为失误问题,到账金额与玩家实际转账金额不符,到账后的一切下注视为无效。\n";
-                        $text .= "‼️本群不接待以任何形式刷水的水军,一经发现玩家存在刷水行为将扣除历史所有返水、彩金。并冻结分数一个月,每天仅可下分账户余额10%。不纠结,不解释,请各大水军自行绕道。\n";
-                        $keyboard = [];
-                        $keyboard[] = [['text' => '✅ 唯一客服', 'callback_data' => "", 'url' => "https://t.me/{$serviceCustomer}"]];
-                        $returnMsg = [
-                            'chat_id' => $chatId,
-                            'text' => $text,
-                            'reply_markup' => json_encode(['inline_keyboard' => $keyboard])
-                        ];
-                        break;
-                    case lang("开奖历史"):
-                    case lang("📝开奖历史"):
-                        Util::delCache($chatId);
-                        IssueService::currentLotteryResults($chatId);
-                        break;
-                    case lang("当期下注"):
-                    case lang("🔥当期下注"):
-                    case lang("🔥本期下注"):
-                        Util::delCache($chatId);
-                        $returnMsg = BetService::currentBet($chatId);
-                        break;
-                    case lang("选择语言"):
-                        Util::delCache($chatId);
-                        $returnMsg = UserService::getLanguages($chatId);
-                        break;
-                    case lang("查看余额"):
-                    case lang("💰查看余额"):
-                        Util::delCache($chatId);
-                        $returnMsg = WalletService::getBalance($chatId);
-                        break;
-                    case lang("投注大群"):
-                        Util::delCache($chatId);
-
-                        $bettingGroup = Config::where('field', 'betting_group')->first()->val;
-
-                        $text = "👇👇👇点击下方按钮进群投注👇👇👇 \n";
-                        $keyboard = [];
-                        $keyboard[] = [['text' => '✅ 投注群', 'callback_data' => "", 'url' => "https://t.me/{$bettingGroup}"]];
-                        $returnMsg = [
-                            'chat_id' => $chatId,
-                            'text' => $text,
-                            'reply_markup' => json_encode(['inline_keyboard' => $keyboard])
-                        ];
-                        break;
+                    // case lang("近期注单"):
+                    // case lang('"✅近期注单"'):
+                    //     Util::delCache($chatId);
+                    //     $returnMsg = BetService::record($chatId);
+                    //     break;
+                    // case lang("今日流水"):
+                    // case lang("🔍今日流水"):
+                    //     Util::delCache($chatId);
+                    //     $returnMsg = BalanceLogService::getTodayFlowing($chatId);
+                    //     // $this->telegram->sendMessage($result);
+                    //     break;
+                    // case lang("流水列表"):
+                    // case lang("🔍流水列表"):
+                    //     Util::delCache($chatId);
+                    //     $returnMsg = BalanceLogService::getFlowingHistory($chatId);
+                    //     // $this->telegram->sendMessage($result);
+                    //     break;
+                    // case lang("联系客服"):
+                    //     Util::delCache($chatId);
+                    //     $receivingAddress = Config::where('field', 'receiving_address')->first()->val;
+                    //     $serviceCustomer = Config::where('field', 'service_customer')->first()->val;
+                    //     $text = "官方唯一上分地址:\n";
+                    //     $text .= "USDT: \n";
+                    //     $text .= "{$receivingAddress}\n\n\n";
+                    //     $text .= "‼️特别注意‼️特别注意‼️\n";
+                    //     $text .= "‼️近期骗子肆意妄为,猖狂狡诈。经常冒充我方财务,管理人员以各种手段行使诈骗之术。多数为要求转账/提供验证码等。任何主动私聊您的都是非奸即盗。望各位老板谨记,预防受骗!\n";
+                    //     $text .= "‼️本群管理以及财务绝不会主动私聊客户。请各位老板务必认准群内带标识管理账号,转账前务必核对是否官方账号以及地址。任何一切不是官方行为的受骗上当,本群概不负责,谢谢!\n";
+                    //     $text .= "‼️为了您的资金安全,下分更换地址请提前告知财务,并使用原地址进行转账或录屏进行身份核实,核实为本人操作后才可进行更换地址下分\n";
+                    //     $text .= "‼️如查分金额与实际转账金额不同,请重新喊查。玩家重复查3次以上错误金额则视为恶意捣乱,将不退还转账金额!\n";
+                    //     $text .= "‼️如因为人为失误问题,到账金额与玩家实际转账金额不符,到账后的一切下注视为无效。\n";
+                    //     $text .= "‼️本群不接待以任何形式刷水的水军,一经发现玩家存在刷水行为将扣除历史所有返水、彩金。并冻结分数一个月,每天仅可下分账户余额10%。不纠结,不解释,请各大水军自行绕道。\n";
+                    //     $keyboard = [];
+                    //     $keyboard[] = [['text' => '✅ 唯一客服', 'callback_data' => "", 'url' => "https://t.me/{$serviceCustomer}"]];
+                    //     $returnMsg = [
+                    //         'chat_id' => $chatId,
+                    //         'text' => $text,
+                    //         'reply_markup' => json_encode(['inline_keyboard' => $keyboard])
+                    //     ];
+                    //     break;
+                    // case lang("开奖历史"):
+                    // case lang("📝开奖历史"):
+                    //     Util::delCache($chatId);
+                    //     IssueService::currentLotteryResults($chatId);
+                    //     break;
+                    // case lang("当期下注"):
+                    // case lang("🔥当期下注"):
+                    // case lang("🔥本期下注"):
+                    //     Util::delCache($chatId);
+                    //     $returnMsg = BetService::currentBet($chatId);
+                    //     break;
+                    // case lang("选择语言"):
+                    //     Util::delCache($chatId);
+                    //     $returnMsg = UserService::getLanguages($chatId);
+                    //     break;
+                    // case lang("查看余额"):
+                    // case lang("💰查看余额"):
+                    //     Util::delCache($chatId);
+                    //     $returnMsg = WalletService::getBalance($chatId);
+                    //     break;
+                    // case lang("投注大群"):
+                    //     Util::delCache($chatId);
+
+                    //     $bettingGroup = Config::where('field', 'betting_group')->first()->val;
+
+                    //     $text = "👇👇👇点击下方按钮进群投注👇👇👇 \n";
+                    //     $keyboard = [];
+                    //     $keyboard[] = [['text' => '✅ 投注群', 'callback_data' => "", 'url' => "https://t.me/{$bettingGroup}"]];
+                    //     $returnMsg = [
+                    //         'chat_id' => $chatId,
+                    //         'text' => $text,
+                    //         'reply_markup' => json_encode(['inline_keyboard' => $keyboard])
+                    //     ];
+                    //     break;
                     default:
                         // 关键字回复
                         $keyboardText = KeyboardService::findOne(['button' => $text]);

+ 69 - 1
app/Services/KeyboardService.php

@@ -8,7 +8,11 @@ use App\Models\Keyboard;
 use Illuminate\Support\Facades\DB;
 use Illuminate\Support\Collection;
 use Illuminate\Support\Facades\Cache;
-
+use App\Services\BetService;
+use App\Services\BalanceLogService;
+use App\Services\IssueService;
+use App\Services\WalletService;
+use App\Constants\Util;
 
 /**
  * 菜单
@@ -140,4 +144,68 @@ class KeyboardService extends BaseService
 
         return $msg;
     }
+
+    // 校验开始菜单 事件
+    public static function checkStart($chatId,$keyword = '')
+    {
+        // 查找开始使用的菜单
+        $list = self::findAll(['button' => '开始使用'])->toArray();
+
+        foreach($list as $item){
+            $buttons = [];
+            if(isset($item['buttons']) && !empty($item['buttons'])){
+                $buttons = json_decode($item['buttons'],true);
+            }
+            foreach($buttons as $row){
+                if(isset($row['text']) && $row['text'] == $keyword){
+                    if(isset($row['url']) && !empty($row['url'])){
+                        return self::menuEvent($chatId,$row['url']);
+                    }
+                }
+            }
+        }
+
+        return false;
+    }
+
+    // 开始菜单触发事件
+    public static function menuEvent($chatId,$event = '')
+    {
+        switch($event){
+            case 'recentBets': // 近期注单
+                // 删除个人缓存
+                Util::delCache($chatId);
+                return BetService::record($chatId);
+                
+                break;
+            case 'flowList': // 流水列表
+                // 删除个人缓存
+                Util::delCache($chatId);
+                return BalanceLogService::getFlowingHistory($chatId);
+
+                break;
+            case 'winningHistory': // 开奖历史
+                // 删除个人缓存
+                Util::delCache($chatId);
+                return IssueService::currentLotteryResults($chatId);
+
+                break;
+            case 'currentBetting': // 本期下注
+                // 删除个人缓存
+                Util::delCache($chatId);
+                return BetService::currentBet($chatId);
+            case 'checkBalance': // 查看余额
+                // 删除个人缓存
+                Util::delCache($chatId);
+                return WalletService::getBalance($chatId);
+            case 'selectLanguage': // 选择语言
+                // 删除个人缓存
+                Util::delCache($chatId);
+                return UserService::getLanguages($chatId);
+
+                break;
+            default:
+                return false;
+        }
+    }
 }