├── README.md └── TelegramProcess.php /README.md: -------------------------------------------------------------------------------- 1 | # telegram-sspanel 2 | sspanel机器人强化版 3 | ``` 4 | * /help - 获取当前聊天中可用的指令列表 5 | * /about - 关于 6 | * /my - 获取账户信息 7 | * /checkin - 签到 8 | * /invite - 获取邀请链接 9 | * /nodes - 获取节点列表(仅限私聊) 10 | * /sub - 获取或重置订阅链接(仅限私聊) 11 | * /store - 打开商店面板(仅限私聊) 12 | * /buy <商品ID> [优惠码] - 直接购买商品(仅限私聊) 13 | * /redeem <充值码> - 兑换充值码(仅限私聊) 14 | * /info [base/all] [邮箱(回复消息无需指定)] - 获取用户信息 15 | * /find [类型] - 搜索用户 16 | * /ban [邮箱(回复消息无需指定)] - 禁用用户账户(别名/sban) 17 | * /active [邮箱(回复消息无需指定)] - 启用用户账户 18 | * /setclass <(+/-)等级> [邮箱(回复消息无需指定)] - 修改用户等级 19 | * /setdate [邮箱(回复消息无需指定)] - 设置用户等级有效期 20 | * /setmoney <(+/-)数字> [邮箱(回复消息无需指定)] - 修改用户余额 21 | * /setconnector <(+/-)IP数> [邮箱(回复消息无需指定)] - 修改用户最大设备数 22 | * /setrole [邮箱(回复消息无需指定)] - 修改用户身份(设置面板管理员) 23 | * /setspeed <限速(Mbps)> [邮箱(回复消息无需指定)] - 修改用户限速 24 | * /generatecode <金额> <数量> - 生成充值码(别名/gencode) 25 | * /delnode <节点ID> - 删除节点 26 | ``` 27 | -------------------------------------------------------------------------------- /TelegramProcess.php: -------------------------------------------------------------------------------- 1 | sendMessage($message->getChat()->getId(), "您当前的流量状况: 25 | 今日已使用 ".$user->TodayusedTraffic()." ".number_format(($user->u+$user->d-$user->last_day_t)/$user->transfer_enable*100, 2)."% 26 | 今日之前已使用 ".$user->LastusedTraffic()." ".number_format($user->last_day_t/$user->transfer_enable*100, 2)."% 27 | 未使用 ".$user->unusedTraffic()." ".number_format(($user->transfer_enable-($user->u+$user->d))/$user->transfer_enable*100, 2)."% 28 | ", $parseMode = null, $disablePreview = false, $replyToMessageId = $reply_to); 29 | break; 30 | case 'checkin': 31 | if (!$user->isAbleToCheckin()) { 32 | $bot->sendMessage($message->getChat()->getId(), "您今天已经签过到了!", $parseMode = null, $disablePreview = false, $replyToMessageId = $reply_to); 33 | break; 34 | } 35 | $traffic = rand(Config::get('checkinMin'), Config::get('checkinMax')); 36 | if(time() >= 1549209600 and time() <= 1550592000){ 37 | $user->transfer_enable = $user->transfer_enable + Tools::toMB($traffic * 10); 38 | $traffics = $traffic * 10; 39 | $sendtext = "签到成功!获得了 ".$traffics." MB 流量!新年签到福利,十倍流量十倍快乐!"; 40 | }elseif($user->class != 0){ 41 | $user->transfer_enable = $user->transfer_enable + Tools::toMB($traffic * 2); 42 | $traffics = $traffic * 2; 43 | $sendtext = "签到成功!获得了 ".$traffics." MB 流量!VIP签到福利,双倍流量双倍快乐!"; 44 | }else{ 45 | $user->transfer_enable = $user->transfer_enable + Tools::toMB($traffic); 46 | $sendtext = "签到成功!获得了 ".$traffic." MB 流量!"; 47 | } 48 | $user->last_check_in_time = time(); 49 | $user->save(); 50 | $bot->sendMessage($message->getChat()->getId(), $sendtext, $parseMode = null, $disablePreview = false, $replyToMessageId = $reply_to); 51 | break; 52 | case 'setclass': 53 | if (!$user->is_admin) { 54 | $bot->sendMessage($message->getChat()->getId(), "您不是管理员", $parseMode = null, $disablePreview = false, $replyToMessageId = $reply_to); 55 | break; 56 | } 57 | //$bot->sendMessage($message->getChat()->getId(), $message->getText(), $parseMode = null, $disablePreview = false, $replyToMessageId = $reply_to); 58 | $data = explode(" ",$message->getText()); 59 | /* 60 | if(isset($message->getReplyToMessage()->getFrom()->getId())){ 61 | $usersss = User::where('telegram_id', $message->getReplyToMessage()->getFrom()->getId())->first(); 62 | }else if( count($data) == 3 ){ 63 | $usersss = User::where('email', $data[2])->first(); 64 | } 65 | */ 66 | if( count($data) == 2){ 67 | $usersss = User::where('telegram_id', $message->getReplyToMessage()->getFrom()->getId())->first(); 68 | }else if( count($data) == 3 ){ 69 | $usersss = User::where('email', $data[2])->first(); 70 | } 71 | if( $usersss == null ){ 72 | $bot->sendMessage($message->getChat()->getId(), "该tg用户未绑定账号或邮箱不存在!", $parseMode = null, $disablePreview = false, $replyToMessageId = $reply_to); 73 | break; 74 | } 75 | $class = $data[1]; 76 | 77 | if( strpos($class,'+') !== false) 78 | $class = $usersss->class + str_replace("+","",$class); 79 | else if( strpos($class,'-') !== false) 80 | $class = $usersss->class - str_replace("-","",$class); 81 | 82 | $usersss->class = $class; 83 | //$sendtext = "设置成功!".$usersss->email." 等级设置为".$data[1]; 84 | $usersss->save(); 85 | //$sendtext = "设置成功!".$usersss->email." 等级设置为".$data[1]; 86 | $sendtext = "设置成功!等级设置为".$class; 87 | $bot->sendMessage($message->getChat()->getId(), $sendtext, $parseMode = null, $disablePreview = false, $replyToMessageId = $reply_to); 88 | break; 89 | case 'setdate': 90 | if (!$user->is_admin) { 91 | $bot->sendMessage($message->getChat()->getId(), "您不是管理员", $parseMode = null, $disablePreview = false, $replyToMessageId = $reply_to); 92 | break; 93 | } 94 | $data = explode(" ",$message->getText()); 95 | if( count($data) == 2){ 96 | $usersss = User::where('telegram_id', $message->getReplyToMessage()->getFrom()->getId())->first(); 97 | }else if( count($data) == 3 ){ 98 | $usersss = User::where('email', $data[2])->first(); 99 | } 100 | if( $usersss == null ){ 101 | $bot->sendMessage($message->getChat()->getId(), "该tg用户未绑定账号或邮箱不存在!", $parseMode = null, $disablePreview = false, $replyToMessageId = $reply_to); 102 | break; 103 | } 104 | $settime = $data[1]; 105 | if( date('Y-m-d H:i:s', strtotime($settime)) == $settime ){ 106 | $usersss->class_expire = $data[1]; 107 | $usersss->save(); 108 | $sendtext = "设置成功!等级到期时间设置为".$settime; 109 | }else 110 | $sendtext = "时间格式错误"; 111 | 112 | $bot->sendMessage($message->getChat()->getId(), $sendtext, $parseMode = null, $disablePreview = false, $replyToMessageId = $reply_to); 113 | break; 114 | case 'info': 115 | if (!$user->is_admin) { 116 | $bot->sendMessage($message->getChat()->getId(), "您不是管理员", $parseMode = null, $disablePreview = false, $replyToMessageId = $reply_to); 117 | break; 118 | } 119 | $data = explode(" ",$message->getText()); 120 | if( count($data) == 2 or count($data) == 1){ 121 | $usersss = User::where('telegram_id', $message->getReplyToMessage()->getFrom()->getId())->first(); 122 | }else if( count($data) == 3 ){ 123 | $usersss = User::where('email', $data[2])->first(); 124 | } 125 | if( $usersss != null ){ 126 | $infotype = $data[1]; 127 | $sendtext = "当前用户信息为"; 128 | $sendtext .= "\n用户名:".$usersss->user_name; 129 | $sendtext .= "\n邮箱:".$usersss->email; 130 | $sendtext .= "\n已用流量:".round(($usersss->u + $usersss->d)/1024/1024/1024,2)."G"; 131 | $sendtext .= "\n剩余流量:".round(($usersss->transfer_enable - $usersss->u - $usersss->d)/1024/1024/1024,2)."G"; 132 | $sendtext .= "\n余额剩余:".$usersss->money; 133 | $sendtext .= "\n等级:".$usersss->class; 134 | $sendtext .= "\n等级到期时间:".$usersss->class_expire; 135 | if( $infotype == "all" ){ 136 | $sendtext .= "\n端口:".$usersss->port; 137 | $sendtext .= "\n邀请额度:".$usersss->invite_num; 138 | $sendtext .= "\n最后使用时间:".date('Y-m-d H:i:s', $usersss->t); 139 | $sendtext .= "\n账号到期时间:".$usersss->expire_in; 140 | } 141 | }else 142 | $sendtext = "该tg用户未绑定账号或邮箱不存在!"; 143 | $bot->sendMessage($message->getChat()->getId(), $sendtext, $parseMode = null, $disablePreview = false, $replyToMessageId = $reply_to); 144 | break; 145 | case 'find': 146 | if (!$user->is_admin) { 147 | $bot->sendMessage($message->getChat()->getId(), "您不是管理员", $parseMode = null, $disablePreview = false, $replyToMessageId = $reply_to); 148 | break; 149 | } 150 | $data = explode(" ",$message->getText()); 151 | if( count($data) == 2 ){ 152 | $Elink = Link::where("token", "=", $data[1])->first(); 153 | if( $Elink != null ) 154 | $id = $Elink->userid; 155 | else{ 156 | $code = InviteCode::where('code', $data[1])->first(); 157 | if( $code != null ) 158 | $id = $code->user_id; 159 | else{ 160 | $usert = User::where('id', $data[1])->orWhere("user_name", "=", $data[1])->orWhere("email", "=", $data[1])->orWhere("port", "=", $data[1])->first(); 161 | if( $usert != null ) 162 | $id = $usert->id; 163 | else{ 164 | $bot->sendMessage($message->getChat()->getId(), "未找到该用户!", $parseMode = null, $disablePreview = false, $replyToMessageId = $reply_to); 165 | break; 166 | } 167 | } 168 | } 169 | } 170 | $usersss = User::where('id', $id)->first(); 171 | $sendtext = "当前用户信息为"; 172 | $sendtext .= "\n用户名:".$usersss->user_name; 173 | $sendtext .= "\n邮箱:".$usersss->email; 174 | $sendtext .= "\n已用流量:".round(($usersss->u + $usersss->d)/1024/1024/1024,2)."G"; 175 | $sendtext .= "\n剩余流量:".round(($usersss->transfer_enable - $usersss->u - $usersss->d)/1024/1024/1024,2)."G"; 176 | $sendtext .= "\n余额剩余:".$usersss->money; 177 | $sendtext .= "\n等级:".$usersss->class; 178 | $sendtext .= "\n等级到期时间:".$usersss->class_expire; 179 | $sendtext .= "\n端口:".$usersss->port; 180 | $sendtext .= "\n邀请额度:".$usersss->invite_num; 181 | $sendtext .= "\n最后使用时间:".date('Y-m-d H:i:s', $usersss->t); 182 | $sendtext .= "\n账号到期时间:".$usersss->expire_in; 183 | $bot->sendMessage($message->getChat()->getId(), $sendtext, $parseMode = null, $disablePreview = false, $replyToMessageId = $reply_to); 184 | break; 185 | case 'setmoney': 186 | if (!$user->is_admin) { 187 | $bot->sendMessage($message->getChat()->getId(), "您不是管理员", $parseMode = null, $disablePreview = false, $replyToMessageId = $reply_to); 188 | break; 189 | } 190 | $data = explode(" ",$message->getText()); 191 | if( count($data) == 2 ){ 192 | $usersss = User::where('telegram_id', $message->getReplyToMessage()->getFrom()->getId())->first(); 193 | }else if( count($data) == 3 ){ 194 | $usersss = User::where('email', $data[2])->first(); 195 | } 196 | if( $usersss == null ){ 197 | $bot->sendMessage($message->getChat()->getId(), "该tg用户未绑定账号或邮箱不存在!", $parseMode = null, $disablePreview = false, $replyToMessageId = $reply_to); 198 | break; 199 | } 200 | $setmoney = $data[1]; 201 | 202 | if( strpos($setmoney,'+') !== false) 203 | $setmoney = $usersss->money + str_replace("+","",$setmoney); 204 | else if( strpos($setmoney,'-') !== false) 205 | $setmoney = $usersss->money - str_replace("-","",$setmoney); 206 | 207 | $usersss->money = $setmoney; 208 | $usersss->save(); 209 | $sendtext = "设置成功!余额设置为".$setmoney; 210 | $bot->sendMessage($message->getChat()->getId(), $sendtext, $parseMode = null, $disablePreview = false, $replyToMessageId = $reply_to); 211 | break; 212 | case 'ban': 213 | if (!$user->is_admin) { 214 | $bot->sendMessage($message->getChat()->getId(), "您不是管理员", $parseMode = null, $disablePreview = false, $replyToMessageId = $reply_to); 215 | break; 216 | } 217 | $data = explode(" ",$message->getText()); 218 | if( count($data) == 1 ){ 219 | $usersss = User::where('telegram_id', $message->getReplyToMessage()->getFrom()->getId())->first(); 220 | }else if( count($data) == 2 ){ 221 | $usersss = User::where('email', $data[1])->first(); 222 | } 223 | if( $usersss == null ){ 224 | $bot->sendMessage($message->getChat()->getId(), "该tg用户未绑定账号或邮箱不存在!", $parseMode = null, $disablePreview = false, $replyToMessageId = $reply_to); 225 | break; 226 | } 227 | 228 | $usersss->enable = 0; 229 | $usersss->save(); 230 | $sendtext = "设置成功!该账户已禁用"; 231 | $bot->sendMessage($message->getChat()->getId(), $sendtext, $parseMode = null, $disablePreview = false, $replyToMessageId = $reply_to); 232 | $bot->kickChatMember($message->getChat()->getId(), $message->getFrom()->getId()); 233 | break; 234 | case 'active': 235 | if (!$user->is_admin) { 236 | $bot->sendMessage($message->getChat()->getId(), "您不是管理员", $parseMode = null, $disablePreview = false, $replyToMessageId = $reply_to); 237 | break; 238 | } 239 | $data = explode(" ",$message->getText()); 240 | if( count($data) == 1 ){ 241 | $usersss = User::where('telegram_id', $message->getReplyToMessage()->getFrom()->getId())->first(); 242 | }else if( count($data) == 2 ){ 243 | $usersss = User::where('email', $data[1])->first(); 244 | } 245 | if( $usersss == null ){ 246 | $bot->sendMessage($message->getChat()->getId(), "该tg用户未绑定账号或邮箱不存在!", $parseMode = null, $disablePreview = false, $replyToMessageId = $reply_to); 247 | break; 248 | } 249 | 250 | $usersss->enable = 1; 251 | $usersss->save(); 252 | $sendtext = "设置成功!该账户已启用"; 253 | $bot->sendMessage($message->getChat()->getId(), $sendtext, $parseMode = null, $disablePreview = false, $replyToMessageId = $reply_to); 254 | break; 255 | case 'setconnector': 256 | if (!$user->is_admin) { 257 | $bot->sendMessage($message->getChat()->getId(), "您不是管理员", $parseMode = null, $disablePreview = false, $replyToMessageId = $reply_to); 258 | break; 259 | } 260 | $data = explode(" ",$message->getText()); 261 | if( count($data) == 2){ 262 | $usersss = User::where('telegram_id', $message->getReplyToMessage()->getFrom()->getId())->first(); 263 | }else if( count($data) == 3 ){ 264 | $usersss = User::where('email', $data[2])->first(); 265 | } 266 | if( $usersss == null ){ 267 | $bot->sendMessage($message->getChat()->getId(), "该tg用户未绑定账号或邮箱不存在!", $parseMode = null, $disablePreview = false, $replyToMessageId = $reply_to); 268 | break; 269 | } 270 | $setconnector = $data[1]; 271 | 272 | if( strpos($setconnector,'+') !== false) 273 | $setconnector = $usersss->node_connector + str_replace("+","",$setconnector); 274 | else if( strpos($setconnector,'-') !== false) 275 | $setconnector = $usersss->node_connector - str_replace("-","",$setconnector); 276 | 277 | $usersss->node_connector = $setconnector; 278 | $usersss->save(); 279 | $sendtext = "设置成功!连接数设置为".$setconnector; 280 | $bot->sendMessage($message->getChat()->getId(), $sendtext, $parseMode = null, $disablePreview = false, $replyToMessageId = $reply_to); 281 | break; 282 | case 'setrole': 283 | if (!$user->is_admin) { 284 | $bot->sendMessage($message->getChat()->getId(), "您不是管理员", $parseMode = null, $disablePreview = false, $replyToMessageId = $reply_to); 285 | break; 286 | } 287 | $data = explode(" ",$message->getText()); 288 | if( count($data) == 2){ 289 | $usersss = User::where('telegram_id', $message->getReplyToMessage()->getFrom()->getId())->first(); 290 | }else if( count($data) == 3 ){ 291 | $usersss = User::where('email', $data[2])->first(); 292 | } 293 | if( $usersss == null ){ 294 | $bot->sendMessage($message->getChat()->getId(), "该tg用户未绑定账号或邮箱不存在!", $parseMode = null, $disablePreview = false, $replyToMessageId = $reply_to); 295 | break; 296 | } 297 | $is_admin = $data[1] == "admin" ? 1:0; 298 | $usersss->is_admin = $is_admin; 299 | $usersss->save(); 300 | $sendtext = "设置成功!用户设置为".$data[1]; 301 | $bot->sendMessage($message->getChat()->getId(), $sendtext, $parseMode = null, $disablePreview = false, $replyToMessageId = $reply_to); 302 | break; 303 | case 'setspeed': 304 | if (!$user->is_admin) { 305 | $bot->sendMessage($message->getChat()->getId(), "您不是管理员", $parseMode = null, $disablePreview = false, $replyToMessageId = $reply_to); 306 | break; 307 | } 308 | $data = explode(" ",$message->getText()); 309 | if( count($data) == 2){ 310 | $usersss = User::where('telegram_id', $message->getReplyToMessage()->getFrom()->getId())->first(); 311 | }else if( count($data) == 3 ){ 312 | $usersss = User::where('email', $data[2])->first(); 313 | } 314 | if( $usersss == null ){ 315 | $bot->sendMessage($message->getChat()->getId(), "该tg用户未绑定账号或邮箱不存在!", $parseMode = null, $disablePreview = false, $replyToMessageId = $reply_to); 316 | break; 317 | } 318 | $setspeed = $data[1]; 319 | if( is_numeric($setspeed) ){ 320 | $usersss->node_speedlimit = $setspeed; 321 | $usersss->save(); 322 | $sendtext = "设置成功!速度限制设置为".$setspeed."Mbps"; 323 | }else 324 | $sendtext = "格式错误"; 325 | $bot->sendMessage($message->getChat()->getId(), $sendtext, $parseMode = null, $disablePreview = false, $replyToMessageId = $reply_to); 326 | break; 327 | case 'delnode': 328 | if (!$user->is_admin) { 329 | $bot->sendMessage($message->getChat()->getId(), "您不是管理员", $parseMode = null, $disablePreview = false, $replyToMessageId = $reply_to); 330 | break; 331 | } 332 | $data = explode(" ",$message->getText()); 333 | if( count($data) == 2){ 334 | $nodeid = $data[1]; 335 | if( is_numeric($nodeid) ){ 336 | $node = Node::find($nodeid); 337 | $node->delete(); 338 | $sendtext = "删除成功!"; 339 | }else $sendtext = "格式错误"; 340 | } 341 | $bot->sendMessage($message->getChat()->getId(), $sendtext, $parseMode = null, $disablePreview = false, $replyToMessageId = $reply_to); 342 | break; 343 | case 'buy': 344 | 345 | $data = explode(" ",$message->getText()); 346 | $code = $data[2]; 347 | $shop = Shop::where("id", $data[1])->where("status", 1)->first(); 348 | if ($shop == null) { 349 | $sendtext = "非法请求"; 350 | $bot->sendMessage($message->getChat()->getId(), $sendtext, $parseMode = null, $disablePreview = false, $replyToMessageId = $reply_to); 351 | break; 352 | } 353 | 354 | if ( count($data) == 2 ) { 355 | $credit = 0; 356 | } elseif ( count($data) == 3 ) { 357 | $coupon = $data[2]; 358 | $coupon = Coupon::where("code", $coupon)->first(); 359 | if ($coupon == null) $credit = 0; 360 | else if ($coupon->onetime == 1) { 361 | $onetime = true; 362 | $credit = $coupon->credit; 363 | if ($coupon->order($shop->id) == false) { 364 | $sendtext = "此优惠码不可用于此商品"; 365 | $bot->sendMessage($message->getChat()->getId(), $sendtext, $parseMode = null, $disablePreview = false, $replyToMessageId = $reply_to); 366 | break; 367 | } 368 | 369 | if ($coupon->expire < time()) { 370 | $sendtext = "此优惠码已过期"; 371 | $bot->sendMessage($message->getChat()->getId(), $sendtext, $parseMode = null, $disablePreview = false, $replyToMessageId = $reply_to); 372 | break; 373 | } 374 | } 375 | } 376 | 377 | $price = $shop->price * ((100 - $credit) / 100); 378 | 379 | if ($user->money < $price) { 380 | $sendtext = '喵喵喵~ 当前余额不足,总价为' . $price . '元。'; 381 | $bot->sendMessage($message->getChat()->getId(), $sendtext, $parseMode = null, $disablePreview = false, $replyToMessageId = $reply_to); 382 | break; 383 | } 384 | 385 | $user->money = $user->money - $price; 386 | $user->save(); 387 | 388 | // if ($disableothers == 1) { 389 | // $boughts = Bought::where("userid", $user->id)->get(); 390 | // foreach ($boughts as $disable_bought) { 391 | // $disable_bought->renew = 0; 392 | // $disable_bought->save(); 393 | // } 394 | // } 395 | $bought = new Bought(); 396 | $bought->userid = $user->id; 397 | $bought->shopid = $shop->id; 398 | $bought->datetime = time(); 399 | if ($autorenew == 0 || $shop->auto_renew == 0) { 400 | $bought->renew = 0; 401 | } else { 402 | $bought->renew = time() + $shop->auto_renew * 86400; 403 | } 404 | if (isset($code)) { 405 | $bought->coupon = $code; 406 | } 407 | 408 | if (isset($onetime)) { 409 | $price = $shop->price; 410 | } 411 | $bought->price = $price; 412 | $bought->save(); 413 | $shop->buy($user); 414 | $sendtext = "购买成功"; 415 | $bot->sendMessage($message->getChat()->getId(), $sendtext, $parseMode = null, $disablePreview = false, $replyToMessageId = $reply_to); 416 | break; 417 | case 'generatecode': 418 | if (!$user->is_admin) { 419 | $bot->sendMessage($message->getChat()->getId(), "您不是管理员", $parseMode = null, $disablePreview = false, $replyToMessageId = $reply_to); 420 | break; 421 | } 422 | $data = explode(" ",$message->getText()); 423 | if( count($data) == 3){ 424 | $number = $data[1]; 425 | $n = $data[2]; 426 | if( is_numeric($n) and is_numeric($number) ){ 427 | $sendtext = "操作成功,充值码为:"; 428 | for ($i = 0; $i < $n; $i++) { 429 | $char = time() . Tools::genRandomChar(32); 430 | $code = new Code(); 431 | $code->code = $char; 432 | $code->type = -1; 433 | $code->number = $number; 434 | $code->userid=0; 435 | $code->usedatetime="1989:06:04 02:30:00"; 436 | $code->save(); 437 | $sendtext .= "\n".$char; 438 | } 439 | } 440 | } 441 | $bot->sendMessage($message->getChat()->getId(), $sendtext, $parseMode = null, $disablePreview = false, $replyToMessageId = $reply_to); 442 | break; 443 | case 'sub': 444 | $ssr_sub_token = LinkController::GenerateSSRSubCode($user->id, 0); 445 | $SubUrl = Config::get('baseUrl').'/link/'.$ssr_sub_token.'?mu=0'; 446 | $sendtext = '您的订阅链接为:'.$SubUrl; 447 | $bot->sendMessage($message->getChat()->getId(), $sendtext, $parseMode = null, $disablePreview = false, $replyToMessageId = $reply_to); 448 | break; 449 | case 'invite': 450 | $code = InviteCode::where('user_id', $user->id)->first(); 451 | 452 | $InviteUrl = Config::get('baseUrl').'/auth/register?code='.$code->code; 453 | $sendtext = '您的邀请链接为:'.$InviteUrl; 454 | $bot->sendMessage($message->getChat()->getId(), $sendtext, $parseMode = null, $disablePreview = false, $replyToMessageId = $reply_to); 455 | break; 456 | case 'nodes': 457 | 458 | $sendtext = "节点列表:\n"; 459 | $Nodes = Node::where('sort', 0)->where('node_ip', "<>", "")->where('node_ip', "<>", 'NULL')->get(); 460 | foreach ($Nodes as $Node) { 461 | $sendtext .= "\n[".$Node->id."]".$Node->name; 462 | } 463 | $bot->sendMessage($message->getChat()->getId(), $sendtext, $parseMode = null, $disablePreview = false, $replyToMessageId = $reply_to); 464 | break; 465 | case 'store': 466 | 467 | $sendtext = "商品详情:\n"; 468 | $shops = Shop::where("status", 1)->orderBy("name")->get(); 469 | foreach ($shops as $shop) { 470 | $sendtext .= "\n[".$shop->id."]".$shop->name; 471 | } 472 | $bot->sendMessage($message->getChat()->getId(), $sendtext, $parseMode = null, $disablePreview = false, $replyToMessageId = $reply_to); 473 | break; 474 | case 'redeem': 475 | $data = explode(" ",$message->getText()); 476 | if( count($data) == 2){ 477 | $code = $data[1]; 478 | $codeq = Code::where("code", "=", $code)->where("isused", "=", 0)->first(); 479 | if ($codeq == null) $sendtext = "此充值码错误"; 480 | else { 481 | $codeq->isused = 1; 482 | $codeq->usedatetime = date("Y-m-d H:i:s"); 483 | $codeq->userid = $user->id; 484 | $codeq->save(); 485 | if ($codeq->type == -1) { 486 | $user->money = ($user->money + $codeq->number); 487 | $user->save(); 488 | if ($user->ref_by != "" && $user->ref_by != 0 && $user->ref_by != null) { 489 | $gift_user = User::where("id", "=", $user->ref_by)->first(); 490 | $gift_user->money = ($gift_user->money + ($codeq->number * (Config::get('code_payback') / 100))); 491 | $gift_user->save(); 492 | $Payback = new Payback(); 493 | $Payback->total = $codeq->number; 494 | $Payback->userid = $user->id; 495 | $Payback->ref_by = $user->ref_by; 496 | $Payback->ref_get = $codeq->number * (Config::get('code_payback') / 100); 497 | $Payback->datetime = time(); 498 | $Payback->save(); 499 | } 500 | $sendtext = "充值成功,充值的金额为" . $codeq->number . "元。"; 501 | } 502 | } 503 | }else $sendtext = "格式错误!"; 504 | $bot->sendMessage($message->getChat()->getId(), $sendtext, $parseMode = null, $disablePreview = false, $replyToMessageId = $reply_to); 505 | break; 506 | case 'topip': 507 | $shop_name = array("null", "Pass Brozen", "Pass Siver", "Pass Gold", "Pass Platinum", "Pass Diamond", "Team License", "Enterprice License"); 508 | $online_time = time() - 120; 509 | $ip_users = User::where('t', '>', $online_time)->get(); 510 | foreach ($ip_users as $ip_user) { 511 | $data[] = array('ip' => $ip_user->online_ip_count(), 'user' => $ip_user); 512 | } 513 | 514 | $keysValue = []; 515 | foreach ($data as $key => $row) { 516 | $keysValue[$key] = $row['ip']; 517 | } 518 | array_multisort($keysValue, SORT_DESC, $data); 519 | 520 | $i = 0; 521 | $res_ip = ''; 522 | while ($i < 10) { 523 | $ip_user = $data[$i]['user']; 524 | $user_link = "该用户尚未绑定 Telegram"; 525 | if ($ip_user->telegram_id != null && $ip_user->telegram_id != '') { 526 | try { 527 | $chat_user = $bot->getChatMember(Config::get('telegram_chatid'), $ip_user->telegram_id); 528 | $first_name = $chat_user->getUser()->getFirstName(); 529 | $last_name = $chat_user->getUser()->getLastName(); 530 | $name = $ip_user->im_value != null ? $ip_user->im_value : $first_name.$last_name; 531 | $user_link = "[".$name."](tg://user?id=".$ip_user->telegram_id.")"; 532 | } 533 | catch(\Exception $e) { 534 | echo 'Message: ' .$e->getMessage(); 535 | } 536 | } 537 | $res_ip .= "Username: ".$user_link.PHP_EOL."Email: ".$ip_user->email.PHP_EOL."Online IP: ".$data[$i]['ip'].PHP_EOL."Shop: ".$shop_name[$ip_user->class].PHP_EOL."----------------".PHP_EOL; 538 | $i++; 539 | } 540 | $bot->sendMessage($message->getChat()->getId(), $res_ip, $parseMode = "Markdown", $disablePreview = false, $replyToMessageId = $message->getMessageId()); 541 | break; 542 | case 'toptr': 543 | $online_time = time() - 86400; 544 | $tr_users = User::where('class', '>', 0)->where('t', '>', $online_time)->get(); 545 | foreach ($tr_users as $tr_user) { 546 | $tr_t = (($tr_user->u + $tr_user->d) - $tr_user->last_day_t) / 1024 / 1024; 547 | $data[] = array('tr' => $tr_t, 'user' => $tr_user); 548 | } 549 | 550 | $keysValue = []; 551 | foreach ($data as $key => $row) { 552 | $keysValue[$key] = $row['tr']; 553 | } 554 | array_multisort($keysValue, SORT_DESC, $data); 555 | 556 | $i = 0; 557 | $res_ip = ''; 558 | while ($i < 10) { 559 | $ip_user = $data[$i]['user']; 560 | $user_link = "该用户尚未绑定 Telegram"; 561 | if ($ip_user->telegram_id != null && $ip_user->telegram_id != '') { 562 | try { 563 | $chat_user = $bot->getChatMember(Config::get('telegram_chatid'), $ip_user->telegram_id); 564 | $first_name = $chat_user->getUser()->getFirstName(); 565 | $last_name = $chat_user->getUser()->getLastName(); 566 | $name = $ip_user->im_value != null ? $ip_user->im_value : $first_name.$last_name; 567 | $user_link = "[".$name."](tg://user?id=".$ip_user->telegram_id.")"; 568 | } 569 | catch(\Exception $e) { 570 | echo 'Message: ' .$e->getMessage(); 571 | } 572 | } 573 | $res_ip .= "Username: ".$user_link.PHP_EOL."Email: ".$ip_user->email.PHP_EOL."Today Traffic: ".$data[$i]['tr']." MB".PHP_EOL."----------------".PHP_EOL; 574 | $i++; 575 | } 576 | $bot->sendMessage($message->getChat()->getId(), $res_ip, $parseMode = "Markdown", $disablePreview = false, $replyToMessageId = $message->getMessageId()); 577 | break; 578 | case 'prpr': 579 | $prpr = array('⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄', '(≧ ﹏ ≦)', '(*/ω\*)', 'ヽ(*。>Д<)o゜', '(つ ﹏ ⊂)', '( > < )'); 580 | $bot->sendMessage($message->getChat()->getId(), $prpr[mt_rand(0,5)], $parseMode = null, $disablePreview = false, $replyToMessageId = $reply_to); 581 | break; 582 | default: 583 | $bot->sendMessage($message->getChat()->getId(), "???", $parseMode = null, $disablePreview = false, $replyToMessageId = $reply_to); 584 | } 585 | } else { 586 | $bot->sendMessage($message->getChat()->getId(), "您未绑定本站账号。", $parseMode = null, $disablePreview = false, $replyToMessageId = $reply_to); 587 | } 588 | } 589 | 590 | 591 | public static function telegram_process($bot, $message, $command) 592 | { 593 | $user = User::where('telegram_id', $message->getFrom()->getId())->first(); 594 | 595 | if ($message->getChat()->getId() > 0) { 596 | //个人 597 | $commands = array("ping", "chat", "checkin", "help", "setclass", "setdate", "setmoney", "setconnector", "setrole", "setspeed", "generatecode", "delnode", "info", "sub", "nodes", "store", "buy", "redeem", "my", "invite", "store", "ban", "active", "find", "topip", "toptr"); 598 | if(in_array($command, $commands)){ 599 | $bot->sendChatAction($message->getChat()->getId(), 'typing'); 600 | } 601 | switch ($command) { 602 | case 'ping': 603 | $bot->sendMessage($message->getChat()->getId(), 'Pong!这个群组的 ID 是 '.$message->getChat()->getId().'!'); 604 | break; 605 | case 'chat': 606 | $bot->sendMessage($message->getChat()->getId(), Tuling::chat($message->getFrom()->getId(), substr($message->getText(), 5))); 607 | break; 608 | case 'my': 609 | TelegramProcess::needbind_method($bot, $message, $command, $user, $message->getMessageId()); 610 | break; 611 | case 'topip': 612 | TelegramProcess::needbind_method($bot, $message, $command, $user, $message->getMessageId()); 613 | break; 614 | case 'toptr': 615 | TelegramProcess::needbind_method($bot, $message, $command, $user, $message->getMessageId()); 616 | break; 617 | case 'find': 618 | TelegramProcess::needbind_method($bot, $message, $command, $user, $message->getMessageId()); 619 | break; 620 | case 'ban': 621 | TelegramProcess::needbind_method($bot, $message, $command, $user, $message->getMessageId()); 622 | break; 623 | case 'active': 624 | TelegramProcess::needbind_method($bot, $message, $command, $user, $message->getMessageId()); 625 | break; 626 | case 'store': 627 | TelegramProcess::needbind_method($bot, $message, $command, $user, $message->getMessageId()); 628 | break; 629 | case 'setclass': 630 | TelegramProcess::needbind_method($bot, $message, $command, $user, $message->getMessageId()); 631 | break; 632 | case 'setdate': 633 | TelegramProcess::needbind_method($bot, $message, $command, $user, $message->getMessageId()); 634 | break; 635 | case 'setmoney': 636 | TelegramProcess::needbind_method($bot, $message, $command, $user, $message->getMessageId()); 637 | break; 638 | case 'setconnector': 639 | TelegramProcess::needbind_method($bot, $message, $command, $user, $message->getMessageId()); 640 | break; 641 | case 'setrole': 642 | TelegramProcess::needbind_method($bot, $message, $command, $user, $message->getMessageId()); 643 | break; 644 | case 'setspeed': 645 | TelegramProcess::needbind_method($bot, $message, $command, $user, $message->getMessageId()); 646 | break; 647 | case 'delnode': 648 | TelegramProcess::needbind_method($bot, $message, $command, $user, $message->getMessageId()); 649 | break; 650 | case 'generatecode': 651 | TelegramProcess::needbind_method($bot, $message, $command, $user, $message->getMessageId()); 652 | break; 653 | case 'info': 654 | TelegramProcess::needbind_method($bot, $message, $command, $user, $message->getMessageId()); 655 | break; 656 | case 'checkin': 657 | TelegramProcess::needbind_method($bot, $message, $command, $user, $message->getMessageId()); 658 | break; 659 | case 'sub': 660 | TelegramProcess::needbind_method($bot, $message, $command, $user, $message->getMessageId()); 661 | break; 662 | case 'invite': 663 | TelegramProcess::needbind_method($bot, $message, $command, $user, $message->getMessageId()); 664 | break; 665 | case 'nodes': 666 | TelegramProcess::needbind_method($bot, $message, $command, $user, $message->getMessageId()); 667 | break; 668 | case 'redeem': 669 | TelegramProcess::needbind_method($bot, $message, $command, $user, $message->getMessageId()); 670 | break; 671 | case 'buy': 672 | TelegramProcess::needbind_method($bot, $message, $command, $user, $message->getMessageId()); 673 | break; 674 | case 'prpr': 675 | TelegramProcess::needbind_method($bot, $message, $command, $user, $message->getMessageId()); 676 | break; 677 | case 'help': 678 | $help_list = "/help - 获取当前聊天中可用的指令列表 679 | /about - 关于 680 | /my - 获取账户信息 681 | /checkin - 签到 682 | /invite - 获取邀请链接 683 | /nodes - 获取节点列表(仅限私聊) 684 | /sub - 获取或重置订阅链接(仅限私聊) 685 | /store - 打开商店面板(仅限私聊) 686 | /buy <商品ID> [优惠码] - 直接购买商品(仅限私聊) 687 | /redeem <充值码> - 兑换充值码(仅限私聊) 688 | /info [base/all] [邮箱(回复消息无需指定)] - 获取用户信息 689 | /find [类型] - 搜索用户 690 | /ban [邮箱(回复消息无需指定)] - 禁用用户账户(别名/sban) 691 | /active [邮箱(回复消息无需指定)] - 启用用户账户 692 | /setclass <(+/-)等级> [邮箱(回复消息无需指定)] - 修改用户等级 693 | /setdate [邮箱(回复消息无需指定)] - 设置用户等级有效期 694 | /setmoney <(+/-)数字> [邮箱(回复消息无需指定)] - 修改用户余额 695 | /setconnector <(+/-)IP数> [邮箱(回复消息无需指定)] - 修改用户最大设备数 696 | /setrole [邮箱(回复消息无需指定)] - 修改用户身份(设置面板管理员) 697 | /setspeed <限速(Mbps)> [邮箱(回复消息无需指定)] - 修改用户限速 698 | /generatecode <金额> <数量> - 生成充值码(别名/gencode) 699 | /delnode <节点ID> - 删除节点"; 700 | $bot->sendMessage($message->getChat()->getId(), $help_list); 701 | break; 702 | default: 703 | if ($message->getPhoto() != null) { 704 | $bot->sendMessage($message->getChat()->getId(), "正在解码,请稍候。。。"); 705 | $bot->sendChatAction($message->getChat()->getId(), 'typing'); 706 | 707 | $photos = $message->getPhoto(); 708 | 709 | $photo_size_array = array(); 710 | $photo_id_array = array(); 711 | $photo_id_list_array = array(); 712 | 713 | 714 | foreach ($photos as $photo) { 715 | $file = $bot->getFile($photo->getFileId()); 716 | $real_id = substr($file->getFileId(), 0, 36); 717 | if (!isset($photo_size_array[$real_id])) { 718 | $photo_size_array[$real_id] = 0; 719 | } 720 | 721 | if ($photo_size_array[$real_id] < $file->getFileSize()) { 722 | $photo_size_array[$real_id] = $file->getFileSize(); 723 | $photo_id_array[$real_id] = $file->getFileId(); 724 | if (!isset($photo_id_list_array[$real_id])) { 725 | $photo_id_list_array[$real_id] = array(); 726 | } 727 | 728 | array_push($photo_id_list_array[$real_id], $file->getFileId()); 729 | } 730 | } 731 | 732 | foreach ($photo_id_array as $key => $value) { 733 | $file = $bot->getFile($value); 734 | $qrcode_text = QRcode::decode("https://api.telegram.org/file/bot".Config::get('telegram_token')."/".$file->getFilePath()); 735 | 736 | if ($qrcode_text == null) { 737 | foreach ($photo_id_list_array[$key] as $fail_key => $fail_value) { 738 | $fail_file = $bot->getFile($fail_value); 739 | $qrcode_text = QRcode::decode("https://api.telegram.org/file/bot".Config::get('telegram_token')."/".$fail_file->getFilePath()); 740 | if ($qrcode_text != null) { 741 | break; 742 | } 743 | } 744 | } 745 | 746 | if (substr($qrcode_text, 0, 11) == 'mod://bind/' && strlen($qrcode_text) == 27) { 747 | $uid = TelegramSessionManager::verify_bind_session(substr($qrcode_text, 11)); 748 | if ($uid != 0) { 749 | $user = User::where('id', $uid)->first(); 750 | $user->telegram_id = $message->getFrom()->getId(); 751 | $user->im_type = 4; 752 | $user->im_value = $message->getFrom()->getUsername(); 753 | $user->save(); 754 | $bot->sendMessage($message->getChat()->getId(), "绑定成功。邮箱:".$user->email); 755 | } else { 756 | $bot->sendMessage($message->getChat()->getId(), "绑定失败,二维码无效。".substr($qrcode_text, 11)); 757 | } 758 | } 759 | 760 | if (substr($qrcode_text, 0, 12) == 'mod://login/' && strlen($qrcode_text) == 28) { 761 | if ($user != null) { 762 | $uid = TelegramSessionManager::verify_login_session(substr($qrcode_text, 12), $user->id); 763 | if ($uid != 0) { 764 | $bot->sendMessage($message->getChat()->getId(), "登录验证成功。邮箱:".$user->email); 765 | } else { 766 | $bot->sendMessage($message->getChat()->getId(), "登录验证失败,二维码无效。".substr($qrcode_text, 12)); 767 | } 768 | } else { 769 | $bot->sendMessage($message->getChat()->getId(), "登录验证失败,您未绑定本站账号。".substr($qrcode_text, 12)); 770 | } 771 | } 772 | 773 | break; 774 | } 775 | } else { 776 | if (is_numeric($message->getText()) && strlen($message->getText()) == 6) { 777 | if ($user != null) { 778 | $uid = TelegramSessionManager::verify_login_number($message->getText(), $user->id); 779 | if ($uid != 0) { 780 | $bot->sendMessage($message->getChat()->getId(), "登录验证成功。邮箱:".$user->email); 781 | } else { 782 | $bot->sendMessage($message->getChat()->getId(), "登录验证失败,数字无效。"); 783 | } 784 | } else { 785 | $bot->sendMessage($message->getChat()->getId(), "登录验证失败,您未绑定本站账号。"); 786 | } 787 | break; 788 | } 789 | $bot->sendMessage($message->getChat()->getId(), Tuling::chat($message->getFrom()->getId(), $message->getText())); 790 | } 791 | } 792 | } else { 793 | //群组 794 | if (Config::get('telegram_group_quiet') == 'true') { 795 | return; 796 | } 797 | $commands = array("ping", "chat", "checkin", "help", "setdate", "setmoney", "setclass", "setconnector", "setrole", "setspeed", "generatecode", "delnode", "info", "my", "invite", "ban", "active", "find", "topip", "toptr"); 798 | if(in_array($command, $commands)){ 799 | $bot->sendChatAction($message->getChat()->getId(), 'typing'); 800 | } 801 | switch ($command) { 802 | case 'ping': 803 | $bot->sendMessage($message->getChat()->getId(), 'Pong!这个群组的 ID 是 '.$message->getChat()->getId().'!', $parseMode = null, $disablePreview = false, $replyToMessageId = $message->getMessageId()); 804 | break; 805 | case 'chat': 806 | if ($message->getChat()->getId() == Config::get('telegram_chatid')) { 807 | $bot->sendMessage($message->getChat()->getId(), Tuling::chat($message->getFrom()->getId(), substr($message->getText(), 5)), $parseMode = null, $disablePreview = false, $replyToMessageId = $message->getMessageId()); 808 | } else { 809 | $bot->sendMessage($message->getChat()->getId(), '不约,叔叔我们不约。', $parseMode = null, $disablePreview = false, $replyToMessageId = $message->getMessageId()); 810 | } 811 | break; 812 | case 'setclass': 813 | TelegramProcess::needbind_method($bot, $message, $command, $user, $message->getMessageId()); 814 | break; 815 | case 'topip': 816 | TelegramProcess::needbind_method($bot, $message, $command, $user, $message->getMessageId()); 817 | break; 818 | case 'toptr': 819 | TelegramProcess::needbind_method($bot, $message, $command, $user, $message->getMessageId()); 820 | break; 821 | case 'find': 822 | TelegramProcess::needbind_method($bot, $message, $command, $user, $message->getMessageId()); 823 | break; 824 | case 'ban': 825 | TelegramProcess::needbind_method($bot, $message, $command, $user, $message->getMessageId()); 826 | break; 827 | case 'active': 828 | TelegramProcess::needbind_method($bot, $message, $command, $user, $message->getMessageId()); 829 | break; 830 | case 'my': 831 | TelegramProcess::needbind_method($bot, $message, $command, $user, $message->getMessageId()); 832 | break; 833 | case 'setdate': 834 | TelegramProcess::needbind_method($bot, $message, $command, $user, $message->getMessageId()); 835 | break; 836 | case 'setmoney': 837 | TelegramProcess::needbind_method($bot, $message, $command, $user, $message->getMessageId()); 838 | break; 839 | case 'setconnector': 840 | TelegramProcess::needbind_method($bot, $message, $command, $user, $message->getMessageId()); 841 | break; 842 | case 'setrole': 843 | TelegramProcess::needbind_method($bot, $message, $command, $user, $message->getMessageId()); 844 | break; 845 | case 'setspeed': 846 | TelegramProcess::needbind_method($bot, $message, $command, $user, $message->getMessageId()); 847 | break; 848 | case 'delnode': 849 | TelegramProcess::needbind_method($bot, $message, $command, $user, $message->getMessageId()); 850 | break; 851 | case 'info': 852 | TelegramProcess::needbind_method($bot, $message, $command, $user, $message->getMessageId()); 853 | break; 854 | case 'checkin': 855 | TelegramProcess::needbind_method($bot, $message, $command, $user, $message->getMessageId()); 856 | break; 857 | case 'invite': 858 | TelegramProcess::needbind_method($bot, $message, $command, $user, $message->getMessageId()); 859 | break; 860 | case 'prpr': 861 | TelegramProcess::needbind_method($bot, $message, $command, $user, $message->getMessageId()); 862 | break; 863 | case 'help': 864 | $help_list_group = "/help - 获取当前聊天中可用的指令列表 865 | /about - 关于 866 | /my - 获取账户信息 867 | /checkin - 签到 868 | /invite - 获取邀请链接 869 | /nodes - 获取节点列表(仅限私聊) 870 | /sub - 获取或重置订阅链接(仅限私聊) 871 | /store - 打开商店面板(仅限私聊) 872 | /buy <商品ID> [优惠码] - 直接购买商品(仅限私聊) 873 | /redeem <充值码> - 兑换充值码(仅限私聊) 874 | /info [base/all] [邮箱(回复消息无需指定)] - 获取用户信息 875 | /find [类型] - 搜索用户 876 | /ban [邮箱(回复消息无需指定)] - 禁用用户账户(别名/sban) 877 | /active [邮箱(回复消息无需指定)] - 启用用户账户 878 | /setclass <(+/-)等级> [邮箱(回复消息无需指定)] - 修改用户等级 879 | /setdate [邮箱(回复消息无需指定)] - 设置用户等级有效期 880 | /setmoney <(+/-)数字> [邮箱(回复消息无需指定)] - 修改用户余额 881 | /setconnector <(+/-)IP数> [邮箱(回复消息无需指定)] - 修改用户最大设备数 882 | /setrole [邮箱(回复消息无需指定)] - 修改用户身份(设置面板管理员) 883 | /setspeed <限速(Mbps)> [邮箱(回复消息无需指定)] - 修改用户限速 884 | /generatecode <金额> <数量> - 生成充值码(别名/gencode) 885 | /delnode <节点ID> - 删除节点"; 886 | $bot->sendMessage($message->getChat()->getId(), $help_list_group, $parseMode = null, $disablePreview = false, $replyToMessageId = $message->getMessageId()); 887 | break; 888 | default: 889 | if ($message->getText() != null) { 890 | if ($message->getChat()->getId() == Config::get('telegram_chatid')) { 891 | $bot->sendMessage($message->getChat()->getId(), Tuling::chat($message->getFrom()->getId(), $message->getText()), $parseMode = null, $disablePreview = false, $replyToMessageId = $message->getMessageId()); 892 | } else { 893 | $bot->sendMessage($message->getChat()->getId(), '不约,叔叔我们不约。', $parseMode = null, $disablePreview = false, $replyToMessageId = $message->getMessageId()); 894 | } 895 | } 896 | if ($message->getNewChatMember() != null && Config::get('enable_welcome_message') == 'true') { 897 | $bot->sendMessage($message->getChat()->getId(), "欢迎 ".$message->getNewChatMember()->getFirstName()." ".$message->getNewChatMember()->getLastName(), $parseMode = null, $disablePreview = false); 898 | } 899 | } 900 | } 901 | 902 | $bot->sendChatAction($message->getChat()->getId(), ''); 903 | } 904 | 905 | public static function process() 906 | { 907 | try { 908 | $bot = new \TelegramBot\Api\Client(Config::get('telegram_token')); 909 | // or initialize with botan.io tracker api key 910 | // $bot = new \TelegramBot\Api\Client('YOUR_BOT_API_TOKEN', 'YOUR_BOTAN_TRACKER_API_KEY'); 911 | 912 | $command_list = array("ping", "chat", "help", "prpr", "checkin", "setclass", "setdate", "setmoney", "setconnector", "setrole", "setspeed", "generatecode", "delnode", "info", "sub", "nodes", "store", "buy", "redeem", "my", "invite", "store", "buy", "ban", "active", "find", "topip", "toptr"); 913 | foreach ($command_list as $command) { 914 | $bot->command($command, function ($message) use ($bot, $command) { 915 | TelegramProcess::telegram_process($bot, $message, $command); 916 | }); 917 | } 918 | 919 | $bot->on($bot->getEvent(function ($message) use ($bot) { 920 | TelegramProcess::telegram_process($bot, $message, ''); 921 | }), function () { 922 | return true; 923 | }); 924 | 925 | $bot->run(); 926 | } catch (\TelegramBot\Api\Exception $e) { 927 | $e->getMessage(); 928 | } 929 | } 930 | } 931 | --------------------------------------------------------------------------------