Source Code for Me (s-c.me)

Allows you to paste souce code to blogs! Adapted for Twitter! Here is Search Form in case you missed your code.
Code:
Selected Language:
Show Linenumbers:
Short link for Twitter:
HTML:

HTML view:

Copy Source | Copy HTML
  1. #!/usr/bin/php
  2. <?php
  3. include('icq.php');
  4.  
  5. //подключение zendloader
  6. require 'Zend/Loader.php';
  7. Zend_Loader::registerAutoload();
  8.  
  9. //чтение конфига
  10. $config = new Zend_Config_Xml('config.xml',NULL,true);
  11.  
  12. //подключение к БД
  13. $db = Zend_Db::factory($config->dbadapter,$config->db->toarray());
  14. $db->query('SET CHARACTER SET "'.$config->dbcharset.'"');
  15.  
  16. //аськоклиент
  17. $icq = new WebIcqLite();
  18.  
  19. log_write("ICQ Bot started");
  20.  
  21. //коннектимся
  22. if (!$icq->connect($config->icq->login,$config->icq->password))
  23. {
  24. log_write($icq->error);
  25. exit();
  26. }
  27.  
  28. log_write("Connected ok");
  29.  
  30. while($icq->is_connected())
  31. {
  32. //читаем входящее сообщение
  33. $msg = $icq->read_message();
  34. if($msg)
  35. {
  36. //список админских комманд
  37. if ($msg['message']=="icqbotoff")
  38. {
  39. $icq->disconnect();
  40. log_write("Exit by admin's command.");
  41. exit();
  42. }
  43.  
  44. log_write(" Message '".$msg['message']."' from ".$msg['from']);
  45.  
  46. //режем все лишние символы
  47. $msg['message'] = str_replace(array('(',')','/',':','.',',','?','!','@','#','$','%','^','&','*','-','_','=','+','~','`',';','|','\\','\'','"'),'',$msg['message']);
  48.  
  49. //ищем ответ
  50. $ans = $db->select()->from('messages')->where('q LIKE ?',trim($msg['message']))->where('LENGTH(a)>0')->order('RAND()')->query()->fetch();
  51.  
  52. if ($ans)
  53. {
  54. //точное совпадение
  55. log_write(" Message '".$ans['a']."' sended to ".$msg['from']);
  56. }
  57. else
  58. {
  59. //нет совпадений. ищем полнотекстово.
  60. $db->insert('messages',array('q'=>$msg['message'],'a'=>'','from'=>$msg['from']));
  61. $query = "SELECT *, MATCH q AGAINST ('".$msg['message']."') as relev FROM messages WHERE LENGTH(a)>0 ORDER BY relev DESC LIMIT 1";
  62. $ans = $db->query($query)->fetch();
  63. if ($ans['relev']>0)
  64. {
  65. //нашли ответ
  66. log_write("Message fulltext search '".$ans['a']."' sended to ".$msg['from']);
  67. }
  68. else
  69. {
  70. //нет совпадений. выдаем сообщение по умолчанию.
  71. $ans = $db->select()->from('messages')->where('q LIKE ?','default')->query()->fetch();
  72. log_write("Message 'DEFAULT' sended to ".$msg['from']);
  73. }
  74. }
  75. $icq->send_message($msg['from'], $ans['a']);//собственно отправка сообщения получателю
  76. }
  77. //спим секунду
  78. flush();
  79. sleep(1);
  80. }
  81.  
  82. //уходим
  83. log_write("Disconnected by unknown reason.");
  84. $icq->disconnect();
  85.  
  86.  
  87.  
  88.  
  89. //----------------------------------------------------------------------------------------//
  90. //вспомогательные функции//
  91.  
  92. function log_write($str)
  93. {
  94. echo date('Y.m.d H.i.s',time())." ".$str."\n";
  95. }




Based on Manoli.Net's CodeFormatter. Made by Topbot (c) 2008-2018