За последние 24 часа нас посетили 51049 программистов и 13283 робота. Сейчас ищут 2079 программистов ...

Переменные

Тема в разделе "PHP для новичков", создана пользователем dknyaz, 2 окт 2017.

  1. dknyaz

    dknyaz Новичок

    С нами с:
    2 окт 2017
    Сообщения:
    4
    Симпатии:
    1
    День добрый.

    Пишу бота для телеграмм на php. Полностью готов но зашел в небольшой тупик.

    case 'Доставка':
    $message = "привет как дела ?";
    sendMessage($token,$id,$message);
    break;

    sendMessage - должен выводить сообщение с переменной $message. В эту переменную ввожу текст. Сообщение выводится, но как сделать что бы был перенос строки. \n\r не помогают, вместо этих символов ставиться нижнее подчеркивание _ . пробовал в переменную сделать массив. выводит просто слово array.
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.333
    Симпатии:
    1.753
    ну
    1. очевидно, что ты используешь некое готовое решение, в состав которого входит функция sendMessage()
    2. вероятно, внутрь её ты не заглядывал, а если и заглядывал - то разбираться не стал. Что логично.
    3. если это не сам телеграм, а я думаю, что не сам, то где-то в недрах этой sendMessage() сидит фильтр, который отрбрасывает символы из какого-то набора.

    Надо читать доку по этой либе и искать где там хрень либо заюзать другую либу.
     
    dknyaz нравится это.
  3. dknyaz

    dknyaz Новичок

    С нами с:
    2 окт 2017
    Сообщения:
    4
    Симпатии:
    1
    PHP:
    1. <?php
    2. $output = json_decode(file_get_contents('php://input'),true);
    3. $id = $output['message']['chat']['id'];
    4. $message = $output['message']['text'];
    5. $token = 'ХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХ';
    6.  
    7. switch($message){
    8.  
    9.     case '/start':
    10.     case 'Назад':
    11.         $message = 'Добро пожаловать';
    12.         sendMessage($token,$id,$message.KeyboardMenu());
    13.         break;
    14.      
    15.     case 'Каталог':
    16.         sendMessage($token,$id,$message.KeyboardMenuKatalog());
    17.         break;
    18.      
    19.         case '02':
    20.                 $message = '';
    21.                 $photo = 'https://ledunix.com/upload/iblock/583/ledunix_02_1.jpg';
    22.                 sendPhoto($token,$id,$photo.inlineKeyboard());
    23.                 break;
    24.              
    25.         case '60':
    26.                 $photo = 'https://ledunix.com/upload/resize_cache/iblock/9ba/500_500_1/ledunix_60_5.jpg';
    27.                 $opis = 'ОПИСАНИЕ ТОВАРА2';
    28.                 sendPhoto($token,$id,$photo.inlineKeyboard());
    29.                 break;
    30.      
    31.     case 'Доставка':
    32.         $message = "привет как дела ?";
    33.         sendMessage($token,$id,$message);
    34.         break;
    35.  
    36.     case 'Как выбрать':
    37.         $message = 'DONE';
    38.         sendMessage($token,$id,$message.inlineKeyboard());
    39.         break;
    40. }
    41.  
    42.  
    43. //sendMessage ($token,$id,$message);
    44. function sendMessage($token,$id,$message){
    45.     file_get_contents("https://api.telegram.org/bot".$token."/sendMessage?chat_id=".$id."&text=".$message);
    46. }
    47.  
    48. function sendPhoto($token, $id, $photo, $opis){
    49.     file_get_contents("https://api.telegram.org/bot".$token."/sendPhoto?chat_id=".$id."&photo=".$photo);
    50. }
    51.  
    52. function KeyboardMenu(){
    53.     $replayKey = '';
    54.     $buttons = [['Каталог','Доставка','Как выбрать'],['Отзывы','Заказать','Задать вопрос']];
    55.     $keyboard =json_encode($keyboard =['keyboard' => $buttons,
    56.                                         'resize_keyboard' => true,
    57.                                         'one_time_keyboard' => false,
    58.                                         'selective' => true]);
    59.     $reply_markup = '&reply_markup='.$keyboard.'';
    60.     return $reply_markup;
    61. }
    62.  
    63. function KeyboardMenuKatalog(){
    64.     $buttons = [['02','60','7'],['8','9','90'],['80','83','3'],['37','35','26'],['39','01','Назад']];
    65.     $keyboard =json_encode($keyboard =['keyboard' => $buttons,'resize_keyboard' => true,'one_time_keyboard' => false,'selective' => true]);
    66.     $reply_markup = '&reply_markup='.$keyboard.'';
    67.  
    68.     return $reply_markup;
    69. }
    70.  
    71. function inlineKeyboard(){
    72.     $reply_markup = '';
    73.     $x1 = array('text'=> 'Описание', 'callback_data'=> 'sx' );
    74.     $x2 = array('text'=> 'Характеристики', 'callback_data'=> 'Характеристики');
    75.     $x3 = array('text'=> 'Фото', 'callback_data'=> 'Фото');
    76.     $x4 = array('text'=> 'Видео', 'callback_data'=> 'Видео');
    77.     $x5 = array('text'=> 'В магазин', 'url'=> 'https://ledunix.com');
    78.     $x6 = array('text'=> 'Заказать', 'callback_data'=> 'Заказать');
    79.     $opz = [[$x1,$x2],[$x3,$x4],[$x5,$x6]];
    80.  
    81.     $keyboard = array("inline_keyboard"=> $opz);
    82.  
    83.     $keyboard = json_encode($keyboard, true);
    84.     $reply_markup = '&reply_markup='.$keyboard;
    85.     return $reply_markup;
    86. }
    87.  
    88.  
    89. if(isset($output['callback_query']['data'])){
    90.     $id = $output['callback_query']['message']['chat']['id'];
    91.     $message = $output['callback_query']['data'];
    92.     $message = json_encode($message, true);
    93.     sendMessage($token,$id,$message);
    94. }
    95.  
    96. ?>
    вот весь код, без подключения каких либо библиотек.
     
    #3 dknyaz, 2 окт 2017
    Последнее редактирование модератором: 2 окт 2017
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.333
    Симпатии:
    1.753
    1. Попробуй перейти с гет на пост
    2. Если не понял о чем я, то тогда попробуй сообщение прогонять через urlencode()
    --- Добавлено ---
    https://php.ru/manual/function.urlencode.html
     
    dknyaz нравится это.
  5. dknyaz

    dknyaz Новичок

    С нами с:
    2 окт 2017
    Сообщения:
    4
    Симпатии:
    1
    Спасибо, urlencode() теперь выводится как надо )))
     
    #5 dknyaz, 2 окт 2017
    Последнее редактирование модератором: 2 окт 2017
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.333
    Симпатии:
    1.753
    крутяк
     
    craZyFTW и dknyaz нравится это.
  7. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.601
    Симпатии:
    423
    Адрес:
    РД, г. Махачкала.
    @dknyaz, а где лайки? видишь человеку их критически не хватает. почти 30к против 1к с лишним))
     
  8. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.333
    Симпатии:
    1.753
    о, и правда, скоро за тридцатник перевалит
     
    dknyaz нравится это.
  9. dknyaz

    dknyaz Новичок

    С нами с:
    2 окт 2017
    Сообщения:
    4
    Симпатии:
    1
    Только зарегался на сайте, пока не знаю что да как тут ))
     
    igordata нравится это.
  10. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.333
    Симпатии:
    1.753
    каждую сообщеньку пролайкал :D

    да он пошутил про не хватает =)