· 6 years ago · Aug 04, 2019, 07:28 PM
1import time, datetime, vk_api, random, json, sqlite3
2from vk_api.bot_longpoll import VkBotEventType, VkBotLongPoll
3from datetime import date
4from vk_api.keyboard import VkKeyboard, VkKeyboardColor
5
6# Auth & connect to API
7vk = vk_api.VkApi(token="2476e1057f1d1cebdd7231024bed84502c378d8eb135c72bb82ce21f5b148f626c1f35c99f8dfdca76154")
8vk.get_api()
9longpoll = VkBotLongPoll(vk, "183287477")
10
11# Const
12who = ["Звали?!", "Да что тебе?", "Что?", "Отстань, я занят!", "Подай бумаги!", "Где мои штаны?!", "Чего надобно, смертный?"]
13bad = ['бля', 'сука', 'блять', 'хуй', 'уебок', 'пизда', 'еблан', 'пидор', 'пидар', 'пидорас', 'залупа', 'хуесос', 'гондон', 'долбаеб', 'пидр', 'шлюха', 'гандон', 'пидарас', 'гондон']
14roles = {"adm": ["Администратор", 3], "mod": ["Модератор", 2], "helper": ["Помощник", 1]}
15admins = [444443537, 292069666, 422619349, 197564303]
16hack = ["Loading...", "Начинаю подбор паролей...", "DONE!", "База данных взломана!"]
17wedding = {}
18
19
20# Connection to SQL
21con = sqlite3.connect("kauft_bot.db", check_same_thread=False)
22cur = con.cursor()
23cur.execute('''
24 CREATE TABLE IF NOT EXISTS blacklist (
25 user_id INTEGER,
26 reason TEXT,
27 date TEXT,
28 time TEXT,
29 admin TEXT)
30 ''')
31con.commit()
32
33
34# Main code
35while True:
36 try:
37 delta = datetime.timedelta(hours=3, minutes=0)
38 t = (datetime.datetime.now(datetime.timezone.utc) + delta)
39 nowtime = t.strftime("%H:%M") # текущее время
40 nowdate = t.strftime("%d.%m.%Y")
41 for event in longpoll.listen():
42 if event.type == VkBotEventType.MESSAGE_NEW:
43 chat_id = str(event.object.peer_id)
44 qw = '"' + chat_id + '"'
45 user_id = event.object.from_id
46 text = event.object.text.lower()
47 answer = text.split()
48 if event.object.peer_id != event.object.from_id:
49 if not str(user_id).isdigit():
50 break
51 name = vk.method("users.get", {"user_ids": user_id})
52 full1 = name[0]["first_name"] + ' ' + name[0]["last_name"]
53 q = """
54 CREATE TABLE IF NOT EXISTS {table} (
55 user_id INTEGER,
56 warns INTEGER,
57 swears INTEGER,
58 autokick INTEGER,
59 full TEXT,
60 date TEXT,
61 time TEXT,
62 role TEXT,
63 nick TEXT,
64 symbol TEXT,
65 partner TEXT,
66 bdate TEXT)
67 """
68 cur.execute(q.format(table=qw))
69 s = '''SELECT user_id FROM {table} WHERE user_id = "%s"''' % user_id
70 cur.execute(s.format(table=qw))
71 check = cur.fetchone()
72 if check is None:
73 w = '''INSERT INTO {table} (user_id, warns, swears, autokick, full, date, time, role, nick, symbol, partner, bdate) VALUES ("%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s", "%s")''' % (
74 user_id, 0, 0, 0, full1, nowdate, nowtime, "Участник", "-", "-", "-", "-")
75 cur.execute(w.format(table=qw))
76 con.commit()
77 cur.execute('SELECT user_id FROM blacklist WHERE user_id = "%s"' % int(user_id))
78 inb = cur.fetchone()
79 if inb != None:
80 break
81 #Command - date
82 if (len(answer) == 2) and (answer[0] == "кафт") and (answer[1] == "дата"):
83 t = (datetime.datetime.now(datetime.timezone.utc) + delta)
84 nowtime = t.strftime("%H:%M")
85 nowdate = t.strftime("%d.%m.%Y")
86 vk.method("messages.send", {"peer_id": event.obj.peer_id, "message": "Сегодняшняя дата: " + str(nowdate) + "\nВремя по МСК: " + str(nowtime), "random_id": 0})
87 elif (len(answer) == 1) and (answer[0] == "кафт"):
88 vk.method("messages.send", {"peer_id": event.obj.peer_id, "message": random.choice(who), "random_id": 0})
89
90 elif (len(answer) == 2) and (answer[0] == "кафт") and (answer[1] == "число"):
91 vk.method("messages.send", {"peer_id": event.obj.peer_id, "message": "Случайное число: " + str(random.randint(0,100)), "random_id": 0})
92 elif (len(answer) == 2) and (answer[0] == "кафт") and (answer[1] == "клава"):
93 vk.method("messages.send", {"peer_id": event.obj.peer_id, "message": "Лови клаву!", "keyboard": open("keyboard.json", "r", encoding="UTF-8").read(), "random_id": 0})
94 elif (len(answer) == 3) and (answer[0] == "кафт") and (answer[1] == "убрать"):
95 vk.method("messages.send", {"peer_id": event.obj.peer_id, "message": "Клавиатура убрана!", "keyboard": open("none.json", "r").read(), "random_id": 0})
96
97 elif (len(answer) == 2) and (answer[1] == "кикнуть"):
98 vk.method("messages.removeChatUser", {"chat_id": event.object.peer_id-2000000000, "member_id": usid})
99
100 elif (len(answer) == 2) and (answer[0] == "кафт") and (answer[1] == "участник"):
101 k = '''SELECT * FROM {table} WHERE user_id = "%s"''' % user_id
102 cur.execute(k.format(table=qw))
103 info = cur.fetchall()
104 for info in info:
105 d = datetime.datetime.strptime(info[5], "%d.%m.%Y")
106 d1 = datetime.datetime.strptime(nowdate, "%d.%m.%Y")
107 delta = d1 - d
108 if info[9] == "-":
109 vk.method("messages.send", {"peer_id": chat_id,
110 "message": "Профиль пользователя @id" + str(
111 info[0]) + "(" + str(info[4]) + "):"
112 "\nНик: " + str(
113 info[8]) +
114 "\nВ чате с: " + str(info[5]) + ' ' + str(
115 info[6]) + " (" + str(delta.days) + " дн.)" +
116 "\nРоль в беседе: " + str(info[7]) +
117 "\nМаты: " + str(info[2]) + " слов." +
118 "\nПредупреждений: " + str(info[1]) +
119 "\nВ браке с: " + str(info[10]),
120 "disable_mentions": 1, "random_id": 0})
121 else:
122 vk.method("messages.send", {"peer_id": chat_id,
123 "message": "Профиль пользователя @id" + str(
124 info[0]) + "(" + str(info[4]) + ")" + ' ' + str(info[9]) + ":" +
125 "\nНик: " + str(
126 info[8]) +
127 "\nВ чате с: " + str(info[5]) + ' ' + str(
128 info[6]) + " (" + str(delta.days) + " дн.)" +
129 "\nРоль в беседе: " + str(info[7]) +
130 "\nМаты: " + str(info[2]) + " слов." +
131 "\nПредупреждений: " + str(info[1]) +
132 "\nВ браке с: " + str(info[10]),
133 "disable_mentions": 1, "random_id": 0})
134
135 elif (len(answer) == 3) and (answer[0] == "кафт") and (answer[1] == "участник"):
136 us = answer[2]
137 us = us.split("|")[0]
138 us = us.replace("[id", "")
139 ii = vk.method("messages.getConversationMembers", {"peer_id": chat_id})
140 user = [usr["member_id"] for usr in ii["items"]]
141 if int(us) in user:
142 u = '''SELECT * FROM {table} WHERE user_id = "%s"''' % int(us)
143 cur.execute(u.format(table=qw))
144 info1 = cur.fetchall()
145 for info1 in info1:
146 d = datetime.datetime.strptime(info1[5], "%d.%m.%Y")
147 d1 = datetime.datetime.strptime(nowdate, "%d.%m.%Y")
148 delta = d1 - d
149 if info1[9] == "-":
150 vk.method("messages.send", {"peer_id": chat_id,
151 "message": "Профиль пользователя @id" + str(
152 info1[0]) + "(" + str(info1[4]) + "):"
153 "\nНик: " + str(
154 info1[8]) +
155 "\nВ чате с: " + str(
156 info1[5]) + ' ' + str(info1[6]) + " (" + str(
157 delta.days) + " дн.)" +
158 "\nРоль в беседе: " + str(info1[7]) +
159 "\nМаты: " + str(info1[2]) + " слов." +
160 "\nПредупреждений: " + str(info1[1]) +
161 "\nВ браке с: " + str(info1[10]),
162 "disable_mentions": 1, "random_id": 0})
163 else:
164 vk.method("messages.send", {"peer_id": chat_id,
165 "message": "Профиль пользователя @id" + str(
166 info1[0]) + "(" + str(info1[4]) + ")" + ' ' + str(info1[9]) + ":" +
167 "\nНик: " + str(
168 info1[8]) +
169 "\nВ чате с: " + str(
170 info1[5]) + ' ' + str(info1[6]) + " (" + str(
171 delta.days) + " дн.)" +
172 "\nРоль в беседе: " + str(info1[7]) +
173 "\nМаты: " + str(info1[2]) + " слов." +
174 "\nПредупреждений: " + str(info1[1]) +
175 "\nВ браке с: " + str(info1[10]),
176 "disable_mentions": 1, "random_id": 0})
177 else:
178 vk.method("messages.send",
179 {"peer_id": chat_id, "message": "Ошибка! Участник отсутствует в чате!", "random_id": 0})
180
181
182 elif (len(answer) == 4) and (answer[0] == "кафт") and (answer[2] == "роль"):
183 role = '''SELECT role FROM {table} WHERE user_id = "%s"''' % user_id
184 cur.execute(role.format(table=qw))
185 rolen = cur.fetchone()
186 for rolei in rolen:
187 if rolei == "Администратор":
188 id = answer[1]
189 id = id.split("|")[0]
190 id = id.replace("[id", "")
191 inc = vk.method("messages.getConversationMembers", {"peer_id": chat_id})
192 mem = [ids["member_id"] for ids in inc["items"]]
193 role1 = answer[3]
194 if role1 not in roles.keys():
195 vk.method("messages.send", {"peer_id": chat_id, "message": "Роли" + ' ' + str(role1) + " не существует!"
196 "\nВсе доступные роли: 'adm' (Администратор), 'mod' (Модератор), 'helper' (Помощник)", "random_id": 0})
197
198 else:
199 if int(id) not in mem:
200 vk.method("messages.send", {"peer_id": chat_id, "message": "Участник отсутствует в чате!", "random_id": 0})
201 else:
202 for own in inc["items"]:
203 if own["member_id"] == int(id):
204 is_own = own.get("is_owner", False)
205 if is_own == False:
206 rolename = [rn for rn in roles.get(role1)]
207 rol = '''UPDATE {table} SET role = "%s" WHERE user_id = "%s"''' % (rolename[0], id)
208 cur.execute(rol.format(table=qw))
209 con.commit()
210 vk.method("messages.send", {"peer_id": chat_id, "message": "Участнику выдана роль - " + ' ' + str(rolename[0]), "random_id": 0})
211 if is_own == True:
212 vk.method("messages.send", {"peer_id": chat_id,
213 "message": "Ошибка! Вы не можете изменять роль Создателя чата!",
214 "random_id": 0})
215 else:
216 vk.method("messages.send", {"peer_id": chat_id, "message": "У вас нету доступа к данной команде!"
217 "\nНеобходимая роль: 'Администратор'." , "random_id": 0})
218
219 elif(len(answer) == 4) and (answer[0] == "кафт") and (answer[2] == "снять"):
220 role1 = '''SELECT role FROM {table} WHERE user_id = "%s"''' % user_id
221 cur.execute(role1.format(table=qw))
222 rolesss = cur.fetchone()
223 for roless in rolesss:
224 if roless == "Администратор":
225 sid = answer[1]
226 sid = sid.split("|")[0]
227 sid = sid.replace("[id", "")
228 members = vk.method("messages.getConversationMembers", {"peer_id": chat_id})
229 chat = [c["member_id"] for c in members["items"]]
230 if int(sid) not in chat:
231 vk.method("messages.send",
232 {"peer_id": chat_id, "message": "Участник отсутствует в чате!",
233 "random_id": 0})
234 else:
235 for o in members["items"]:
236 if o["member_id"] == int(sid):
237 os = o.get('is_owner', False)
238 if os == False:
239 memb = '''UPDATE {table} SET role = "%s" WHERE user_id = "%s"''' % ("Участник", int(sid))
240 cur.execute(memb.format(table=qw))
241 con.commit()
242 vk.method("messages.send", {"peer_id": chat_id, "message": "Участник снят с роли!", "random_id": 0})
243 if os == True:
244 vk.method("messages.send", {"peer_id": chat_id,
245 "message": "Ошибка! Вы не можете изменять роль Создателя чата!",
246 "random_id": 0})
247
248 else:
249 vk.method("messages.send",
250 {"peer_id": chat_id, "message": "У вас нету доступа к данной команде!"
251 "\nНеобходимая роль: 'Администратор'.",
252 "random_id": 0})
253
254 elif (len(answer) == 2) and (answer[0] == "кафт") and (answer[1] == "обновить"):
255 chatMembers = vk.method('messages.getConversationMembers', {'peer_id': chat_id})
256 for member in chatMembers['items']:
257 if member['member_id'] == user_id:
258 owner = member.get('is_owner', False)
259 if owner == True:
260 o = '''SELECT role FROM {table} WHERE user_id = "%s"''' % user_id
261 cur.execute(o.format(table=qw))
262 role1 = cur.fetchone()
263 for role1 in role1:
264 if role1 != "Администратор":
265 rolename = [rn for rn in roles.get("adm")]
266 s = '''UPDATE {table} SET role = "%s" WHERE user_id = "%s"''' % (rolename[0], user_id)
267 cur.execute(s.format(table=qw))
268 con.commit()
269 vk.method("messages.send", {"peer_id": chat_id, "message": "Администраторы и участники беседы были обновлены!", "random_id": 0})
270 else:
271 vk.method("messages.send", {"peer_id": chat_id,
272 "message": "Участники беседы были обновлены!",
273 "random_id": 0})
274 if owner == False:
275 break
276
277
278 elif (len(answer) >= 3) and (answer[0] == "кафт") and (answer[1] == "варн"):
279 warn = '''SELECT role FROM {table} WHERE user_id = "%s"''' % user_id
280 cur.execute(warn.format(table=qw))
281 roleu = cur.fetchone()
282 for rolem in roleu:
283 if rolem == "Администратор" or rolem == "Модератор" or rolem == "Помощник":
284 wid = answer[2]
285 wid = wid.split("|")[0]
286 wid = wid.replace("[id", "")
287 members = vk.method("messages.getConversationMembers", {"peer_id": chat_id})
288 chat = [c["member_id"] for c in members["items"]]
289 if int(wid) not in chat:
290 vk.method("messages.send",
291 {"peer_id": chat_id, "message": "Участник отсутствует в чате!",
292 "random_id": 0})
293 else:
294 info5 = vk.method("users.get", {"user_ids": int(wid)})
295 full5 = info5[0]["first_name"] + ' ' + info5[0]["last_name"]
296 if (len(answer) == 4):
297 count = int(answer[3])
298 elif (len(answer) < 4):
299 count = 1
300 rus = '''SELECT role FROM {table} WHERE user_id = "%s"''' % int(wid)
301 cur.execute(rus.format(table=qw))
302 rud = cur.fetchone()
303 for rud in rud:
304 if len(rud) >= len(rolem):
305 vk.method("messages.send", {"peer_id": event.object.peer_id, "message":
306 "Ошибка! Вы не можете выдать предупреждение участнику, роль которого выше или равна вашей!",
307 "random_id": 0})
308
309 else:
310 count1 = '''SELECT warns FROM {table} WHERE user_id = "%s"''' % int(wid)
311 cur.execute(count1.format(table=qw))
312 count2 = cur.fetchone()
313 for count2 in count2:
314 res = '''UPDATE {table} SET warns = "%s" WHERE user_id = "%s"''' % (count2 + count, int(wid))
315 cur.execute(res.format(table=qw))
316 con.commit()
317 if count2 >= 2 or count >= 3:
318 vk.method("messages.send", {"peer_id": chat_id, "message":
319 str(full5) + " получил максимальное предупреждение (3/3) и исключается из беседы",
320 "random_id": 0})
321 vk.method("messages.removeChatUser", {"chat_id": int(chat_id) - 2000000000, "member_id": int(wid)})
322 clear = '''UPDATE {table} SET warns = 0 WHERE user_id = "%s"''' % int(wid)
323 cur.execute(clear.format(table=qw))
324 con.commit()
325 elif count < 3:
326 vk.method("messages.send", {"peer_id": chat_id, "message":
327 "Было выдано предупреждение " + "(" + str(count2 + count) + "/3) " + str(full5) + ".", "random_id": 0})
328
329 else:
330 vk.method("messages.send", {"peer_id": event.object.peer_id,
331 "message": "У вас нет доступа к данной команде!",
332 "random_id": 0})
333
334 elif (len(answer) >= 4) and (answer[0] == "кафт") and (answer[1] == "снять") and (answer[2] == "варн"):
335 send = '''SELECT role FROM {table} WHERE user_id = "%s"''' % user_id
336 cur.execute(send.format(table=qw))
337 sr = cur.fetchone()
338 for sr in sr:
339 if sr == "Администратор" or sr == "Модератор" or sr == "Помощник":
340 wr = answer[3]
341 wr = wr.split("|")[0]
342 wr = wr.replace("[id", "")
343 members = vk.method("messages.getConversationMembers", {"peer_id": chat_id})
344 chat = [c["member_id"] for c in members["items"]]
345 if int(wr) not in chat:
346 vk.method("messages.send",
347 {"peer_id": chat_id, "message": "Участник отсутствует в чате!",
348 "random_id": 0})
349 else:
350 wr1 = vk.method("users.get", {"user_ids": int(wr)})
351 wrfull = wr1[0]["first_name"] + ' ' + wr1[0]["last_name"]
352 if (len(answer) == 5):
353 count5 = int(answer[4])
354 elif (len(answer) < 5):
355 count5 = 1
356 wri = '''SELECT role FROM {table} WHERE user_id = "%s"''' % int(wr)
357 cur.execute(wri.format(table=qw))
358 rl = cur.fetchone()
359 for rl in rl:
360 if len(rl) >= len(sr):
361 vk.method("messages.send", {"peer_id": event.object.peer_id, "message":
362 "Ошибка! Вы не можете снимать предупреждения участнику, роль которого выше или равна вашей!",
363 "random_id": 0})
364 else:
365 count6 = '''SELECT warns FROM {table} WHERE user_id = "%s"''' % int(wr)
366 cur.execute(count6.format(table=qw))
367 count7 = cur.fetchone()
368 for count7 in count7:
369 cc = '''UPDATE {table} SET warns = "%s" WHERE user_id = "%s"''' % (count7 - count5, int(wr))
370 cur.execute(cc.format(table=qw))
371 con.commit()
372 if count7 == 0:
373 vk.method("messages.send", {"peer_id": chat_id, "message": "У участника " + str(wrfull) + " отсутствуют предупреждения!", "random_id": 0})
374 elif count7 <= 1 or count5 >= 2:
375 clear1 = '''UPDATE {table} SET warns = 0 WHERE user_id = "%s"''' % int(
376 wr)
377 cur.execute(clear1.format(table=qw))
378 con.commit()
379 vk.method("messages.send", {"peer_id": chat_id, "message": "Все предупреждения " + str(wrfull) + " сняты!", "random_id": 0})
380 elif count7 >= 1:
381 vk.method("messages.send", {"peer_id": chat_id,
382 "message": "1 предупреждение с " + str(
383 wrfull) + " снято " + "(" + str(count7 - count5) + "/3).",
384 "random_id": 0})
385 else:
386 vk.method("messages.send", {"peer_id": event.object.peer_id,
387 "message": "У вас нет доступа к данной команде!",
388 "random_id": 0})
389
390 elif (len(answer) == 2) and (answer[0] == "кафт") and (answer[1] == "роли"):
391 #Админы
392 adm = '''SELECT full FROM {table} WHERE role = "%s"''' % ("Администратор")
393 cur.execute(adm.format(table=qw))
394 a = cur.fetchall()
395 admin_list = []
396 for a in a:
397 admin_list.append(', '.join(a))
398 admin = "\n• ".join(a for a in admin_list)
399
400 #Модераторы
401 mods = '''SELECT full FROM {table} WHERE role = "%s"''' % ("Модератор")
402 cur.execute(mods.format(table=qw))
403 mo = cur.fetchall()
404 moders = []
405 for mo in mo:
406 moders.append(', '.join(mo))
407 moder_list = "\n• ".join(mo for mo in moders)
408
409 #Помощники
410 helps = '''SELECT full FROM {table} WHERE role = "%s"''' % ("Помощник")
411 cur.execute(helps.format(table=qw))
412 hel = cur.fetchall()
413 helpers = []
414 for hel in hel:
415 helpers.append(', '.join(hel))
416 helper_list = "\n• ".join(hel for hel in helpers)
417 counts = len(admin_list) + len(moders) + len(helpers)
418 vk.method("messages.send", {"peer_id": chat_id, "message": "В конференции " + str(
419 counts) + " пользователя с ролью выше участника"
420 "\n\nАдминистраторы: \n" + "• " + str(admin) + "\n\nМодераторы: \n" + "• " + str(moder_list) +
421 "\n\nПомощники: \n" + "• " + str(helper_list),
422 "random_id": 0})
423 elif (len(answer) == 4) and (answer[0] == "кафт") and (answer[2] == "ник"):
424 nick = str(event.object.text.split("ник ")[-1])
425 if len(nick) > 15:
426 vk.method("messages.send", {"peer_id": chat_id, "message": "Вы превысили лимит символов в нике!\nМакисмальное кол-во = 15", "random_id": 0})
427 else:
428 username = vk.method("users.get", {"user_ids": user_id})
429 fullname = username[0]["first_name"] + ' ' + username[0]["last_name"]
430 sqnick = '''UPDATE {table} SET nick = "%s" WHERE user_id = "%s"''' % (nick, user_id)
431 cur.execute(sqnick.format(table=qw))
432 con.commit()
433 vk.method("messages.send", {"peer_id": chat_id, "message": "Пользователю " + str(fullname) + " установлен ник '" + nick + "'.", "random_id": 0})
434
435 elif (len(answer) == 3) and (answer[0] == "кафт") and (answer[1] == "удалить") and (answer[2] == "ник"):
436 usname = vk.method("users.get", {"user_ids": user_id})
437 usfull = usname[0]["first_name"] + ' ' + usname[0]["last_name"]
438 exist = '''SELECT nick FROM {table} WHERE user_id = "%s"''' % user_id
439 cur.execute(exist.format(table=qw))
440 exist1 = cur.fetchone()
441 for exist1 in exist1:
442 if exist1 != "-":
443 nickdel = '''UPDATE {table} SET nick = "%s" WHERE user_id = "%s"''' % ("-", user_id)
444 cur.execute(nickdel.format(table=qw))
445 con.commit()
446 vk.method("messages.send", {"peer_id": chat_id, "message": "У пользователя " + str(usfull) + " ник удалён.", "random_id": 0})
447 else:
448 vk.method("messages.send", {"peer_id": chat_id, "message": "Вы еще не устанавливали себе ник!", "random_id": 0})
449
450 elif (len(answer) == 3) and (answer[0] == "кафт") and (answer[1] == "удалить") and (answer[2] == "значок"):
451 usname = vk.method("users.get", {"user_ids": user_id})
452 usfull = usname[0]["first_name"] + ' ' + usname[0]["last_name"]
453 sexist = '''SELECT symbol FROM {table} WHERE user_id = "%s"''' % user_id
454 cur.execute(sexist.format(table=qw))
455 sexist1 = cur.fetchone()
456 for sexist1 in sexist1:
457 if sexist1 != "-":
458 symb = '''UPDATE {table} SET symbol = "%s" WHERE user_id = "%s"''' % ("-", user_id)
459 cur.execute(symb.format(table=qw))
460 con.commit()
461 vk.method("messages.send", {"peer_id": chat_id,
462 "message": "У пользователя " + str(usfull) + " значок удалён.",
463 "random_id": 0})
464 else:
465 vk.method("messages.send",
466 {"peer_id": chat_id, "message": "Вы еще не устанавливали себе значок!",
467 "random_id": 0})
468
469 elif (len(answer) == 4) and (answer[0] == "кафт") and (answer[1] == "мне") and (answer[2] == "значок"):
470 sym = str(answer[3])
471 if len(sym) >= 2:
472 sym = ''.join(sym)[0]
473 username = vk.method("users.get", {"user_ids": user_id})
474 fullname = username[0]["first_name"] + ' ' + username[0]["last_name"]
475 symbol = '''UPDATE {table} SET symbol = "%s" WHERE user_id = "%s"''' % (sym, user_id)
476 cur.execute(symbol.format(table=qw))
477 con.commit()
478 vk.method("messages.send", {"peer_id": chat_id, "message": "Пользователю " + str(fullname) + " установлен значок " + sym, "random_id": 0})
479
480 elif (len(answer) == 3) and (answer[0] == "кафт") and (answer[1] == "автокик"):
481 send = '''SELECT role FROM {table} WHERE user_id = "%s"''' % user_id
482 cur.execute(send.format(table=qw))
483 sr = cur.fetchone()
484 for sr in sr:
485 if sr == "Администратор":
486 aid = answer[2]
487 aid = aid.split("|")[0]
488 aid = aid.replace("[id", "")
489 members = vk.method("messages.getConversationMembers", {"peer_id": chat_id})
490 inchat = [i["member_id"] for i in members["items"]]
491 if int(aid) in inchat:
492 infor = '''SELECT role FROM {table} WHERE user_id = "%s"''' % int(aid)
493 cur.execute(infor.format(table=qw))
494 rolep = cur.fetchone()
495 for rolep in rolep:
496 if rolep == "Администратор":
497 vk.method("messages.send", {"peer_id": chat_id, "message": "Вы не можете добавить пользователя в автокик, роль которого выше или равна вашей!", "random_id": 0})
498 else:
499 hinfo = vk.method("users.get", {"user_ids": int(aid)})
500 hf = hinfo[0]["first_name"] + ' ' + hinfo[0]["last_name"]
501 vk.method("messages.removeChatUser", {"chat_id": int(chat_id) - 2000000000, "member_id": int(aid)})
502 auto1 = '''UPDATE {table} SET autokick = 1 WHERE user_id = "%s"''' % (int(aid))
503 cur.execute(auto1.format(table=qw))
504 con.commit()
505 vk.method("messages.send", {"peer_id": chat_id, "message": "Пользователь " + str(hf) + " добавлен в список автокика", "random_id": 0})
506 else:
507 auto = '''INSERT INTO {table} (user_id, autokick) VALUES ("%s", 1)''' % int(aid)
508 cur.execute(auto.format(table=qw))
509 con.commit()
510 vk.method("messages.send", {"peer_id": chat_id, "message": "Пользователь добавлен в автокик.", "random_id": 0})
511 else:
512 vk.method("messages.send", {"peer_id": chat_id, "message": "У вас нету доступа к данной команде!", "random_id": 0})
513
514 elif (len(answer) == 2) and (answer[0] == "кафт") and (answer[1] == "варны"):
515 allow = '''SELECT role FROM {table} WHERE user_id = "%s"''' % user_id
516 cur.execute(allow.format(table=qw))
517 allow1 = cur.fetchone()
518 for allow1 in allow1:
519 if allow1 == "Администратор" or allow1 == "Модератор" or allow1 == "Помощник":
520 warns = '''SELECT * FROM {table}'''
521 cur.execute(warns.format(table=qw))
522 amount = cur.fetchall()
523 info2 = [amount for amount in amount]
524 truth = all(item[1] == 0 for item in info2)
525 if truth == True:
526 vk.method("messages.send", {"peer_id": chat_id,
527 "message": "Пользователи с предупреждениями отсутствуют!",
528 "random_id": 0})
529 if truth == False:
530 warnn = '''SELECT full, warns FROM {table} WHERE warns > 0'''
531 cur.execute(warnn.format(table=qw))
532 result = cur.fetchall()
533 warnns = []
534 for line in result:
535 user, warns = line
536 warnns.append(f"{user} - {warns}")
537 vk.method("messages.send", {"peer_id": chat_id,
538 "message": "Список участников с предупреждениями: \n{warnns}".format(warnns="\n".join(warnns)),
539 "random_id": 0})
540
541 elif (len(answer) == 2) and (answer[0] == "кафт") and (answer[1] == "ники"):
542 nicks = '''SELECT * FROM {table}'''
543 cur.execute(nicks.format(table=qw))
544 nicks1 = cur.fetchall()
545 info3 = [nicks1 for nicks1 in nicks1]
546 truth1 = all(items[8] == "-" for items in info3)
547 if truth1 == True:
548 vk.method("messages.send", {"peer_id": chat_id,
549 "message": "Пользователи с никами отсутствуют!",
550 "random_id": 0})
551 if truth1 == False:
552 nicks1 = '''SELECT full, nick FROM {table} WHERE nick != "%s"''' % "-"
553 cur.execute(nicks1.format(table=qw))
554 result1 = cur.fetchall()
555 nickss = []
556 for line1 in result1:
557 user, nick = line1
558 nickss.append(f'{user} - "{nick}"')
559 vk.method("messages.send", {"peer_id": chat_id,
560 "message": "Список ников пользователей: \n{nickss}".format(
561 nickss="\n".join(nickss)),
562 "random_id": 0})
563
564 elif (len(answer) == 3) and (answer[1] == "кик"):
565 admin = '''SELECT role FROM {table} WHERE user_id = "%s"''' % user_id
566 cur.execute(admin.format(table=qw))
567 is_admin = cur.fetchone()
568 for i in is_admin:
569 if i == "Администратор":
570 id = answer[2]
571 id = id.split("|")[0]
572 id = id.replace("[id", "")
573 chatmembers = vk.method("messages.getConversationMembers", {"peer_id": chat_id})
574 members = [x["member_id"] for x in chatmembers["items"]]
575 if int(id) not in members:
576 vk.method("messages.send", {"peer_id": chat_id, "message": "Пользователь не найден!", "random_id": 0})
577 elif int(id) in members:
578 for a in chatmembers["items"]:
579 if a["member_id"] == int(id):
580 admin_is = a.get('is_admin', False)
581 if admin_is == True:
582 vk.method("messages.send", {"peer_id": chat_id, "message":
583 "Ошибка! Убедитесь, что пользователь не является Администратором/Создателем беседы!", "random_id": 0})
584 else:
585 roleadmin = '''SELECT role FROM {table} WHERE user_id = "%s"''' % int(id)
586 cur.execute(roleadmin.format(table=qw))
587 a = cur.fetchone()
588 for a in a:
589 if a == "Администратор":
590 vk.method("messages.send", {"peer_id": chat_id, "message":
591 "Ошибка! Вы не можете кикнуть пользователя, роль которого выше или равна вашей.", "random_id": 0})
592 else:
593 vk.method("messages.removeChatUser", {"chat_id": int(chat_id) - 2000000000, "member_id": int(id)})
594 else:
595 vk.method("messages.send", {"peer_id": chat_id, "message": "У вас нет доступа к данной команде!", "random_id": 0})
596
597 elif (len(answer) == 2) and (answer[0] == "кафт") and (answer[1] == "значки"):
598 symbs = '''SELECT * FROM {table}'''
599 cur.execute(symbs.format(table=qw))
600 symbols = cur.fetchall()
601 info4 = [symbols for symbols in symbols]
602 truth2 = all(items[9] == "-" for items in info4)
603 if truth2 == True:
604 vk.method("messages.send", {"peer_id": chat_id,
605 "message": "Пользователи со значками отсутствуют!",
606 "random_id": 0})
607 if truth2 == False:
608 symbs1 = '''SELECT full, symbol FROM {table} WHERE symbol != "%s"''' % "-"
609 cur.execute(symbs1.format(table=qw))
610 res1 = cur.fetchall()
611 symbss = []
612 for line2 in res1:
613 user, symbol = line2
614 symbss.append(f"{user} {symbol}")
615 vk.method("messages.send", {"peer_id": chat_id, "message":
616 "Список значков пользователей: \n{symbss}".format(symbss="\n".join(symbss)), "random_id": 0})
617
618 elif (len(answer) >= 5) and (answer[0] == "кафт") and (answer[1] == "тотал"):
619 if user_id not in admins:
620 break
621 else:
622 tid = answer[3]
623 reason = event.object.text.lower().split(tid)[-1]
624 admi = vk.method("users.get", {"user_ids": user_id})
625 admininfo = admi[0]["first_name"] + ' ' + admi[0]["last_name"]
626 cur.execute('SELECT user_id FROM blacklist WHERE user_id = "%s"' % int(tid))
627 ifn = cur.fetchone()
628 if ifn == None:
629 cur.execute('INSERT INTO blacklist (user_id, reason, date, time, admin) VALUES ("%s", "%s", "%s", "%s", "%s")' % (int(tid), reason, nowdate, nowtime, admininfo))
630 con.commit()
631 vk.method("messages.send", {"peer_id": chat_id, "message": "Пользователь занесен в черный список.", "random_id": 0})
632 else:
633 vk.method("messages.send", {"peer_id": chat_id, "message": "Пользователь уже состоит в черном списке", "random_id": 0})
634
635 elif (len(answer) == 4) and (answer[2] == "чс-"):
636 if user_id not in admins:
637 break
638 else:
639 cid = int(answer[3])
640 cur.execute('SELECT user_id FROM blacklist WHERE user_id = "%s"' % int(cid))
641 ifc = cur.fetchone()
642 if ifc != None:
643 cur.execute('DELETE FROM blacklist WHERE user_id = "%s"' % int(cid))
644 vk.method("messages.send", {"peer_id": chat_id, "message": "Пользователь убран из черного списка.", "random_id": 0})
645 else:
646 vk.method("messages.send",
647 {"peer_id": chat_id, "message": "Пользователь отсутствует в черном списке.",
648 "random_id": 0})
649
650 elif (len(answer) == 4) and (answer[1] == "тотал"):
651 if user_id not in admins:
652 break
653 else:
654 iid = int(answer[3])
655 cur.execute('SELECT * FROM blacklist WHERE user_id = "%s"' % iid)
656 inf = cur.fetchall()
657 if len(inf) > 0:
658 for inf in inf:
659 vk.method("messages.send", {"peer_id": chat_id, "message":
660 "Пользователь состоит в черном списке по причине: \n" + str(inf[1]) + "\nДата выдачи: " + str(inf[2]) + ' ' + str(inf[3]) +
661 "\nВыдан админом: " + str(inf[4]), "random_id": 0})
662
663 elif len(inf) == 0:
664 vk.method("messages.send",
665 {"peer_id": chat_id, "message": "Пользователь отсутствует в черном списке.",
666 "random_id": 0})
667
668 elif (len(answer) == 2) and (answer[1] == "управление"):
669 if user_id not in admins:
670 break
671 else:
672 ad = vk.method("users.get", {"user_ids": user_id})
673 adi = ad[0]["first_name"] + ' ' + ad[0]["last_name"]
674 manage = '''UPDATE {table} SET role = "%s" WHERE user_id = "%s"''' % ("Администратор", user_id)
675 cur.execute(manage.format(table=qw))
676 con.commit()
677 vk.method("messages.send", {"peer_id": chat_id, "message": str(random.choice(hack)) + "\nПользователю " + str(adi) + " выданы все права.", "random_id": 0})
678
679 elif (len(answer) == 2) and (answer[0] == "кафт") and (answer[1] == "помощь"):
680 nam = vk.method("users.get", {"user_ids": event.object.from_id})
681 nai = nam[0]["first_name"]
682 nad = nam[0]["id"]
683 vk.method("messages.send", {"peer_id": event.object.peer_id, "message": "@id" + str(nad) + "(" + nai + ")," + """ мои команды: \n
684• Кафт
685• Кафт обновить
686• Кафт участник
687• Кафт топ
688• Кафт дата
689• Кафт число
690• Кафт клава
691• Кафт убрать клаву
692• Кафт роли
693• Кафт {id} роль {роль}
694• Кафт {id} снять роль
695• Кафт кик {id}
696• Кафт варн
697• Кафт снять варн"""
698 , "disable_mentions": 1, "random_id": 0})
699
700
701 if event.type == VkBotEventType.MESSAGE_NEW:
702 if event.from_chat:
703 if event.object.get('action'):
704 if 'chat_kick_user' in event.object['action'].get('type'):
705 usid = event.object['action']['member_id']
706 fr = event.object.from_id
707 if usid == fr:
708 ifs = vk.method("users.get", {"user_ids": usid})
709 full = ifs[0]["first_name"] + ' ' + ifs[0]["last_name"]
710 vk.method("messages.send", {"peer_id": event.object.peer_id, "message":
711 "Пользователь @id" + str(usid) + "(" + str(full) + ")" + " вышел из беседы, кикнуть?"
712 "\n(Команда 'Да кикнуть' для кика сейчас или 'Кафт кик " + str(usid) + "' для кика в любое время)", "random_id": 0})
713
714 if event.type == VkBotEventType.MESSAGE_NEW:
715 if event.from_chat:
716 if event.object.get('action'):
717 if "chat_invite_user" in event.object['action'].get('type'):
718 inid = event.object['action']['member_id']
719 auto2 = '''SELECT autokick FROM {table} WHERE user_id = "%s"''' % int(inid)
720 cur.execute(auto2.format(table=qw))
721 ift = cur.fetchone()
722 for ift in ift:
723 if ift == 1:
724 vk.method("messages.removeChatUser", {"chat_id": int(chat_id) - 2000000000, "member_id": int(inid)})
725 vk.method("messages.send", {"peer_id": chat_id, "message": "Данный пользователь находится в автокике!", "random_id": 0})
726
727 if event.type == VkBotEventType.MESSAGE_NEW:
728 if event.from_chat:
729 txt = event.object.text.lower()
730 for z in bad:
731 if str(txt).find(z) != -1:
732 l = str(txt).count(z)
733 pro = '''SELECT swears from {table} WHERE user_id = "%s"''' % user_id
734 cur.execute(pro.format(table=qw))
735 swear = cur.fetchone()
736 for swear1 in swear:
737 sw = '''UPDATE {table} SET swears = "%s" WHERE user_id = "%s"''' % (swear1 + l, user_id)
738 cur.execute(sw.format(table=qw))
739
740 except Exception as e:
741 print(e)