دسته بندی و زیر دسته در ربات تلگرام

- 1 سال پیش
توسط HaSaN-Zzz آپدیت شد
HaSaN-Zzz ( 50 تجربه )
1 سال پیش

سلام من میخوام ی ربات فروشگاهی بسازم ی سری محصول هست که دارای دسته بندی هستن و هر دسته پدر و اصلی دارای چند زیر دسته هستن میخواستم بدونم چطوری وقتی که دست های والد از دیتابیس گرفته شد و به صورت کیبورد نشان داده شد با انتخاب هر دسته اصلی زیر دسته ها نیز به صورت کیبورد نمایش داده شوند ؟؟؟ مشکل اینجاس که وقتی دسته های اصلی رو گرفتم چجوری باید به صورت داینامیک یک command درست کنم با نام دسته که با فشردن اون دسته زیر دسته ها نیز به صورت command تشکیل بشن ؟؟؟ ممنون

حسام موسوی ( 131319 تجربه )
1 سال پیش

از حالت کیبورد استفاده میکنید اول دسته های اصلی رو میفرستید بصورت کیبورد و بعد از انتخاب دسته های فرزند رو از دیتابیس بر اساس دسته پدر در میارید و بصورت کیبورد دوباره میفرستید

HaSaN-Zzz ( 50 تجربه )
1 سال پیش

من این کد رو نوشتم ولی هنوز در گرفتن زیردسته های دسته های اصلی مشکل دارم نمیدونم دستور command رو چجوری بصورت داینامیک برای هر عنصر از ارایه ایجاد کنم ؟؟؟

<?php

namespace AppHttpControllers;

use AppCategory;
use IlluminateHttpRequest;
use TelegramBotLaravelFacadesTelegram;

class TelegramController extends Controller
{

    protected $chat_id;
    protected $username;
    protected $text;

    public function telegram()
    {
        $response=Telegram::setWebhook([
              'url' => 'https://071efbb1.ngrok.io/TOKEN/webhook'
          ]);
        return GuzzleHttpjson_encode($response);
    }

    public function webhook(Request $request)
    {
        $this->chat_id = $request['message']['chat']['id'];
        $this->username = $request['message']['from']['username'];
        $this->text = $request['message']['text'];

        if ($this->text == '/start' || $this->text == 'بازگشت به منو اصلی  ↪'){
            $text = '🛒 !...به فروشگاه پوشاک بوتیک خوش امدید' ;
            $keyboard = [
                [' 👠  مشاهده محصولات '],
                ['ویژه ها 👑 ',' 👁 پربازدیدترین',' 🆕 جدیدترین ها ' ],
                [' ❤️ لیست موردعلاقه من',' 🔍 سوابق مرور من'],
                ['ارتباط با ما 📩  ']
            ];
            $this->CreateKeyboard($keyboard,$text);
        }
        elseif ($this->text == '👠  مشاهده محصولات' || $this->text == 'بازگشت به دسته قبل ↪'){
            $this->getCategory();
        }
        elseif ($this->text !== '👠  مشاهده محصولات' &&  '/start'){
            $this->getSubCategory($this->text);
        }

    }

    public function test(){

    }

    public function CreateKeyboard($keyboard,$text){
        $reply_markup = Telegram::replyKeyboardMarkup([
            'keyboard' => $keyboard,
            'resize_keyboard' => true,
        ]);

        Telegram::sendMessage([
            'chat_id' => request('message.chat.id'),
            'text' => $text,
            'reply_markup' => $reply_markup
        ]);

    }

    public function getCategory(){

        $categories = Category::whereParent('اصلی')->get();

        if ($categories){
            $text = '🛍 دسته مورد نظر خود را انتخاب نمایید!';
                $keyboard = [];
                foreach ($categories as $category){
                    $cats=[$category->title];
                    array_push($keyboard,$cats);
                }
                $back=[['بازگشت به منو اصلی  ↪']];

                $keys=array_merge($keyboard,$back);
                $this->CreateKeyboard($keys,$text);
        }else{
            $text = 'دسته بندی وجود ندارد';
            Telegram::sendMessage([
                'chat_id' => request('message.chat.id'),
                'text' => $text
            ]);
        }
    }
    public function getSubCategory($category_title){

        $categories = Category::whereParent($category_title)->get();

        if ($categories){
            $text = '🛍 دسته مورد نظر خود را انتخاب نمایید!';
                $keyboard = [];
                foreach ($categories as $category){
                    $cats=[$category->title];
                    array_push($keyboard,$cats);
                }
            $back=[['بازگشت به دسته قبل ↪']];

            $keys=array_merge($keyboard,$back);
            $this->CreateKeyboard($keys,$text);
        }else{
            $text = 'دسته بندی وجود ندارد';
            Telegram::sendMessage([
                'chat_id' => request('message.chat.id'),
                'text' => $text
            ]);
        }

    }

}
برای ارسال پاسخ باید وارد سایت شوید