Advertisement
Guest User

Untitled

a guest
Nov 17th, 2017
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.48 KB | None | 0 0
  1. define('BOT_TOKEN', '8a5526de-f601-4f35-ba33-70ce385fffcb'); //Идентификатор бота с iii.ru
  2.  
  3. class Bot {
  4.  
  5. protected $key = null;
  6. protected $session = null;
  7. private $salt = 'some very-very long string without any non-latin characters due to different string representations inside of variable programming languages';
  8.  
  9. /**
  10. * @param $key - Ключ из урла после создания инфа
  11. */
  12. public function __construct($key) {
  13. $this->key = $key;
  14. }
  15.  
  16. /**
  17. * @param null $session - Идентификатор сессии существуюющей, если нет то создается новая
  18. * @return string Идентификатор текущей сессии
  19. */
  20. public function session($session = null) {
  21. if ($session === null) {
  22. $response = file_get_contents('http://iii.ru/api/2.0/json/Chat.init/' . $this->key . '/');
  23. debmes(response.'=='.$response);
  24. $this->session = $this->decode($response)->result->cuid;
  25. } else {
  26. $this->session = $session;
  27. }
  28. return $this->session;
  29. }
  30.  
  31. /**
  32. * ОТправить сообщение боту
  33. * @param string $message Сообщение
  34. * @return string Ответ
  35. */
  36. public function say($message) {
  37. $request = '["' . $this->session . '","' . $message . '"]';
  38. $myCurl = curl_init();
  39. curl_setopt_array($myCurl, array(
  40. CURLOPT_URL => 'http://iii.ru/api/2.0/json/Chat.request',
  41. CURLOPT_RETURNTRANSFER => true,
  42. CURLOPT_POST => true,
  43. CURLOPT_POSTFIELDS => $this->encode($request)
  44. ));
  45. $response = curl_exec($myCurl);
  46. curl_close($myCurl);
  47. return $this->decode($response)->result->text->tts;
  48. }
  49.  
  50. /**
  51. * Кодирование сообщения
  52. * @param $message
  53. * @return string
  54. */
  55. private function encode($message) {
  56. $message = base64_encode($message);
  57. $ml = strlen($message);
  58. $kl = strlen($this->salt);
  59. $encoded = "";
  60. for ($i = 0; $i < $ml; $i++) {
  61. $encoded = $encoded . ($message[$i] ^ $this->salt[$i % $kl]);
  62. }
  63. return base64_encode($encoded);
  64. }
  65.  
  66. /**
  67. * Декодирование сообщения
  68. * @param $message
  69. * @return mixed|null
  70. */
  71. private function decode($message) {
  72. $msg = base64_decode($message);
  73. debmes('msg='.$msg);
  74. $ml = strlen($msg);
  75. $kl = strlen($this->salt);
  76. $decoded = "";
  77. for ($i = 0; $i < $ml; $i++) {
  78. $decoded.= ($msg[$i] ^ $this->salt[$i % $kl]);
  79. }
  80. debmes('decoded='.$decoded);
  81. debmes( phpinfo());
  82. debmes('base64_decode(decoded)='.base64_decode($decoded));
  83.  
  84. return json_decode(base64_decode($decoded));
  85. }
  86.  
  87. }
  88. $message = 'Привет';
  89.  
  90. $sessionId = gg('ThisComputer.iiiBotSessionId');
  91.  
  92. // $message = $params['message'];
  93.  
  94. $bot = new Bot(BOT_TOKEN);
  95. if ($sessionId == '') {
  96. $session = $bot->session();
  97. sg('ThisComputer.iiiBotSessionId', $session);
  98. } else {
  99. $session = $bot->session($sessionId);
  100. }
  101.  
  102. $response = $bot->say($message);
  103. debmes('======================'.$response);
  104.  
  105. /*
  106. if (gg("ThisComputer.iiiBotVoice") == 0) { say($response); }
  107. else if (gg("ThisComputer.iiiBotVoice") == !0) { say($response, 1); }
  108. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement