2015-12-06 210 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

正如我在本answerBots FAQ頁電報網站解釋說:

哪有我的消息我所有的機器人的用戶的一次?
不幸的是,目前我們還沒有發送批量消息的方法,例如通知。我們可能會在未來添加這方面的內容。
爲了避免在發送羣發通知時遇到我們的限制,請考慮在較長的時間間隔(例如, 8-12小時。 API不允許每秒向不同用戶發送超過30條消息,如果你仔細閱讀,你將會得到429個錯誤。 您無法以此方式將消息發送給所有用戶。

和機器人FAQ頁面的解決方案:

我的機器人是打的限制,我該如何避免這種情況?
在特定聊天內發送消息時,請避免每秒發送一條以上的消息。我們可能會允許超出此限制的短陣,但最終您會開始收到429個錯誤。
如果您向多個用戶發送批量通知,則API每秒不會允許超過30條消息。考慮在8-12小時的大範圍內分發通知以獲得最佳結果。
另請注意,您的機器人將無法每分鐘發送超過20條消息到同一組。

相關問題