· 5 years ago · Aug 18, 2020, 11:16 AM
1import vk_api
2from vk_api.longpoll import VkLongPoll, VkEventType
3import random
4import time
5import requests as rq
6from collections import OrderedDict
7
8token = 'd8332d510f511697a307a7'
9
10vk = vk_api.VkApi(token=token)
11
12
13def get_key():
14 """
15 Функция для начала новой сессии
16 :return: новый ключ, сервер и номер сообщения (чекай VK api)
17 """
18 response = vk.method('messages.getLongPollServer', {})
19 print(response)
20 return response['key'], response['server'], response['ts']
21
22
23key, server, ts = get_key()
24
25
26def get_events():
27 """
28 Фунция чека новых ивентов в боте и группе в целом
29 :return: возвращает ответ сервера и новое последнее сообщение
30 """
31 response = rq.get(f'https://{server}?act=a_check&key={key}&ts={ts}&wait=25&mode=10').json()
32 if 'ts' in response:
33 return response, response['ts']
34 else:
35 print(response)
36 return None, -1
37
38
39def write_msg(peer_id, text):
40 vk.method('messages.send',
41 {"peer_id": peer_id, "message": text, "random_id": random.randint(0, 10e10), "v": "5.110"})
42
43
44def ans(peer_id, text):
45 if peer_id == 2000000221 and update[3] != 2000000206:
46 pass
47 else:
48 print(text)
49 write_msg(peer_id, text)
50
51
52def get_name_1(user_id):
53 return vk.method('users.get', {'user_ids': user_id})[0]
54
55
56last_messages = OrderedDict()
57
58while True: # начало работы
59 answer, ts = get_events()
60 if answer is None:
61 key, server, ts = get_key()
62 print("NEW SERVER!")
63 continue
64 if 'updates' in answer:
65 updates = answer['updates']
66 for update in updates:
67 if update[0] == 8 or update[0] == 9 or \
68 (60 < update[0] < 70):
69 pass
70 # elif len(update) > 2 and update[2] == 51:
71 # pass
72 elif update[0] == 4 and str(update[6]).lower() == 'ди':
73 ans(update[3], "Online✅")
74 elif update[0] == 5:
75 print(update)
76 if 0 < update[3] < 2000000000:
77 user = get_name_1(update[3])
78 print(user)
79 print(update)
80 if update[1] in last_messages:
81
82 ans(update[3], f'Пользователь {user["first_name"]} {user["last_name"]} '
83 f'изменил сообщение с {last_messages[update[1]]} на {str(update[6])}')
84 last_messages[update[1]] = update[6]
85 else:
86 ans(update[3], f'Пользователь {user["first_name"]} {user["last_name"]} '
87 f'изменил очень давнее сообщение на {str(update[6])}')
88 else:
89 user = get_name_1(update[-1]['from'])
90 if update[1] in last_messages:
91 print(last_messages[update[1]])
92
93 ans(update[3], f'Пользователь {user["first_name"]} {user["last_name"]} '
94 f'изменил сообщение с {last_messages[update[1]]} на {str(update[6])}')
95 last_messages[update[1]] = update[6]
96 else:
97 ans(update[3], f'Пользователь {user["first_name"]} {user["last_name"]} '
98 f'изменил очень давнее сообщение на {str(update[6])}')
99 # ans(update[3], f'Пользователь {user["first_name"]} {user["last_name"]} '
100 # f'изменил сообщение на {update[5]}')
101 elif update[0] == 4 and update[3] != 2000000221 and update[3] != 2000000206:
102 last_messages[update[1]] = update[6]
103 a = list(last_messages.keys())[0]
104 print(a)
105 if len(last_messages) >= 1000:
106 del last_messages[a]
107 print(last_messages)
108 else:
109 pass
110 # print(update)
111