restrictChatMember для php Телеграм бота

← К списку тем

ребята, есть у меня скриптик с помощью которго бот в чате отслеживает ключевые слова, сообщает пользователю что это спам, удаляет его пост, а я хочу еще и третий этап туда добаить- ограничение в написании постов в чат на N-ое заданное время. МУТ на час допустим. как это дописать? не смог найти в инете примеров restrictChatMember на РНР. вот мой код-
function processMessage($message) {<br />
  $message_id = $message['message_id'];<br />
  $chat_id = $message['chat']['id'];<br />
  if (isset($message['text'])) {<br />
    $text = $message['text'];<br />
<br />
// против спама<br />
$update = json_decode(file_get_contents('php://input'));<br />
if(preg_match(&quot;/b(билайн|МТС)b/ui&quot;, $update-&gt;message-&gt;text)){<br />
     apiRequest('sendMessage', [<br />
       'chat_id'=&gt;$update-&gt;message-&gt;chat-&gt;id,<br />
       'text'=&gt;'Это спам!',<br />
       'reply_to_message_id' =&gt; $update-&gt;message-&gt;message_id<br />
     ]);<br />
sleep(1);<br />
apiRequest('deleteMessage', [<br />
       'chat_id'=&gt;$update-&gt;message-&gt;chat-&gt;id,<br />
       'message_id' =&gt; $update-&gt;message-&gt;message_id<br />
     ]);<br />
// далее ставим мут пользователю, я это вижу примерно так но прошу поправить синтаксис-<br />
apiRequest('restrictChatMember', [<br />
       'chat_id'=&gt;$update-&gt;message-&gt;chat-&gt;id,<br />
       'user_id' =&gt; $update-&gt;message-&gt;user_id,<br />
'ChatPermissions' =&gt; can_send_messages=FALSE, can_send_media_messages=false, can_send_polls=false, can_send_other_messages=false,<br />
'until_date' =&gt; КАКОЕ то время<br />
     ]);<br />
    }
Грачик Абдулошвили 12.02.2020 в 15:43

Авторизуйтесь через Telegram, чтобы ответить.
Откройте бот @SiteAuthBot, нажмите кнопку Старт/Start. Следуйте инструкциям бота.


Ответы

  • ...<br />
    'permissions' =&gt; [ <br />
        'can_send_messages' =&gt; false, <br />
        'can_send_media_messages' =&gt; false, <br />
        'can_send_polls' =&gt; false, <br />
        'can_send_other_messages' =&gt; false<br />
    ],<br />
    ...
    iMakeBots 13.02.2020 в 11:53
    • я правильно понимаю что сначала мне надо переменную user_id обозначить?? и где нам задать ВРЕМЯ мута. То есть финальный целый код будет такой-

      function processMessage($message) {<br />
        $message_id = $message['message_id'];<br />
        $chat_id = $message['chat']['id'];<br />
      $user_id = $message['user']['id'];<br />
        if (isset($message['text'])) {<br />
          $text = $message['text'];<br />
      <br />
      // против спама<br />
      $update = json_decode(file_get_contents('php://input'));<br />
      if(preg_match(&quot;/b(билайн|МТС)b/ui&quot;, $update-&gt;message-&gt;text)){<br />
           apiRequest('sendMessage', [<br />
             'chat_id'=&gt;$update-&gt;message-&gt;chat-&gt;id,<br />
             'text'=&gt;'Это спам!',<br />
             'reply_to_message_id' =&gt; $update-&gt;message-&gt;message_id<br />
           ]);<br />
      sleep(1);<br />
      apiRequest('deleteMessage', [<br />
             'chat_id'=&gt;$update-&gt;message-&gt;chat-&gt;id,<br />
             'message_id' =&gt; $update-&gt;message-&gt;message_id<br />
           ]);<br />
      // далее ставим мут пользователю-<br />
      apiRequest('restrictChatMember', [<br />
             'chat_id'=&gt;$update-&gt;message-&gt;chat-&gt;id,<br />
             'user_id' =&gt; $update-&gt;message-&gt;user_id,<br />
           'permissions' =&gt; [ <br />
          'can_send_messages' =&gt; false, <br />
          'can_send_media_messages' =&gt; false, <br />
          'can_send_polls' =&gt; false, <br />
          'can_send_other_messages' =&gt; false<br />
      ],<br />
      'until_date' =&gt; КАКОЕ то время, как оно указывается?<br />
           ]);<br />
          }
      Грачик Абдулошвили 13.02.2020 в 15:27
      • function processMessage($message) {<br />
        	$update = json_decode(file_get_contents('php://input'));<br />
        	if(isset($update-&gt;message-&gt;text)) {<br />
        		if(preg_match(&quot;/b(билайн|МТС)b/ui&quot;, $update-&gt;message-&gt;text)){<br />
        		    apiRequest('sendMessage', [<br />
        	       		'chat_id'=&gt;$update-&gt;message-&gt;chat-&gt;id,<br />
        	       		    'text'=&gt;'Это спам!',<br />
        	       		    'reply_to_message_id' =&gt; $update-&gt;message-&gt;message_id<br />
        	     	        ]);<br />
        			apiRequest('deleteMessage', [<br />
        	       		    'chat_id'=&gt;$update-&gt;message-&gt;chat-&gt;id,<br />
        	       		    'message_id' =&gt; $update-&gt;message-&gt;message_id<br />
        	     	        ]);<br />
        			apiRequest('restrictChatMember', [<br />
        	       		    'chat_id'=&gt;$update-&gt;message-&gt;chat-&gt;id,<br />
        	       		    'user_id' =&gt; $update-&gt;message-&gt;from-&gt;id,<br />
        	     		    'can_send_messages' =&gt; false, <br />
        	    		    'can_send_media_messages' =&gt; false, <br />
        	    		    'can_send_polls' =&gt; false, <br />
        	    		    'can_send_other_messages' =&gt; false,<br />
        			    'until_date' =&gt; time() + 3600 // текущие время  + 1 час в секундах<br />
        	     	]);<br />
        		}<br />
        	}<br />
        }

        restrictChatMember<br />
        ...<br />
        <b>поле:</b> until_date<br />
        <b>тип:</b> Integer<br />
        <b>описание:</b> Date when restrictions will be lifted for the user, unix time. If user is restricted for more than 366 days or less than 30 seconds from the current time, they are considered to be restricted forever
        iMakeBots 13.02.2020 в 15:38
        • в таком виде БОт молчит наглухо к сожалнию, а вот в таком-
          function processMessage($message) {<br />
            // process incoming message<br />
            $message_id = $message['message_id'];<br />
            $chat_id = $message['chat']['id'];<br />
          $user_id = $message['user']['id'];<br />
            if (isset($message['text'])) {<br />
              // incoming text message<br />
              $text = $message['text'];<br />
          <br />
          // против спама<br />
          $update = json_decode(file_get_contents('php://input'));<br />
          if(isset($update-&gt;message-&gt;text)) {<br />
          if(preg_match(&quot;/b(вася|федя)b/ui&quot;, $update-&gt;message-&gt;text)){<br />
               apiRequest('sendMessage', [<br />
                 'chat_id'=&gt;$update-&gt;message-&gt;chat-&gt;id,<br />
                 'text'=&gt;'В этом чате не любят спам!',<br />
                 'reply_to_message_id' =&gt; $update-&gt;message-&gt;message_id<br />
               ]);<br />
          sleep(1);<br />
          apiRequest('deleteMessage', [<br />
                 'chat_id'=&gt;$update-&gt;message-&gt;chat-&gt;id,<br />
                 'message_id' =&gt; $update-&gt;message-&gt;message_id<br />
               ]);<br />
          apiRequest('restrictChatMember', [<br />
          	       		    'chat_id'=&gt;$update-&gt;message-&gt;chat-&gt;id,<br />
          	       		    'user_id' =&gt; $update-&gt;message-&gt;user_id,<br />
          	     		    'permissions' =&gt; [ <br />
          	    			'can_send_messages' =&gt; false, <br />
          	    			'can_send_media_messages' =&gt; false, <br />
          	    			'can_send_polls' =&gt; false, <br />
          	    			'can_send_other_messages' =&gt; false<br />
          				],<br />
          		             'until_date' =&gt; time()  +  300<br />
          	     	]);<br />
          }<br />
          }

          выполняется Реплай, Выполняется Удаление, а вот МУТ не выполняется.
          Грачик Абдулошвили 13.02.2020 в 16:45
          • Попробуйте так
            apiRequest('restrictChatMember', [<br />
                'chat_id'=&gt;$update-&gt;message-&gt;chat-&gt;id,<br />
                'user_id' =&gt; $update-&gt;message-&gt;from-&gt;id,<br />
                'can_send_messages' =&gt; false, <br />
                'can_send_media_messages' =&gt; false, <br />
                'can_send_polls' =&gt; false, <br />
                'can_send_other_messages' =&gt; false,<br />
                'until_date' =&gt; time() + 3600<br />
            ]);
            iMakeBots 13.02.2020 в 17:11
            • не сработало, попробовал даже вот так- https://prnt.sc/r1ul5h
              Грачик Абдулошвили 13.02.2020 в 18:18
            • 'user_id' =&gt; $update-&gt;message-&gt;from-&gt;id,
              iMakeBots 14.02.2020 в 10:33
            • ВСЕ заработало! Супер! спасибо!
              единственное что мне итересно, а почему оно работает при ЗАКОММЕНТИРОВАННОЙ вот этой строчке? https://prnt.sc/r29ivt
              по идее мы же должны были переменную user обьявить) а так она у нас получается только в Рестрикт встречается но работает. вот это для меня загадка...
              Грачик Абдулошвили 14.02.2020 в 14:54
            • В массиве $message нет элемента с ключем user
              iMakeBots 14.02.2020 в 14:56