2015-12-06 2 views
1

Я пишу телеграмму бота с php. Я сохраняю пользователей chatid для отправки сообщения; использовать эту команду для отправки сообщения:отправить сообщение в телеграмме бот

/admin sendall:hellow 

и в PHP приложение, используйте этот код:

case '/admin': 
       if ($chat_id == 'my chatid') { 
        $array = str_replace('/admin', '', $message); 
        $array = trim($array); 
        $array = explode(':', $array); 
        $Admin = new AdminCommand(); 
        $Admin->getCommand($array[0], $array[1]); 
       } else { 
        sendMessage($chat_id, 'block '); 
       } 
       break; 

AdminCommand класс:

class AdminCommand extends Database { 

    public function getCommand($command, $action = null) { 
     switch ($command) { 
      case 'sendall': 
       $this->sendall($action); 
       break; 
      default: 
       # code... 
       break; 
     } 
    } 

    public function sendall($message) { 
     $sql = $this->con->prepare('SELECT * FROM `users`'); 
     $sql->execute(); 
     $res = $sql->fetchAll(); 
     foreach ($res as $row) { 
      sendMessage($row['chatid'], $message); 
     } 
     exit(); 
    } 

} 

SendMessage функция:

function sendMessage($chatId, $message) { 

    $url = WEBSITE . "/sendMessage?chat_id=" . $chatId . "&text=" . urlencode($message); 
    file_get_contents($url); 
} 

Наиболее времени, когда он работает e, но иногда после отправки сообщения всем пользователям повторяет это снова и снова и не останавливается. Пока я удаляю базу данных. В чем проблема?

+0

Я думаю, вам нужно закрыть соединение. – mhtb

ответ

1

Как я объяснил в этой answer и Bots FAQ странице в телеграмме сайте:

Как я могу сообщение всем подписчикам моего бота на один раз?
К сожалению, на данный момент у нас нет методов отправки массовых сообщений, например. уведомления. Мы можем добавить что-то в этом направлении в будущем.
Чтобы избежать попадания в наши пределы при отправке массовых уведомлений, подумайте о распространении их на более длительные интервалы, например. 8-12 часов. API не будет разрешать более 30 сообщений для разных пользователей в секунду, если вы перейдете к этому, вы начнете получать 429 ошибок. Вы не можете отправить сообщение таким образом всем пользователям.

и решение в FAQ страницы Поисковые системы:

Мой бот бьет пределы, как этого избежать?
При отправке сообщений в конкретном чате избегайте отправки более одного сообщения в секунду. Мы можем разрешить короткие всплески, которые превышают этот предел, но в итоге вы начнете получать 429 ошибок.
Если вы отправляете массовые уведомления нескольким пользователям, API не будет разрешать более 30 сообщений в секунду или около того. Рассмотрите возможность распространения уведомлений на большие интервалы в 8-12 часов для достижения наилучших результатов.
Также обратите внимание, что ваш бот не сможет отправлять более 20 сообщений в минуту в одну группу.

Смежные вопросы