Advertisement
stuppid_bot

Untitled

Dec 6th, 2013
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.67 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2. import vktools.utils as utils
  3. from captcha import *
  4.  
  5. client_cfg = utils.load_cfg('client.json')
  6. c = utils.get_client(client_cfg)
  7. c.captcha_handler = get_captcha
  8. flooder_cfg = utils.load_cfg('flooder.json')
  9. c.auth(flooder_cfg['login'], flooder_cfg['password'])
  10. print 'VK ID %s' % c.user_id
  11. import urllib2
  12. import re
  13. import json
  14. import random
  15. import time
  16. sessions = {}
  17.  
  18. connection = False
  19. while True:
  20.     print sessions
  21.     # устанавливаем онлайн
  22.     print c.api('account.setOnline')
  23.     # print '----'
  24.     # notifies = c.api('notifications.get')
  25.     # break
  26.     # time.sleep(15)
  27.     # print '----'
  28.     # личные сообщения
  29.     # https://vk.com/pages?oid=-1&p=%D0%9F%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BA_LongPoll_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D1%83
  30.     if not connection:
  31.         print u'Подключаемся к LongPoll серверу'
  32.         ts, key, server = c.api('messages.getLongPollServer', {'use_ssl': 1}).values()
  33.         connection = True
  34.     url = 'https://%s?act=a_check&key=%s&ts=%s&wait=%s&mode=2' % (server, key, ts, flooder_cfg['wait_time'])
  35.     # print url
  36.     updates = c.fetch_json(url)
  37.     print updates
  38.     if 'failed' in updates:
  39.         print u'Время действия ключа истекло'
  40.         connection = False
  41.         continue
  42.     ts = updates['ts']
  43.     for v in updates['updates']:
  44.         # print v
  45.         # отвечаем на личные сообщения
  46.         # v[2] - флаги. 0000000010 означает что сообщение исходящее, т.е. мы ищем только входящие
  47.         if v[0] == 4 and v[2] & 2 == 0:
  48.             # отмечаем как прочитанное
  49.             message_id = v[1]
  50.             sender_id = v[3]
  51.             message = v[6]
  52.             print c.api('messages.markAsRead', {'message_ids': message_id, 'user_id': sender_id})
  53.             # отправляем запрос на xu.su
  54.             headers = {}
  55.             if sender_id in sessions:
  56.                 headers['Cookie'] = 'bot=' + sessions[sender_id]
  57.             req = urllib2.Request('http://xu.su/send.php',
  58.                                   'bot=1&text=' + urllib2.quote(message.encode('utf8')),
  59.                                    headers)
  60.             res = urllib2.urlopen(req)
  61.             headers = res.info()
  62.             if 'set-cookie' in headers:
  63.                 sessions[sender_id] = re.match('bot=([^;]+)', headers['set-cookie']).group(1)
  64.             data = res.read()
  65.             result = json.loads(data)
  66.             message = result['text']\
  67.                 if 'text' in result and\
  68.                     u'Я пока не могу ответить на этот вопрос, потому что моя база данных ещё маленькая. Поговори со мной и она увеличится!' != result['text']\
  69.                 else random.choice(flooder_cfg['default_messages'])
  70.             # набираем сообщение
  71.             c.api('messages.setActivity', {'user_id': sender_id, 'type': 'typing'})
  72.             time.sleep(random.uniform(1, 3))
  73.             # проверяем откуда отправлено сообщение
  74.             p = {'message': message}
  75.             # если id отправителя больше 2 миллиардов, то сообщение отправлено из беседы
  76.             if sender_id < 2e9:
  77.                 p['user_id'] = sender_id
  78.             else:
  79.                 # вычисляем id беседы
  80.                 p['chat_id'] = sender_id - 2e9
  81.             print c.api('messages.send', p)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement