· 4 years ago · Feb 15, 2021, 02:30 PM
1import random
2import json
3import vk_api
4
5from config import *
6from commands import say_hello as hello, rp_command as rp, command_list as commands, com_search, photos
7
8from vk_api.utils import get_random_id
9from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType
10from vk_api.upload import VkUpload
11
12vk_session = vk_api.VkApi(token=token)
13longpoll = VkBotLongPoll(vk_session, group_id=group_id)
14vkApi = vk_session.get_api()
15uploader = VkUpload(vkApi)
16
17
18def upload(uploader, photo):
19 response = uploader.photo_messages(photo)[0]
20
21 owner_id = response.get('owner_id')
22 photo_id = response.get('id')
23 access_key = response.get('access_key')
24
25 attachment = f'photo{owner_id}_{photo_id}_{access_key}'
26
27 return attachment
28
29
30def get_user_info(user_id, name_case = 'nom'):
31 """Получение информации о пользователе вконтакте\n
32 Параметры:\n
33 :user_id: id пользователя\n
34 :name_case: в каком падеже вернть данные\n
35 возвращает инфрмацию о пользователе"""
36 data = vk_session.method('users.get', {
37 'user_id': user_id,
38 'fields': 'sex, screen_name',
39 'name_case': name_case
40 })
41 return data
42
43
44def send_message(chat_id, message=None, forward=None, attachment=None):
45 vk_session.method('messages.send', {
46 'chat_id': chat_id,
47 'message': message,
48 'forward': forward,
49 'attachment': attachment,
50 'random_id': get_random_id()
51 })
52
53
54def kick_user(chat_id, user_id):
55 vk_session.method('messages.removeChatUser', {
56 'chat_id': chat_id,
57 'user_id': user_id
58 })
59
60
61# def answer_message(chat_id, id_message, peer_id, text):
62# query_json = json.dumps({"peer_id": peer_id,"conversation_message_ids":[id_message],"is_reply":True})
63# vk_session.method('messages.send', {
64# 'chat_id': chat_id,
65# 'forward': [query_json],
66# 'message': text,
67# 'random_id': get_random_id()})
68
69for event in longpoll.listen():
70 if event.type == VkBotEventType.MESSAGE_NEW and event.from_chat and event.message.get('text') != '':
71 msg = str(event.message.get('text'))
72 chat_id = event.chat_id
73 message_id = event.message.get('conversation_message_id')
74 # 1
75 if msg in hello:
76 try:
77 user_id = event.message.get('from_id')
78 user_info = get_user_info(user_id)[0]
79 message = f'Привет, [id{user_id}|{user_info.get("first_name")}]!'
80 send_message(chat_id, message=message)
81 except Exception as e:
82 print('error', e)
83
84 # 2
85 elif commands[0] in msg:
86 # если в сообщении есть !кик
87 try:
88 if msg == commands[0]:
89 message = '✏ Укажите участника для исключения!'
90 send_message(chat_id, message=message)
91 else:
92 user_id = int(msg[msg.find("d") + 1:msg.find("|")])
93 message = f'❌ [id{user_id}|Вас], исключили из беседы!'
94 send_message(chat_id, message=message)
95 kick_user(chat_id, user_id)
96 except Exception as e:
97 print('error', e)
98
99 # 3
100 elif commands[1] == msg.lower():
101 # если сообщение '!созвать всех'
102 try:
103 message = 'Внимание созыв!\n🗣 @all'
104 send_message(chat_id, message=message)
105 except Exception as e:
106 print('error', e)
107
108 elif commands[2] == msg.lower():
109 # если сообщение '!созвать онлайн'
110 try:
111 message = 'Внимание созыв!\n🗣 @online'
112 send_message(chat_id, message=message)
113 except Exception as e:
114 print('error', e)
115
116 elif msg.lower() == 'бот':
117 try:
118 message = '✅ Да да, я тут!'
119 send_message(chat_id, message=message)
120 except Exception as e:
121 print('error', e)
122
123 # 4
124 elif msg in com_search:
125 try:
126 user_id = event.message.get('from_id')
127 user_info = get_user_info(user_id)[0]
128 # id = user_info['id']
129 name = user_info['first_name']
130 message = f'🔎 [id{user_id}|{name}], по вашему запросу ссылки на поисковые системы:\n\n• Google - google.com \n• Яндекс - yandex.ru \n• Bing - bing.com \n• Yahoo - yahoo.com'
131 send_message(chat_id, message=message)
132 except Exception as e:
133 print('error', e)
134
135 elif msg.lower() == 'ты бот?':
136 try:
137 peer_id = event.message.get('peer_id')
138 message_id = event.message.get('conversation_message_id')
139 forward = json.dumps({"peer_id": peer_id, "conversation_message_ids": [message_id], "is_reply": True})
140 message = ''
141 send_message(chat_id, message=message, forward=forward)
142 except Exception as e:
143 print('error', e)
144
145 elif commands[3] == msg.lower():
146 # если сообщение !фото котика
147 try:
148 message = 'Фото с котиком',
149 photo = random.choice(photos)
150 attachment = upload(uploader, photo)
151 send_message(chat_id, message=message, attachment=attachment)
152 except Exception as e:
153 print('error', e)
154
155
156#рп команды
157
158 elif rp[0] in msg.lower():
159 #если команда пнуть
160 photo = random.choice("СЮДА ПЕРЕДАТЬ СПИСОК БЕЗ КАВЫЧЕК ПЕРЕМЕННУЮ")
161 who = event.message.get("from_id") #ПОЛУЧАЕМ КТО ПНУЛ
162 who_info = get_user_info(who)[0]
163 reply = event.message.get("reply_message")
164
165 try:
166 if reply != None:
167 whom = reply["from_id"] #id того кого пнули
168 else:
169 whom = int(msg[msg.find("d")+1:msg.find("|")]) #id того кого пнули
170 except Exception as e:
171 print("error", e)
172
173 whom_info = get_user_info(whom, name_case='acc')[0]
174
175 try:
176 if who_info.get("sex") == 1:
177 message = f'[id{who}|{who_info.get("first_name")}] пнула [id{whom}|{whom_info.get("first_name")}]'
178 send_message(chat_id, message=message, attachment=upload(uploader, photo))
179 else:
180 message = f'[id{who}|{who_info.get("first_name")}] пнул [id{whom}|{whom_info.get("first_name")}]'
181 send_message(chat_id, message=message, attachment=upload(uploader, photo))
182 except Exception as e:
183 print("error", e)