stuppid_bot

Бот работает из консоли только

Mar 21st, 2013
311
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // <b>Заявка уже отправлена.</b> Повторно заявка отправлена не будет.
  2. // <div class="friends_req_sended"><div class="friends_req_header"><b>Заявка отправлена.</b></div><a class="mem_link" href="/ohmygodfuck" exuser="true">Михаил Добронравов</a><a id="pupohmygodfuck_659" class="vk_usermenu_btn" onclick="pupShow(event,'ohmygodfuck_659','ohmygodfuck',this); return false;" onmousedown="event.cancelBubble = true;">▼&nbsp;</a> получил уведомление и подтвердит, что Вы его друг.</div>
  3.  
  4. var bot = (function() {
  5.     var hello = ['Здравствуй', 'Привет', 'Ку', 'Салют'];
  6.  
  7.     function shuffle(arr) {
  8.         var i = 0, j, l = arr.length, temp;
  9.        
  10.         while (i < l) {
  11.             j = Math.floor(Math.random() * l);
  12.             temp = arr[i];
  13.             arr[i++] = arr[j];
  14.             arr[j] = temp;
  15.         }
  16.     }
  17.    
  18.     function parseMessage(input, extra) {
  19.         var out = { media: '' },
  20.             replacements = {
  21.                 hello: hello[ Math.floor( Math.random() * hello.length ) ],
  22.                 greeting: greeting()
  23.             };
  24.            
  25.         for (var prop in extra) {
  26.             replacements[prop] = extra[prop];
  27.         }
  28.    
  29.         out.message = input.replace(/\{(.+?)\}/g, function(str, match) {
  30.             match = match.split('|');
  31.             return match[ Math.floor( Math.random() * match.length ) ];
  32.         }).replace(/%(.+?)%/g, function(str, match) {
  33.             return replacements[match] ? replacements[match] : str;
  34.         }).replace(/<(\w+)>(.*)<\/\1>/i, function(str, tag, content) {
  35.             if (tag == 'media') {
  36.                 out.media = content;
  37.                 return '';
  38.             }
  39.            
  40.             return str;
  41.         });
  42.  
  43.         return out;
  44.     }
  45.    
  46.     function greeting() {
  47.         var hour = new Date().getHours();
  48.         return hour >= 22 || hour < 6 ? 'Доброй ночи' : ( hour >= 18 ? 'Добрый вечер' : (hour >= 12 ? 'Добрый день' : 'Доброе утро') );
  49.     }  
  50.    
  51.     function mail(message, user_id) {
  52.         ajax.post('id' + user_id, {}, {
  53.             onDone: function(a, b, c) {  
  54.                 var reps = {},
  55.                     fullname = c.match(/"back":"([^"]+)"/)[1],
  56.                     hash = c.match(/hash: '(\w+)'/),
  57.                     temp;
  58.                
  59.                 // хэша нет
  60.                 if (!hash) {
  61.                     return topMsg('Невозможно отправить личное сообщение @id' + user_id, 3, '#ffb4a3');
  62.                 }
  63.                    
  64.                 temp = fullname.split(' ');
  65.                
  66.                 temp = parseMessage(message, {
  67.                     fullname: fullname,        
  68.                     name: temp[0],
  69.                     surname: temp[1]
  70.                 });
  71.                
  72.                 ajax.post('al_mail.php', {
  73.                     act: 'a_send',
  74.                     al: 1,
  75.                     chas: hash[1],
  76.                     from: 'box',
  77.                     media: temp.media,
  78.                     message: temp.message,
  79.                     title: '',
  80.                     to_ids: user_id
  81.                 }, {
  82.                     onDone: function(msg) {
  83.                         Notifier.showEvent({
  84.                             title: 'Отправка письма',
  85.                             text: msg,                            
  86.                             author_photo: c.match(/wdd_img\\" src=\\"([^"]+)\\"/)[1].replace(/\\\//g, '/'),
  87.                             author_link: '',
  88.                             add_photo: ''                                  
  89.                         });
  90.                     }
  91.                 });
  92.             }
  93.         });
  94.     }
  95.    
  96.     function mail2list(message, ids, interval_seconds) {
  97.         interval_seconds = interval_seconds || 1;
  98.        
  99.         var i = 0, loop = setInterval(function() {
  100.             if (!ids[i]) {
  101.                 topMsg('Рассылка писем завершена.', 3);
  102.                 return clearInterval(loop);
  103.             }
  104.            
  105.             if ( !geByClass('captcha')[0] ) {
  106.                 mail(message, ids[i++]);
  107.             }
  108.         }, interval_seconds * 1000);
  109.     }
  110.    
  111.      
  112.     // получить список друзей
  113.     // gid - id группы, если указан, то все друзья состоящие в группе обнуляются
  114.     // getFriends(function(a) { console.log(a) }, { online: true, filters: { sex: 'ж', city: 'Москва', age_from: 16, age_to: 23 } });
  115.     function getFriends(cb, opts) {
  116.         opts = opts || {};
  117.        
  118.         ajax.post('al_friends.php', {
  119.             act: 'load_friends_silent',
  120.             al: 1,
  121.             gid: opts['gid'] || 0,
  122.             id: vk.id
  123.         }, {
  124.             onDone: function(a, b, c) {
  125.                 // a - друзья, b - учебные заведения, c - города          
  126.                 var friends;
  127.                 eval('friends = (' + a + ').all');
  128.                
  129.                 if ( opts['gid'] ) {
  130.                     friends = friends.filter(function(el) {
  131.                         return el;
  132.                     });
  133.                 }
  134.                
  135.                 if ( opts['online'] ) {
  136.                     friends = friends.filter(function(el) {
  137.                         return parseInt( el[4] );
  138.                     });
  139.                 }
  140.                
  141.                 if ( opts['filters'] ) {      
  142.                     if (opts['filters']['city']) {              
  143.                         for (var i = 0, l = c.cities.length; i < l; ++i) {
  144.                             if (c.cities[i][1] == opts['filters']['city']) {
  145.                                 opts['filters']['city'] = c.cities[i][0];
  146.                                 break;
  147.                             }
  148.                         }
  149.                     }
  150.                
  151.                     ajax.post('friends', {
  152.                         act: 'filter_friends',
  153.                         ads_section: 'friends',
  154.                         age_from: opts['filters']['age_from'] || 0,
  155.                         age_to: opts['filters']['age_to'] || 0,
  156.                         al: 1,
  157.                         al_ad: 1,
  158.                         // код города
  159.                         city: opts['filters']['city'] || 0,
  160.                         // 1 - женский, 2 - мужской
  161.                         sex: opts['filters']['sex'] ? ( opts['filters']['sex'] == 'м' ? 2 : ( opts['filters']['sex'] == 'ж' ? 1 : 0 ) ) : 0,
  162.                         uid: vk.id
  163.                     }, {
  164.                         onDone: function(filtered) {
  165.                             friends = friends.filter(function(el) {
  166.                                 return filtered.indexOf( el[0] ) > -1;
  167.                             });
  168.                                                  
  169.                             cb(friends);
  170.                         }
  171.                     });
  172.                    
  173.                     return;
  174.                 }
  175.                
  176.                 cb(friends);
  177.             }
  178.         });
  179.     }
  180.  
  181.     return {
  182.         mail: mail,
  183.         mail2list: mail2list,
  184.         getFriends: getFriends,
  185.        
  186.         // добавление возможных друзей
  187.         addSuggestions: function() {
  188.             var offset = 0;
  189.            
  190.             function doStuff() {
  191.                 ajax.post('friends', {
  192.                     al: 1,
  193.                     act: 'get_section_friends',
  194.                     section: 'suggestions',
  195.                     offset: offset
  196.                 }, {
  197.                     onDone: function(data) {
  198.                         eval('data=(' + data + ').suggestions');
  199.                        
  200.                         if (data.length) {
  201.                             var i = 0, loop = setInterval(function() {  
  202.                                 if ( !geByClass('captcha')[0] ) {
  203.                                     ajax.post('al_friends.php', {
  204.                                         act: 'add',
  205.                                         mid: data[i][0],
  206.                                         hash: data[i][8][0],
  207.                                         request: 1,
  208.                                         select_list: 1
  209.                                     }, {
  210.                                         onDone: function(msg) {
  211.                                             console.log(msg);
  212.                                            
  213.                                             if (msg == 'К сожалению, Вы не можете добавлять больше друзей за один день. Пожалуйста, попробуйте завтра.') {
  214.                                                 i = -1;
  215.                                             }
  216.                                            
  217.                                             if (!data[i]) {
  218.                                                 clearInterval(loop);
  219.                                                 doStuff();
  220.                                             }
  221.                                        
  222.                                             Notifier.showEvent({
  223.                                                 title: 'Добавление друзей',
  224.                                                 text: msg,                            
  225.                                                 author_photo: data[i++][1],
  226.                                                 author_link: '',
  227.                                                 add_photo: ''                                  
  228.                                             });
  229.                                        
  230.                                             if (msg == 'К сожалению, Вы не можете добавлять больше друзей за один день. Пожалуйста, попробуйте завтра.') {
  231.                                                 return clearInterval(loop);
  232.                                             }                                                                                      
  233.                                         },
  234.                                        
  235.                                         onFail: function(a, b, c) {
  236.                                             alert('Fail:\n\n' + JSON.stringify(a) + '\n\n' + JSON.stringify(b) + '\n\n' + JSON.stringify(c));
  237.                                         }
  238.                                     });
  239.                                 }
  240.                             }, 10000);              
  241.                         }
  242.                                    
  243.                         offset += 40;
  244.                     }
  245.                 });
  246.             }
  247.            
  248.             doStuff();
  249.         },
  250.        
  251.         // приглашение друзей в группу
  252.         inviteTo: function(group_id, filters) {  
  253.             // список друзей получаем
  254.             getFriends(function(arr) {              
  255.                 if (arr.length) {
  256.                     var i = 0, loop = setInterval(function() {
  257.                         // проверяем есть ли капча
  258.                         if ( !geByClass('captcha')[0] ) {
  259.                             ajax.post('al_page.php', {
  260.                                 act: 'a_invite',
  261.                                 gid: group_id,
  262.                                 mid: arr[i][0],
  263.                                 hash: arr[i][11]
  264.                             }, {
  265.                                 onDone: function(flg, msg) {
  266.                                     if (msg == 'Вы можете пригласить только 40 человек в день.') {                                                                            
  267.                                         i = -1;
  268.                                     }
  269.                                
  270.                                     if (!arr[i]) {
  271.                                         topMsg('Рассылка приглашений в группу завершена.', 3);
  272.                                         return clearInterval(loop);
  273.                                     }                                    
  274.                                      
  275.                                     Notifier.showEvent({
  276.                                         title: 'Приглашение в группу',
  277.                                         text: msg,                            
  278.                                         author_photo: arr[i++][1],
  279.                                         author_link: '',
  280.                                         add_photo: ''                                  
  281.                                     });                                                                                        
  282.                                 }
  283.                             });
  284.                         }
  285.                     }, 1000);              
  286.                 }              
  287.             }, {
  288.                 gid: group_id,
  289.                 filters: filters
  290.             });
  291.         },
  292.        
  293.         mail2friends: function(message, interval_seconds, opts) {
  294.             getFriends(function(arr) {
  295.                 arr = arr.map(function(el) {
  296.                     return el[0];
  297.                 });
  298.                
  299.                 shuffle(arr);            
  300.                 mail2list(message, arr, interval_seconds);
  301.             }, opts);
  302.         }
  303.     } // return
  304. })();
Advertisement
Add Comment
Please, Sign In to add comment