Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- define('BOT_TOKEN', '8a5526de-f601-4f35-ba33-70ce385fffcb'); //Идентификатор бота с iii.ru
- class Bot {
- protected $key = null;
- protected $session = null;
- private $salt = 'some very-very long string without any non-latin characters due to different string representations inside of variable programming languages';
- /**
- * @param $key - Ключ из урла после создания инфа
- */
- public function __construct($key) {
- $this->key = $key;
- }
- /**
- * @param null $session - Идентификатор сессии существуюющей, если нет то создается новая
- * @return string Идентификатор текущей сессии
- */
- public function session($session = null) {
- if ($session === null) {
- $response = file_get_contents('http://iii.ru/api/2.0/json/Chat.init/' . $this->key . '/');
- debmes(response.'=='.$response);
- $this->session = $this->decode($response)->result->cuid;
- } else {
- $this->session = $session;
- }
- return $this->session;
- }
- /**
- * ОТправить сообщение боту
- * @param string $message Сообщение
- * @return string Ответ
- */
- public function say($message) {
- $request = '["' . $this->session . '","' . $message . '"]';
- $myCurl = curl_init();
- curl_setopt_array($myCurl, array(
- CURLOPT_URL => 'http://iii.ru/api/2.0/json/Chat.request',
- CURLOPT_RETURNTRANSFER => true,
- CURLOPT_POST => true,
- CURLOPT_POSTFIELDS => $this->encode($request)
- ));
- $response = curl_exec($myCurl);
- curl_close($myCurl);
- return $this->decode($response)->result->text->tts;
- }
- /**
- * Кодирование сообщения
- * @param $message
- * @return string
- */
- private function encode($message) {
- $message = base64_encode($message);
- $ml = strlen($message);
- $kl = strlen($this->salt);
- $encoded = "";
- for ($i = 0; $i < $ml; $i++) {
- $encoded = $encoded . ($message[$i] ^ $this->salt[$i % $kl]);
- }
- return base64_encode($encoded);
- }
- /**
- * Декодирование сообщения
- * @param $message
- * @return mixed|null
- */
- private function decode($message) {
- $msg = base64_decode($message);
- debmes('msg='.$msg);
- $ml = strlen($msg);
- $kl = strlen($this->salt);
- $decoded = "";
- for ($i = 0; $i < $ml; $i++) {
- $decoded.= ($msg[$i] ^ $this->salt[$i % $kl]);
- }
- debmes('decoded='.$decoded);
- debmes( phpinfo());
- debmes('base64_decode(decoded)='.base64_decode($decoded));
- return json_decode(base64_decode($decoded));
- }
- }
- $message = 'Привет';
- $sessionId = gg('ThisComputer.iiiBotSessionId');
- // $message = $params['message'];
- $bot = new Bot(BOT_TOKEN);
- if ($sessionId == '') {
- $session = $bot->session();
- sg('ThisComputer.iiiBotSessionId', $session);
- } else {
- $session = $bot->session($sessionId);
- }
- $response = $bot->say($message);
- debmes('======================'.$response);
- /*
- if (gg("ThisComputer.iiiBotVoice") == 0) { say($response); }
- else if (gg("ThisComputer.iiiBotVoice") == !0) { say($response, 1); }
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement