Guest User

Untitled

a guest
Mar 24th, 2013
314
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // Пишите письма [email protected]
  2.  
  3. var bot = (function() {
  4.     // topMsg('<b>Ошибка</b>:', 3, '#ffb4a3')
  5.     var hello = ['Здравствуй', 'Привет', 'Ку', 'Салют'];
  6.  
  7.     function rand(min, max) {
  8.         return Math.floor( Math.random() * (max - min + 1) + min );
  9.     }
  10.  
  11.     function shuffle(arr) {
  12.         var i = 0, j, l = arr.length, temp;
  13.        
  14.         while (i < l) {
  15.             j = Math.floor(Math.random() * l);
  16.             temp = arr[i];
  17.             arr[i++] = arr[j];
  18.             arr[j] = temp;
  19.         }
  20.     }
  21.    
  22.     function parseMessage(input, extra) {
  23.         var ret = {
  24.                 title: '',
  25.                 media: ''
  26.             },
  27.            
  28.             replacements = {
  29.                 hello: hello[ Math.floor( Math.random() * hello.length ) ],
  30.                 greeting: greeting()
  31.             };
  32.            
  33.         for (var prop in extra) {
  34.             replacements[prop] = extra[prop];
  35.         }
  36.    
  37.         // {Вариант 1|Вариант 2|Вариант 3}
  38.         ret.body = input.replace(/\{(.+?)\}/g, function(str, match) {
  39.             match = match.split('|');
  40.             return match[ Math.floor( Math.random() * match.length ) ];
  41.         // %hello%, %name%
  42.         }).replace(/%(.+?)%/g, function(str, match) {
  43.             return replacements[match] ? replacements[match] : str;
  44.         // <title>Заголовок</title>
  45.         // <media>photo:1_2,audio:3_4,video:5_6</media>
  46.         }).replace(/<(\w+)>(.*)<\/\1>/g, function(str, tag, content) {
  47.             switch (tag) {
  48.                 case 'title':
  49.                     ret.title = content;
  50.                     return '';
  51.            
  52.                 case 'media':
  53.                     ret.media = content;
  54.                     return '';
  55.             }
  56.            
  57.             return str;
  58.         });
  59.  
  60.         return ret;
  61.     }
  62.    
  63.     function greeting() {
  64.         var hour = new Date().getHours();
  65.         return hour >= 22 || hour < 6 ? 'Доброй ночи' : ( hour >= 18 ? 'Добрый вечер' : (hour >= 12 ? 'Добрый день' : 'Доброе утро') );
  66.     }
  67.    
  68.     function selDialog(peer, cb) {
  69.         ajax.post('al_im.php', {
  70.             act: 'a_start',
  71.             peer: peer
  72.         }, {
  73.             onDone: function (response) {
  74.                 cb(response);
  75.             }
  76.         });
  77.     }
  78.    
  79.     // Функция для вычисления хэша при отправке личного сообщения.
  80.     //
  81.     // im.js:2069
  82.     // decHash: function(hash) {
  83.     //   (function(_){cur.decodedHashes[_]=(function(__){var ___=ge?'':'___';for(____=0;____<__.length;++____)___+=__.charAt(__.length-____-1);return geByClass?___:'___';})(_.substr(_.length-5)+_.substr(4,_.length-12));})(hash);
  84.     // },  
  85.     function hashIM(hash) {
  86.         return ( hash.slice(-5) + hash.substr(4, hash.length - 12) ).split('').reverse().join('');
  87.     }
  88.  
  89.     function _sendIM(user_id, message, dialog) {
  90.         message = parseMessage(message, {
  91.             name: dialog.name,
  92.             fullname: dialog.tab
  93.         });
  94.    
  95.         ajax.post('al_im.php', {
  96.             act: 'a_send',
  97.             al: 1,
  98.             to: user_id,
  99.             title: message.title,
  100.             msg: message.body,
  101.             media: message.media,
  102.             hash: hashIM(dialog.hash)        
  103.         }, {
  104.             onDone: function (response) {
  105.                 Notifier.showEvent({
  106.                     title: 'Сообщение доставлено',
  107.                     text: '<a href="im?sel=' + user_id + '" target="_blank" class="mem_link">' + dialog.tab + '</a> получил' + (response.sex == 1 ? 'а' : '') + ' сообщение:<p>' + message.body + '</p>',                            
  108.                     author_photo: dialog.photo,
  109.                     author_link: '',
  110.                     add_photo: ''                                  
  111.                 });              
  112.             }
  113.         });
  114.     }
  115.  
  116.     function sendIM(user_id, message) {
  117.         selDialog(user_id, function(response) {
  118.             _sendIM(user_id, message, response);
  119.         });
  120.     }
  121.    
  122.     function sendIM2List(message, ids, interval_seconds) {
  123.         interval_seconds = interval_seconds || 1;
  124.        
  125.         var i = 0, loop = setInterval(function() {
  126.             if (!ids[i]) {
  127.                 console.log('Рассылка личных сообщений завершена.');
  128.                 return clearInterval(loop);
  129.             }
  130.            
  131.             if ( !geByClass('captcha')[0] ) {              
  132.                 setTimeout(function() {
  133.                     console.log('#' + (i + 1) + '\t' + new Date().getTime() + '\n' + msg);
  134.                     sendIM(ids[i++], message);
  135.                 }, Math.floor(Math.random() * 100 * interval_seconds)); // +/- 10%
  136.             }
  137.         }, interval_seconds * 1000);
  138.     }
  139.    
  140.      
  141.     // получить список друзей
  142.     // gid - id группы, если указан, то все друзья состоящие в группе обнуляются
  143.     // getFriends(function(a) { console.log(a) }, { online: true, filters: { sex: 'ж', city: 'Москва', age_from: 16, age_to: 23 } });
  144.     function getFriends(cb, opts) {
  145.         opts = opts || {};
  146.        
  147.         ajax.post('al_friends.php', {
  148.             act: 'load_friends_silent',
  149.             al: 1,
  150.             gid: opts['gid'] || 0,
  151.             id: opts['id'] || vk.id
  152.         }, {
  153.             onDone: function(a, b, c) {
  154.                 // a - друзья, b - учебные заведения, c - города  
  155.                 eval('a=' + a);
  156.                 var friends = a.all;                
  157.                
  158.                 if ( opts['gid'] ) {
  159.                     friends = friends.filter(function(el) {
  160.                         return el;
  161.                     });
  162.                 }
  163.                
  164.                 if ( opts['online'] ) {
  165.                     friends = friends.filter(function(el) {
  166.                         return parseInt( el[4] );
  167.                     });
  168.                 }
  169.                
  170.                 if ( opts['filters'] ) {  
  171.                     var city = (function() {                        
  172.                             if (opts['filters']['city']) {    
  173.                                 for (var i = 0, l = c.cities.length; i < l; ++i) {
  174.                                     if (c.cities[i][1] == opts['filters']['city']) {
  175.                                         return c.cities[i][0];
  176.                                     }
  177.                                 }
  178.                             }
  179.  
  180.                             return 0;
  181.                         })(),
  182.                        
  183.                         sex = opts['filters']['sex'];                  
  184.                
  185.                     ajax.post('friends', {
  186.                         act: 'filter_friends',
  187.                         ads_section: 'friends',
  188.                         age_from: opts['filters']['age_from'] || 0,
  189.                         age_to: opts['filters']['age_to'] || 0,
  190.                         al: 1,
  191.                         al_ad: 1,
  192.                         // код города
  193.                         city: city,
  194.                         // 1 - женский, 2 - мужской
  195.                         sex: sex ? ( /^(2|м)$/i.test(sex) ? 2 : ( /^(1|ж)$/i.test(sex) ? 1 : 0 ) ) : 0,
  196.                         uid: vk.id
  197.                     }, {
  198.                         onDone: function(arr) {
  199.                             friends = friends.filter(function(el) {
  200.                                 return arr.indexOf( el[0] ) > -1;
  201.                             });
  202.                            
  203.                             cb(friends);
  204.                         }
  205.                     });
  206.                    
  207.                     return;
  208.                 }
  209.                
  210.                 cb(friends);
  211.             }
  212.         });
  213.     }
  214.  
  215.     return {
  216.         // pup: pup,
  217.         // getProfile: getProfile,
  218.         // parseDialog: parseDialog,
  219.         parseMessage: parseMessage,
  220.         selDialog: selDialog,
  221.         sendIM: sendIM,
  222.         sendIM2List: sendIM2List,
  223.         getFriends: getFriends,
  224.        
  225.         // добавление возможных друзей
  226.         addSuggestions: function() {
  227.             var offset = 0;
  228.            
  229.             function doStuff() {
  230.                 ajax.post('friends', {
  231.                     al: 1,
  232.                     act: 'get_section_friends',
  233.                     section: 'suggestions',
  234.                     offset: offset
  235.                 }, {
  236.                     onDone: function(data) {
  237.                         eval('data=(' + data + ').suggestions');
  238.                        
  239.                         if (data.length) {
  240.                             var i = 0, loop = setInterval(function() {  
  241.                                 if ( !geByClass('captcha')[0] ) {
  242.                                     var arr = data[i++];
  243.                                     console.log(arr);
  244.                                    
  245.                                     if (!data[i]) {
  246.                                         clearInterval(loop);
  247.                                         doStuff();
  248.                                     }
  249.                                
  250.                                     setTimeout(function() {
  251.                                         ajax.post('al_friends.php', {
  252.                                             act: 'add',
  253.                                             mid: arr[0],
  254.                                             hash: arr[8][0],
  255.                                             request: 1,
  256.                                             select_list: 1
  257.                                         }, {
  258.                                             onDone: function(msg) {
  259.                                                 console.log('#' + (i + 1) + '\t' + new Date().getTime() + '\n' + msg);
  260.  
  261.                                                 if ( /у Вас в друзьях/.test(msg) ) {
  262.                                                     msg = 'Заявка принята.';
  263.                                                 }
  264.                                                 else {                                              
  265.                                                     msg = /Заявка уже отправлена/.test(msg) ? 'Заявка уже отправлена.' : 'Заявка отправлена.';
  266.  
  267.                                                     // убираем из списка возможных друзей
  268.                                                     setTimeout(function() {
  269.                                                         ajax.post('al_friends.php', { act: 'hide_possible', al: 1, mid: arr[0], hash: arr[8][1] });
  270.                                                     }, rand(1000, 3000));
  271.                                                 }                                                                                                                            
  272.  
  273.                                                 Notifier.showEvent({
  274.                                                     title: 'Возможные друзья',
  275.                                                     text: '<a href="id' + arr[0] + '" target="_blank" class="mem_link">' + arr[5] + '</a><p>' + msg + '</p>',                            
  276.                                                     author_photo: arr[1],
  277.                                                     author_link: '',
  278.                                                     add_photo: ''                                  
  279.                                                 });                                                                                                                            
  280.                                             },
  281.  
  282.                                             onFail: function(msg) {
  283.                                                 if (msg == 'К сожалению, этот пользователь добавил Вас в чёрный список, поэтому Вы не можете добавить его в друзья.') {
  284.                                                      setTimeout(function() {
  285.                                                         ajax.post('al_friends.php', { act: 'hide_possible', al: 1, mid: arr[0], hash: arr[8][1] });
  286.                                                     }, rand(1000, 3000));
  287.                                                 }
  288.                                                 else if (msg == 'К сожалению, Вы не можете добавлять больше друзей за один день. Пожалуйста, попробуйте завтра.') {
  289.                                                     console.log('Закончили добавлять возможных друзей.');
  290.                                                     clearInterval(loop);                                                    
  291.                                                 }
  292.                                                 else {
  293.                                                     clearInterval(loop);
  294.                                                 }
  295.                                             }
  296.                                         }); //
  297.                                     }, rand(0, 3000));
  298.                                 }
  299.                             }, 10000);              
  300.                         }
  301.                                    
  302.                         offset += 40;
  303.                     }
  304.                 });
  305.             }
  306.            
  307.             doStuff();
  308.         },
  309.        
  310.         // приглашение друзей в группу
  311.         inviteTo: function(group_id, filters) {  
  312.             // список друзей получаем
  313.             getFriends(function(arr) {
  314.                 shuffle(arr);
  315.                 console.log(arr);
  316.                 // return;
  317.                
  318.                 if (arr.length) {
  319.                     var i = 0, loop = setInterval(function() {
  320.                         // проверяем есть ли капча
  321.                         if ( !geByClass('captcha')[0] ) {
  322.                             setTimeout(function() {
  323.                                 ajax.post('al_page.php', {
  324.                                     act: 'a_invite',
  325.                                     gid: group_id,
  326.                                     mid: arr[i][0],
  327.                                     hash: arr[i][11]
  328.                                 }, {
  329.                                     onDone: function(flg, msg) {
  330.                                         console.log('#' + (i + 1) + '\t' + new Date().getTime() + '\n' + msg);
  331.  
  332.                                         if (msg == 'Вы можете пригласить только 40 человек в день.') {                                                                            
  333.                                             i = -2;
  334.                                         }
  335.                                         else {
  336.                                             Notifier.showEvent({
  337.                                                 title: 'Рассылка приглашений',
  338.                                                 text: '<a href="' + arr[i][2] + '" target="_blank" class="mem_link">' + arr[i][5] + '</a><p>' + msg + '</p>',                            
  339.                                                 author_photo: arr[i][1],
  340.                                                 author_link: '',
  341.                                                 add_photo: ''                                  
  342.                                             });  
  343.                                         }
  344.                                        
  345.                                         if (!arr[++i]) {
  346.                                             console.log('Рассылка приглашений в группу закончена.');
  347.                                             return clearInterval(loop);
  348.                                         }
  349.                                     },
  350.  
  351.                                     onFail: function(msg) {
  352.                                         alert(msg);
  353.                                     }
  354.                                 });
  355.                             }, rand(0, 1000));
  356.                         }
  357.                     }, 3000);          
  358.                 }        
  359.             }, {
  360.                 gid: group_id,
  361.                 filters: filters
  362.             });
  363.         },
  364.        
  365.         sendIM2Friends: function(message, interval_seconds, opts) {
  366.             getFriends(function(arr) {
  367.                 arr = arr.map(function(el) {
  368.                     return el[0];
  369.                 });
  370.                
  371.                 shuffle(arr);            
  372.                 sendIM2List(message, arr, interval_seconds);
  373.             }, opts);
  374.         }
  375.     } // return
  376. })();
Advertisement
Add Comment
Please, Sign In to add comment