نمایش نتایج 1 تا 17 از 17

نام تاپیک: ارسال دکمه برای ربات تلگرام

  1. #1
    کاربر دائمی آواتار milad.biroonvand
    تاریخ عضویت
    تیر 1388
    محل زندگی
    تهران
    پست
    1,406

    ارسال دکمه برای ربات تلگرام

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

  2. #2
    کاربر دائمی آواتار amin1softco
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    پای آن سرو بلند
    پست
    1,832

    نقل قول: ارسال دکمه برای ربات تلگرام

    برای ساخت دکمه در ربات باید یک همچین آدرسی را فراخوانی کنید با curl

    https://api.telegram.org/bot{token}/sendmessage?chat_id=123456789&text=yourmessage&rep ly_markup={"inline_keyboard":[[{"text":"sitename","url":"http://google.com"}]]}

    https://api.telegram.org/bot{token}/sendmessage?chat_id=123456789&text=yourmessage&rep ly_markup={"keyboard":[["button name"]],"resize_keyboard":true}


    و کتابخانه زیاد هست روی جیت هاب برای استفاده

  3. #3
    کاربر دائمی آواتار milad.biroonvand
    تاریخ عضویت
    تیر 1388
    محل زندگی
    تهران
    پست
    1,406

    نقل قول: ارسال دکمه برای ربات تلگرام

    نقل قول نوشته شده توسط amin1softco مشاهده تاپیک
    برای ساخت دکمه در ربات باید یک همچین آدرسی را فراخوانی کنید با curl

    https://api.telegram.org/bot{token}/sendmessage?chat_id=123456789&text=yourmessage&rep ly_markup={"inline_keyboard":[[{"text":"sitename","url":"http://google.com"}]]}

    https://api.telegram.org/bot{token}/sendmessage?chat_id=123456789&text=yourmessage&rep ly_markup={"keyboard":[["button name"]],"resize_keyboard":true}


    و کتابخانه زیاد هست روی جیت هاب برای استفاده
    سلام
    از کجا میتونم این کدها را که میشه برای تلگرام فرستاد کامل بدست بیارم؟

  4. #4
    کاربر دائمی آواتار amin1softco
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    پای آن سرو بلند
    پست
    1,832

    نقل قول: ارسال دکمه برای ربات تلگرام

    سایت خود تلگرام !! https://core.telegram.org/bots/api#available-methods
    اینم برای کار با api ربات هر چیزی لازم داشته باشید پیاده سازی شده
    https://github.com/akalongman/php-telegram-bot
    آخرین ویرایش به وسیله amin1softco : جمعه 28 آبان 1395 در 16:11 عصر

  5. #5

    نقل قول: ارسال دکمه برای ربات تلگرام

    سلام کسی می تونی برای کد دکمه برگشت منو راهنمایی کنه یعنی وقتی روی برگشت کلیک میکنه به مرحله قبلی برگرده

  6. #6
    کاربر دائمی آواتار thacker
    تاریخ عضویت
    دی 1390
    محل زندگی
    اکباتان
    پست
    621

    نقل قول: ارسال دکمه برای ربات تلگرام

    نقل قول نوشته شده توسط saeed2922 مشاهده تاپیک
    سلام کسی می تونی برای کد دکمه برگشت منو راهنمایی کنه یعنی وقتی روی برگشت کلیک میکنه به مرحله قبلی برگرده
    سلام .
    شما باید کاربرانی که با ربات کار میکنند رو توی دیتابیس ذخیره کنید و یک ستون برای ثبت جایگاه کاربر در رباتتون ایجاد کنید. مثلا کاربر وقتی صفحه اصلی ربات بود جایگاه رو H در نظر بگیرید. وقتی روی دکمه A کلیک کرد جایگاهش رو به A تغییر بدید توی دیتابیس . وقتی روی دکمه B کلیک کرد جایگاهش رو آپدیت کنید به B . حالا زمانی که روی دکمه برگشت کلیک کرد دوباره جایگاه رو آپدیت کنید به H و متن و منوی صفحه اصلی رو فراخوانی کنید.

  7. #7

    نقل قول: ارسال دکمه برای ربات تلگرام

    7.png

    من دارم روی یک سیستم مدیریت ربات های تلگرام کار میکنم ..
    این جدولی که توی عکس میبینید میتونه دستورات و دکمه های بی نهایت ربات رو کنترل بکنه ...
    اضافه کنه .. کم کنه ...
    همه دستورات در واقع از اینجا هدایت میشن

  8. #8

    نقل قول: ارسال دکمه برای ربات تلگرام


    از جدول باید بخونی همه چیز رو
    اینطوری مشکل توهم حل میشه
    مطالعه کنید اینو بازگشت هم هست توش

  9. #9

    نقل قول: ارسال دکمه برای ربات تلگرام

    قطعه کد اگه داشته باشی ممنون میشم

  10. #10

    نقل قول: ارسال دکمه برای ربات تلگرام

    از طریق کلاس BotCommand به اون جدولی که عکسش رو گذاشتم میتونی دسترسی داشته باشی ..
    این کلاس پایین خیلی به دردت میخوره
    این کد ها بعد از کلی آزمون خطا به دستم اومده ها ...
    واقعا هم تجربی هست کسی پیدا نشد کمکم کنه ...
    ولی خواهشم اینه که به کسایی که واقععا برنامه نویس هستن نشر بدین اگه خواستین ..
    نه به جوجه برنامه نویس ها ..
    چون اونا کاره مارو همیشه میبرن زیر سوال
    با تشکر

    class WorkAlertBot extends MainBot{
    private $MainKeyboard;
    private $Notifire;
    private $bot_id;
    private $bot_username;
    private $token;
    private $chat_id;
    private $command;
    private $AccLvl;

    public function __construct($BotId,$BotUsername,$BotToken,$ChatId, $Command,$AccLvl){
    $this->bot_id = $BotId;
    $this->bot_username = $BotUsername;
    $this->token = $BotToken;
    $this->chat_id = $ChatId;
    $this->command = $Command;
    $this->AccLvl = $AccLvl;


    require_once BOT_ENTITIES.'BotCommand.php';
    $ObjBotCommand = new \bot\BotCommand();
    $ResBotCommand = $ObjBotCommand->GetCommands($this->chat_id,$this->AccLvl,$this->bot_id,$this->command);
    while($array = $ResBotCommand->fetch_array() ){
    $BotCommandRows[] = $array;
    }



    if(isset($BotCommandRows[0])){
    foreach($BotCommandRows as $BotCommandRow){
    if($this->command == $BotCommandRow['Command'] ){
    if( !is_null($BotCommandRow['ChildId'] ) ) {


    $ResBotKeyboard = $ObjBotCommand->GetBotKeyboard($BotCommandRow['ChildId']);
    if(isset($BotKeyboardRows))unset($BotKeyboardRows) ;
    while($array = $ResBotKeyboard->fetch_array()){
    $BotKeyboardRows[]=$array;
    }
    if(isset($BotKeyboardRows[0])){
    foreach($BotKeyboardRows as $BotKeyboardRow){
    $keys[]=$BotKeyboardRow['Command'];
    }
    }
    $keyboard = array(
    'keyboard' => array( $keys ),
    'resize_keyboard' => true );

    }
    if(isset($keyboard)){
    $this->MainKeyboard= "&reply_markup=".json_encode($keyboard);
    unset($keyboard);
    }else $this->MainKeyboard = "";
    $text= $BotCommandRow['Cm'];
    $url= "https://api.telegram.org/bot".$this->token."/sendMessage?chat_id=".$this->chat_id."&text=".$text.$this->MainKeyboard;
    file_get_contents($url);
    $f = 1;
    break;
    }
    }
    }
    else{
    $ResFunction = $ObjBotCommand->GetFunction($this->bot_id,$this->chat_id);
    $FetFunction = $ResFunction->fetch_object();
    if (strpos($BotCommandRow['ChildId'], ',') === false && isset($FetFunction->Command)){
    $this->{$FetFunction->Command}($this->bot_id,$this->chat_id,$this->command);
    }
    }

    if(!isset($f)){
    $text= "متوجه نشدم \xF0\x9F\x98\xB3";
    $url= "https://api.telegram.org/bot".$this->token."/sendMessage?chat_id=".$this->chat_id."&text=".$text;
    file_get_contents($url);
    }

    }

    private function InsertNationalcode($BotId , $ChatId ,$Command ){
    $this->MysqliConnect();
    $this->mysqli->query("CALL InsertNationalcode( $ChatId , '$Command' )");
    $this->mysqli->close();
    }
    }

  11. #11

    نقل قول: ارسال دکمه برای ربات تلگرام

    این هم پروسیجور mysql هستش که تابع GetFunction که توی کدم هست این پروسیجور رو فراخوانی میکنه

    DELIMITER $$
    CREATE DEFINER=`root`@`localhost` PROCEDURE `GetFunction`(IN `bot_id` INT, IN `chat_id` INT)
    BEGIN
    SELECT Command FROM BotRequests
    INNER JOIN BotCommands ON BotCommands.Id = BotRequests.CommandId
    INNER JOIN BotProccess ON BotProccess.Id = BotRequests.ProcessId
    WHERE BotId = bot_id AND ChatId = chat_id AND IsFunction = 1 AND( BotProccess.IsFinished IS NULL OR BotProccess.IsFinished = 0 );
    END$$
    DELIMITER ;

  12. #12

    نقل قول: ارسال دکمه برای ربات تلگرام

    و این هم پروسیجور GetCommands

    DELIMITER $$
    CREATE DEFINER=`root`@`localhost` PROCEDURE `GetCommands`(IN `AccLvl` INT, IN `DBotId` INT, IN `Cmd` VARCHAR(60), IN `chat_id` INT)
    BEGIN
    DECLARE parent_id int DEFAULT 0 ;
    DECLARE _count int DEFAULT 0 ;
    DECLARE proccess_id int DEFAULT 0 ;
    DECLARE command_id int DEFAULT 0 ;

    SELECT COUNT(1)
    INTO _count
    FROM BotCommands
    WHERE BotId = DBotId
    AND AccessLevel >= AccLvl
    AND Command = Cmd
    AND ( IsFunction = 0 OR IsFunction IS NULL );

    IF _count > 0 THEN
    SELECT COUNT(ParentId)
    INTO parent_id FROM BotCommands
    WHERE BotId = DBotId AND AccessLevel >= AccLvl
    AND Command = Cmd
    AND ( IsFunction = 0 OR IsFunction IS NULL );

    IF parent_id = 0 THEN
    SELECT Id
    INTO command_id FROM BotCommands
    WHERE BotId = DBotId AND AccessLevel >= AccLvl
    AND Command = Cmd
    AND ( IsFunction = 0 OR IsFunction IS NULL );

    INSERT INTO BotProccess (Name,BotProccess.Datetime)
    VALUES ( concat('bot:',DBotId,'cmd:',Cmd ) , NOW() );
    SELECT LAST_INSERT_ID() INTO proccess_id ;
    INSERT INTO BotRequests
    (ChatId,ProccessId,BotId,CommandId,RegDatetime)
    VALUES (chat_id,proccess_id,DBotId,command_id,NOW());

    ELSEIF parent_id > 0 THEN
    SELECT BotRequests.ProccessId , BotRequests.CommandId
    INTO proccess_id , command_id
    FROM BotRequests
    INNER JOIN BotCommands
    ON BotCommands.Id = BotRequests.CommandId
    INNER JOIN BotProccess
    ON BotProccess.Id = BotRequests.ProccessId
    WHERE BotRequests.Id IN
    (SELECT MAX(BotRequests.Id)
    FROM BotRequests
    INNER JOIN BotCommands
    ON BotCommands.Id = BotRequests.CommandId
    INNER JOIN BotProccess
    ON BotProccess.Id = BotRequests.ProccessId
    ORDER BY BotRequests.Id DESC)
    ORDER BY BotRequests.Id DESC ;
    INSERT INTO BotRequests
    (ChatId,ProccessId,BotId,CommandId,RegDatetime)
    VALUES (chat_id,proccess_id,DBotId,command_id,NOW());
    END IF;
    END IF;


    IF AccLvl = 1 THEN

    SELECT Id , Command , Cm , ParentId,ChildId , BotId FROM BotCommands WHERE ParentId >= 0 AND Command = Cmd AND ( IsFunction = 0 OR IsFunction IS NULL );

    ELSEIF DBotId > 0 AND AccLvl = 2 THEN

    SELECT Id ,Command , Cm , ParentId ,ChildId, BotId FROM BotCommands WHERE BotId = DBotId AND AccessLevel >= AccLvl AND Command = Cmd AND ( IsFunction = 0 OR IsFunction IS NULL );

    ELSEIF DBotId > 0 AND AccLvl = 3 THEN

    SELECT Id , Command , Cm , ParentId,ChildId , BotId FROM BotCommands WHERE AccessLevel >= AccLvl AND BotId = DBotId AND Command = Cmd AND ( IsFunction = 0 OR IsFunction IS NULL );



    END IF;
    END$$
    DELIMITER ;

  13. #13

    نقل قول: ارسال دکمه برای ربات تلگرام

    پروسیجور GetBotKeyboards

    DELIMITER $$
    CREATE DEFINER=`root`@`localhost` PROCEDURE `GetBotKeyboard`(IN `child_id` VARCHAR(60))
    NO SQL
    BEGIN
    SELECT Command FROM BotCommands WHERE
    FIND_IN_SET(Id, child_id) > 0;
    END$$
    DELIMITER ;

  14. #14

    نقل قول: ارسال دکمه برای ربات تلگرام

    واسه inline هم فرقی نداره باید یه همچین چیزی بگی که :

    if($this->command == 'InlineBtnName'){
    //دستورات افزودن به علاقه مندی
    }

  15. #15

    نقل قول: ارسال دکمه برای ربات تلگرام

    با این کد هم آنچه از تلگرام ارجاع داده میشه رو میتونی بگیری

    header('Content-Type: text/html; charset=utf-8');
    $message = file_get_contents("php://input");
    $arrayMessage = json_decode($message, true);
    $this->chat_id = $arrayMessage['message']['from']['id'];
    $this->Username = isset($arrayMessage['message']['from']['username'])?$arrayMessage['message']['from']['username']:'';
    $this->Firstname = isset($arrayMessage['message']['from']['first_name'])?$arrayMessage['message']['from']['first_name']:'';
    $this->Lastname = isset($arrayMessage['message']['from']['last_name'])?$arrayMessage['message']['from']['last_name']:'';
    $this->command = $arrayMessage['message']['text'];

    البته لازم به ذکر است که در مدل inline باید شما یک message_id هم موقع بازگشت دریافت بکنید
    راجع به کدش مطمئن نیستم جای دقیقش رو ولی یه همچین چیزی باید باشه

    $this->message_id = $arrayMessage['message']['message_id'];
    آخرین ویرایش به وسیله sajjad.eskandary : یک شنبه 21 آبان 1396 در 11:49 صبح دلیل: توضیحات تکمیلی

  16. #16

    نقل قول: ارسال دکمه برای ربات تلگرام

    نقل قول نوشته شده توسط sajjad.eskandary مشاهده تاپیک
    با این کد هم آنچه از تلگرام ارجاع داده میشه رو میتونی بگیری

    header('Content-Type: text/html; charset=utf-8');
    $message = file_get_contents("php://input");
    $arrayMessage = json_decode($message, true);
    $this->chat_id = $arrayMessage['message']['from']['id'];
    $this->Username = isset($arrayMessage['message']['from']['username'])?$arrayMessage['message']['from']['username']:'';
    $this->Firstname = isset($arrayMessage['message']['from']['first_name'])?$arrayMessage['message']['from']['first_name']:'';
    $this->Lastname = isset($arrayMessage['message']['from']['last_name'])?$arrayMessage['message']['from']['last_name']:'';
    $this->command = $arrayMessage['message']['text'];

    البته لازم به ذکر است که در مدل inline باید شما یک message_id هم موقع بازگشت دریافت بکنید
    راجع به کدش مطمئن نیستم جای دقیقش رو ولی یه همچین چیزی باید باشه

    $this->message_id = $arrayMessage['message']['message_id'];
    سلام دوست عزیز من یه باتن ساده ایجاد کردم و میخام وقتی کاربر روی اون کلیک کردم یه عملی انجام بده
    نحوه ی پیاده سازی این چطوریه؟
    ممنون میشم راهنمایی کنید

  17. #17

    نقل قول: ارسال دکمه برای ربات تلگرام

    سلام دوستان

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

    1
    2
    3
    4
    $mT = 'انتخاب کنید';
    $op = array(array('کفش مردانه','کفش زنانه') , array('نقد و نظر و پیشنهادات'),array('سبد خرید','درباره ما'));

    $telegram->sendMessage2($userid, $mT , $op );




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

تاپیک های مشابه

  1. سوال: نحوه ست کردن وب هوک برای ربات تلگرام
    نوشته شده توسط InformationTechnology در بخش PHP
    پاسخ: 2
    آخرین پست: پنج شنبه 27 آبان 1395, 19:42 عصر
  2. مشکل ارسال Video با ربات تلگرام
    نوشته شده توسط saeideros در بخش PHP
    پاسخ: 7
    آخرین پست: شنبه 12 دی 1394, 19:46 عصر
  3. درخواست آموزش راه اندازی و ساخت سرور برای ربات تلگرام
    نوشته شده توسط farzad_fb25 در بخش بحث و گفتگو در مورد فناوری های مرتبط با جاوا
    پاسخ: 8
    آخرین پست: چهارشنبه 09 دی 1394, 17:20 عصر
  4. پاسخ: 5
    آخرین پست: دوشنبه 30 شهریور 1394, 13:59 عصر
  5. سوال: امکان ایجاد دکمه برای ارسال مطلب به شبکه های اجتماعی
    نوشته شده توسط jalalx در بخش گفتگو با مسئولین سایت، درخواست و پیشنهاد
    پاسخ: 1
    آخرین پست: یک شنبه 18 مهر 1389, 18:16 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •