· 5 years ago · Aug 17, 2020, 01:22 PM
1vk = vk_api.VkApi(token=token)
2
3
4def get_key():
5 """
6 Функция для начала новой сессии
7 :return: новый ключ, сервер и номер сообщения (чекай VK api)
8 """
9 response = vk.method('messages.getLongPollServer', {})
10 print(response)
11 return response['key'], response['server'], response['ts']
12
13
14key, server, ts = get_key()
15
16
17def get_events():
18 """
19 Фунция чека новых ивентов в боте и группе в целом
20 :return: возвращает ответ сервера и новое последнее сообщение
21 """
22 response = rq.get(f'https://{server}?act=a_check&key={key}&ts={ts}&wait=25&mode=10&version=2').json()
23 if 'ts' in response:
24 return response, response['ts']
25 else:
26 print(response)
27 return None, -1
28
29
30def write_msg(peer_id, text):
31 vk.method('messages.send',
32 {"peer_id": peer_id, "message": text, "random_id": random.randint(0, 10e10), "v": "5.110"})
33
34
35def ans(peer_id, text):
36 write_msg(peer_id, text)
37
38
39def get_name_1(user_id):
40 return vk.method('users.get', {'user_ids': user_id})[0]
41
42
43while True: # начало работы
44 answer, ts = get_events()
45 if answer is None:
46 key, server, ts = get_key()
47 print("NEW SERVER!")
48 continue
49 if 'updates' in answer:
50 updates = answer['updates']
51 for update in updates:
52 if update[0] == 8 or update[0] == 9 or \
53 (update[0] > 60 and update[0] < 70):
54 pass
55 elif update[0] == 4 and (update[2] == 51 or update[3] > 2000000000):
56 pass
57 elif update[0] == 4 and update[3] == -173789624 and update[2] == 17 and update[5] == 'ди':
58 ans(update[3], "Online✅")
59 elif update[0] == 4 and update[3] == 155921460 and update[5] == 'ди':
60 ans(update[3], "Online✅")
61 elif update[0] == 5:
62 if 0 < update[3] < 2000000000:
63 user = get_name_1(update[3])
64 print(update)
65 ans(update[3], f'Пользователь {user["first_name"]} {user["last_name"]} '
66 f'изменил сообщение на {str(update[5])}')
67 else:
68 user = get_name_1(update[-1]['from'])
69 print(f'Пользователь {user["first_name"]} {user["last_name"]} '
70 f'изменил сообщение на {str(update[5])}')
71 # ans(update[3], f'Пользователь {user["first_name"]} {user["last_name"]} '
72 # f'изменил сообщение на {update[5]}')
73 elif update[0] == 4:
74 print(update)
75 else:
76 pass
77 # print(update)
78