Advertisement
stuppid_bot

Untitled

Dec 5th, 2013
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.03 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2. import vktools.utils as utils
  3. import account1
  4. import urllib
  5.  
  6. c = utils.create_client()
  7. c.auth(account1.login, account1.password)
  8. print c.user_id
  9. # c.api('wall.post', {'message': u'тест'})
  10.  
  11. # список всех кто онлайн получаем
  12. # users_online = c.api('friends.getOnline')
  13. # print users_online
  14. info = c.api('messages.getLongPollServer', {'use_ssl': 1})
  15. ts = info['ts']
  16. key = info['key']
  17. server = info['server']
  18. wait_time = 25
  19. import json
  20. import random
  21. import time
  22. defaults = [u'тю', u'азаза', u'иди нахуй']
  23. while True:
  24.     # устанавливаем онлайн
  25.     print c.api('account.setOnline')
  26.     url = 'https://%s?act=a_check&key=%s&ts=%s&wait=%s&mode=2' % (server, key, ts, wait_time)
  27.     # print url
  28.     info = c.fetch_json(url)
  29.     # подробнее тут
  30.     # 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
  31.     print info
  32.     ts = info['ts']
  33.     for v in info['updates']:
  34.         # print v
  35.         # отвечаем на личные сообщения
  36.         # v[2] - флаги. 0000000010 означает что сообщение исходящее, т.е. мы ищем только входящие
  37.         if v[0] == 4 and v[2] & 2 == 0:
  38.             # отмечаем как прочитанное
  39.             message_id = v[1]
  40.             from_id = v[3]
  41.             message = v[6]
  42.             try:
  43.                 print c.api('messages.markAsRead', {'message_ids': message_id, 'user_id': from_id})
  44.                 # отправляем запрос на xu.su
  45.                 res = urllib.urlopen('http://xu.su/send.php', 'bot=1&text=' + urllib.quote(message.encode('utf8')))
  46.                 data = res.read()
  47.                 result = json.loads(data)
  48.                 message = result['text']\
  49.                     if 'text' in result and\
  50.                         u'Я пока не могу ответить на этот вопрос, потому что моя база данных ещё маленькая. Поговори со мной и она увеличится!' != result['text']\
  51.                     else random.choice(defaults)
  52.                 # набираем сообщение
  53.                 c.api('messages.setActivity', {'user_id': from_id, 'type': 'typing'})
  54.                 time.sleep(random.uniform(1, 3))
  55.                 # проверяем откуда отправлено сообщение
  56.                 p = {'message': message}
  57.                 # если id отправителя больше 2 миллиардов, то сообщение отправлено из беседы
  58.                 if from_id < 2e9:
  59.                     p['user_id'] = from_id
  60.                 else:
  61.                     # вычисляем id беседы
  62.                     p['chat_id'] = from_id - 2e9
  63.                 print c.api('messages.send', p)
  64.             except Exception, e:
  65.                 print e
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement