private function broadcastMessage($username, $message) { $recipients = array_filter(Server::getInstance()->getPluginManager()->getPermissionSubscriptions(Server::BROADCAST_CHANNEL_USERS), function ($recipient) { return !$recipient instanceof EventHandler; }); $lines = explode("\n", $message); foreach ($lines as $line) { Server::getInstance()->broadcastMessage(PocketTelegram::translateString("chat.type.text", [$username, $line]), $recipients); } }
/** * @param TextMessage|TranslationContainer|string $message * @param Chat|string $chatId * @param Message|int $replyToMessage */ public static function sendMessage($message, $chatId, $replyToMessage = null) { if (is_null($message) or $message === "" or is_null($chatId) or $chatId === "") { return; } if ($message instanceof TextMessage) { $message = $message->getText(); } else { if ($message instanceof TranslationContainer) { $message = PocketTelegram::translateString($message); } } $message = TextFormat::clean($message); if ($chatId instanceof Chat) { $chatId = $chatId->getId(); } if ($replyToMessage instanceof Message) { $replyToMessage = $replyToMessage->getMessageId(); } while (true) { $nextMessage = null; if (($len = mb_strlen($message, 'UTF-8')) >= 4096) { $nextMessage = mb_substr($message, 4096, $len, 'UTF-8'); $message = mb_substr($message, 0, 4096, 'UTF-8'); } $params = ['chat_id' => $chatId, 'text' => $message]; if (self::$enableMarkdownParsing) { $params['parse_mode'] = "Markdown"; } if (self::$disableWebPagePreview) { $params['disable_web_page_preview'] = "true"; } if (!is_null($replyToMessage)) { $params['reply_to_message_id'] = $replyToMessage; } PocketTelegram::request("sendMessage", $params); if (is_null($nextMessage) or $nextMessage === "") { break; } $message = $nextMessage; } }