From 168a8352f875faf812368d968acfb638b00b6c24 Mon Sep 17 00:00:00 2001 From: andrewkydev1 Date: Mon, 24 May 2021 10:17:42 +0300 Subject: [PATCH] =?UTF-8?q?=D0=BE=D1=81=D0=BD=D0=BE=D0=B2=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 1 + bot_group.py | 192 ++++++++++++++++ bot_user.py | 209 ++++++++++++++++++ config.py | 24 ++ database/db.db | Bin 0 -> 36864 bytes modules/__init__.py | 1 + modules/__pycache__/__init__.cpython-38.pyc | Bin 0 -> 136 bytes .../__pycache__/sqlite_methods.cpython-38.pyc | Bin 0 -> 3646 bytes modules/sqlite_methods.py | 111 ++++++++++ variants/message_variants.txt | 113 ++++++++++ variants/photo_variants.txt | 129 +++++++++++ 11 files changed, 780 insertions(+) create mode 100644 README.md create mode 100644 bot_group.py create mode 100644 bot_user.py create mode 100644 config.py create mode 100644 database/db.db create mode 100644 modules/__init__.py create mode 100644 modules/__pycache__/__init__.cpython-38.pyc create mode 100644 modules/__pycache__/sqlite_methods.cpython-38.pyc create mode 100644 modules/sqlite_methods.py create mode 100644 variants/message_variants.txt create mode 100644 variants/photo_variants.txt diff --git a/README.md b/README.md new file mode 100644 index 0000000..a8ba051 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# hater diff --git a/bot_group.py b/bot_group.py new file mode 100644 index 0000000..5cbdf50 --- /dev/null +++ b/bot_group.py @@ -0,0 +1,192 @@ +import time +import vk_api +import random +import config as c +from threading import Thread +from modules import sqlite_methods as m +from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType + +vk = vk_api.VkApi(token=c.g_token) +vk._auth_token() +vk.get_api() +longpoll = VkBotLongPoll(vk, c.group_id) + + +def get_variants(path): + with open(path, "r", encoding="utf-8") as f: + return f.readlines() + + +def send_msg(peer_id: int, message: str, attachment: str = ""): + return vk.method("messages.send", {**locals(), "random_id": 0}) + + +message_user_ids = [] +message_users = m.get_all_message_users() +for user in message_users: + message_user_ids.append(user[0]) + +photo_user_ids = [] +photo_users = m.get_all_photo_users() +for user in photo_users: + photo_user_ids.append(user[0]) + +settings_result = [] +settings = m.get_settings(2) +for value in settings: + settings_result.append(value) + +MESSAGE_VARIANTS = get_variants("variants/message_variants.txt") +random.shuffle(MESSAGE_VARIANTS) +PHOTO_VARIANTS = get_variants("variants/photo_variants.txt") +random.shuffle(PHOTO_VARIANTS) + + +def hate(): + message_index = 0 + photo_index = 0 + while True: + try: + for event in longpoll.listen(): + if event.type == VkBotEventType.MESSAGE_NEW: + + if event.obj.from_id in message_user_ids: + if message_index < len(MESSAGE_VARIANTS): + time.sleep(settings_result[1]) + send_msg(event.obj.peer_id, f'{MESSAGE_VARIANTS[message_index]}') + message_index += 1 + else: + message_index = 0 + random.shuffle(MESSAGE_VARIANTS) + time.sleep(settings_result[1]) + send_msg(event.obj.peer_id, f'{MESSAGE_VARIANTS[message_index]}') + message_index += 1 + + if event.obj.from_id in photo_user_ids: + if photo_index < len(PHOTO_VARIANTS): + time.sleep(settings_result[2]) + send_msg(event.obj.peer_id, '', f'{PHOTO_VARIANTS[photo_index]}') + photo_index += 1 + else: + photo_index = 0 + random.shuffle(PHOTO_VARIANTS) + time.sleep(settings_result[2]) + send_msg(event.obj.peer_id, '', f'{PHOTO_VARIANTS[photo_index]}') + photo_index += 1 + except Exception as e: + print(repr(e)) + + +def commands(): + while True: + try: + for event in longpoll.listen(): + if event.type == VkBotEventType.MESSAGE_NEW: + + split_text = event.object.text.split(' ') + + if split_text[0] in c.hate: + if len(split_text) == 2 and split_text[1] in c.hate_message_prefix: + if event.obj.from_id in c.g_admins: + if 'reply_message' in event.object: + user = event.obj.reply_message['from_id'] + if user != -c.group_id: + if not m.is_message_user_hatelisted(user): + message_user_ids.append(user) + m.insert_message_hatelist(user) + send_msg(event.obj.peer_id, '✅ Пользователь добавлен в текстовый хейт лист') + else: + send_msg(event.obj.peer_id, '❎ Пользователь уже находится в текстовом хейт листе') + else: + send_msg(event.obj.peer_id, '❎ Невозможно добавить бота в хейт лист') + else: + send_msg(event.obj.peer_id, '❎ Пользователь не указан') + else: + choice = random.choice(c.ERRORS) + send_msg(event.obj.peer_id, f'{choice}') + + elif len(split_text) == 2 and split_text[1] in c.hate_photo_prefix: + if event.obj.from_id in c.g_admins: + if 'reply_message' in event.object: + user = event.obj.reply_message['from_id'] + if user != -c.group_id: + if not m.is_photo_user_hatelisted(user): + photo_user_ids.append(user) + m.insert_photo_hatelist(user) + send_msg(event.obj.peer_id, '✅ Пользователь добавлен в фото хейт лист') + else: + send_msg(event.obj.peer_id, '❎ Пользователь уже находится в фото хейт листе') + else: + send_msg(event.obj.peer_id, '❎ Невозможно добавить бота в хейт лист') + else: + send_msg(event.obj.peer_id, '❎ Пользователь не указан') + else: + choice = random.choice(c.ERRORS) + send_msg(event.obj.peer_id, f'{choice}') + else: + send_msg(event.obj.peer_id, '❎ Неверный формат команды') + + if split_text[0] in c.unhate: + if len(split_text) == 2 and split_text[1] in c.hate_message_prefix: + if event.obj.from_id in c.g_admins: + if 'reply_message' in event.object: + user = event.obj.reply_message['from_id'] + if m.is_message_user_hatelisted(user): + message_user_ids.remove(user) + m.delete_message_hatelist(user) + send_msg(event.obj.peer_id, '✅ Пользователь удален из текстового хейт листа') + else: + send_msg(event.obj.peer_id, '❎ Пользователь отсутствует в текстовом хейт листе') + else: + send_msg(event.obj.peer_id, '❎ Пользователь не указан') + else: + choice = random.choice(c.ERRORS) + send_msg(event.obj.peer_id, f'{choice}') + + elif len(split_text) == 2 and split_text[1] in c.hate_photo_prefix: + if event.obj.from_id in c.g_admins: + if 'reply_message' in event.object: + user = event.obj.reply_message['from_id'] + if m.is_photo_user_hatelisted(user): + photo_user_ids.remove(user) + m.delete_photo_hatelist(user) + send_msg(event.obj.peer_id, '✅ Пользователь удален из фото хейт листа') + else: + send_msg(event.obj.peer_id, '❎ Пользователь отсутствует в фото хейт листе') + else: + send_msg(event.obj.peer_id, '❎ Пользователь не указан') + else: + choice = random.choice(c.ERRORS) + send_msg(event.obj.peer_id, f'{choice}') + else: + send_msg(event.obj.peer_id, '❎ Неверный формат команды') + + if split_text[0] in c.cooldown: + if len(split_text) == 3 and split_text[1] in c.hate_message_prefix and split_text[2].isnumeric(): + if event.obj.from_id in c.g_admins: + settings_result.pop(1) + settings_result.insert(1, int(split_text[2])) + m.set_message_cooldown(int(split_text[2]), 2) + send_msg(event.obj.peer_id, f'✅ Задержка текста изменена на {split_text[2]} секунд') + else: + choice = random.choice(c.ERRORS) + send_msg(event.obj.peer_id, f'{choice}') + + elif len(split_text) == 3 and split_text[1] in c.hate_photo_prefix and split_text[2].isnumeric(): + if event.obj.from_id in c.g_admins: + settings_result.pop(2) + settings_result.insert(2, int(split_text[2])) + m.set_photo_cooldown(int(split_text[2]), 2) + send_msg(event.obj.peer_id, f'✅ Задержка фото изменена на {split_text[2]} секунд') + else: + choice = random.choice(c.ERRORS) + send_msg(event.obj.peer_id, f'{choice}') + else: + send_msg(event.obj.peer_id, '❎ Неверный формат команды') + except Exception as e: + print(repr(e)) + + +if __name__ == '__main__': + Thread(target=hate, args=[]).start() + Thread(target=commands, args=[]).start() diff --git a/bot_user.py b/bot_user.py new file mode 100644 index 0000000..4207ef9 --- /dev/null +++ b/bot_user.py @@ -0,0 +1,209 @@ +import time +import vk_api +import random +import config as c +from modules import sqlite_methods as m +from threading import Thread +from vk_api.longpoll import VkLongPoll, VkEventType + +vk_session = vk_api.VkApi(token=c.u_token) +longpoll = VkLongPoll(vk_session) +vk = vk_session.get_api() + + +def typing(peer_id: int): + return vk.messages.setActivity(**locals(), type='typing') + + +def get_variants(path): + with open(path, "r", encoding="utf-8") as f: + return f.readlines() + + +def send_msg_reply(reply_to: int, peer_id: int, message: str, attachment: str = ""): + return vk.messages.send(**locals(), random_id=0) + + +def send_msg(peer_id: int, message: str, attachment: str = ""): + return vk.messages.send(**locals(), random_id=0) + + +message_user_ids = [] +message_users = m.get_all_message_users() +for user in message_users: + message_user_ids.append(user[0]) + +photo_user_ids = [] +photo_users = m.get_all_photo_users() +for user in photo_users: + photo_user_ids.append(user[0]) + +settings_result = [] +settings = m.get_settings(1) +for value in settings: + settings_result.append(value) + +MESSAGE_VARIANTS = get_variants("variants/message_variants.txt") +random.shuffle(MESSAGE_VARIANTS) +PHOTO_VARIANTS = get_variants("variants/photo_variants.txt") +random.shuffle(PHOTO_VARIANTS) + + +def hate(): + message_index = 0 + photo_index = 0 + while True: + try: + for event in longpoll.listen(): + if event.type == VkEventType.MESSAGE_NEW: + + if event.user_id in message_user_ids: + if not event.from_me: + if c.TYPING == 1: + typing(event.peer_id) + if message_index < len(MESSAGE_VARIANTS): + time.sleep(settings_result[1]) + send_msg_reply(event.message_id, event.peer_id, f'{MESSAGE_VARIANTS[message_index]}') + message_index += 1 + else: + message_index = 0 + random.shuffle(MESSAGE_VARIANTS) + time.sleep(settings_result[1]) + send_msg_reply(event.message_id, event.peer_id, f'{MESSAGE_VARIANTS[message_index]}') + message_index += 1 + + if event.user_id in photo_user_ids: + if not event.from_me: + if photo_index < len(PHOTO_VARIANTS): + time.sleep(settings_result[2]) + send_msg_reply(event.message_id, event.peer_id, '', f'{PHOTO_VARIANTS[photo_index]}') + photo_index += 1 + else: + photo_index = 0 + random.shuffle(PHOTO_VARIANTS) + time.sleep(settings_result[2]) + send_msg_reply(event.message_id, event.peer_id, '', f'{PHOTO_VARIANTS[photo_index]}') + photo_index += 1 + + except Exception as e: + print(repr(e)) + + +def commands(): + while True: + try: + for event in longpoll.listen(): + if event.type == VkEventType.MESSAGE_NEW: + + text = event.text + split_text = event.text.split(' ') + + if split_text[0] in c.hate: + if len(split_text) == 2 and split_text[1] in c.hate_message_prefix: + if event.user_id in c.u_admins: + msg = vk.messages.getById(message_ids=event.message_id)['items'][0] + if 'reply_message' in msg: + user = msg['reply_message']['from_id'] + if user != c.bot_id: + if not m.is_message_user_hatelisted(user): + message_user_ids.append(user) + m.insert_message_hatelist(user) + send_msg(event.peer_id, '✅ Пользователь добавлен в текстовый хейт лист') + else: + send_msg(event.peer_id, '❎ Пользователь уже находится в текстовом хейт листе') + else: + send_msg(event.peer_id, '❎ Невозможно добавить бота в хейт лист') + else: + send_msg(event.peer_id, '❎ Пользователь не указан') + else: + choice = random.choice(c.ERRORS) + send_msg(event.peer_id, f'{choice}') + + elif len(split_text) == 2 and split_text[1] in c.hate_photo_prefix: + if event.user_id in c.u_admins: + msg = vk.messages.getById(message_ids=event.message_id)['items'][0] + if 'reply_message' in msg: + user = msg['reply_message']['from_id'] + if user != c.bot_id: + if not m.is_photo_user_hatelisted(user): + photo_user_ids.append(user) + m.insert_photo_hatelist(user) + send_msg(event.peer_id, '✅ Пользователь добавлен в фото хейт лист') + else: + send_msg(event.peer_id, '❎ Пользователь уже находится в фото хейт листе') + else: + send_msg(event.peer_id, '❎ Невозможно добавить бота в хейт лист') + else: + send_msg(event.peer_id, '❎ Пользователь не указан') + else: + choice = random.choice(c.ERRORS) + send_msg(event.peer_id, f'{choice}') + else: + send_msg(event.peer_id, '❎ Неверный формат команды') + + if split_text[0] in c.unhate: + if len(split_text) == 2 and split_text[1] in c.hate_message_prefix: + if event.user_id in c.u_admins: + msg = vk.messages.getById(message_ids=event.message_id)['items'][0] + if 'reply_message' in msg: + user = msg['reply_message']['from_id'] + if m.is_message_user_hatelisted(user): + message_user_ids.remove(user) + m.delete_message_hatelist(user) + send_msg(event.peer_id, '✅ Пользователь удален из текстового хейт листа') + else: + send_msg(event.peer_id, '❎ Пользователь отсутствует в текстовом хейт листе') + else: + send_msg(event.peer_id, '❎ Пользователь не указан') + else: + choice = random.choice(c.ERRORS) + send_msg(event.peer_id, f'{choice}') + + elif len(split_text) == 2 and split_text[1] in c.hate_photo_prefix: + if event.user_id in c.u_admins: + msg = vk.messages.getById(message_ids=event.message_id)['items'][0] + if 'reply_message' in msg: + user = msg['reply_message']['from_id'] + if m.is_photo_user_hatelisted(user): + photo_user_ids.remove(user) + m.delete_photo_hatelist(user) + send_msg(event.peer_id, '✅ Пользователь удален из фото хейт листа') + else: + send_msg(event.peer_id, '❎ Пользователь отсутствует в фото хейт листе') + else: + send_msg(event.peer_id, '❎ Пользователь не указан') + else: + choice = random.choice(c.ERRORS) + send_msg(event.peer_id, f'{choice}') + else: + send_msg(event.peer_id, '❎ Неверный формат команды') + + if split_text[0] in c.cooldown: + if len(split_text) == 3 and split_text[1] in c.hate_message_prefix and split_text[2].isnumeric(): + if event.user_id in c.u_admins: + settings_result.pop(1) + settings_result.insert(1, int(split_text[2])) + m.set_message_cooldown(int(split_text[2]), 1) + send_msg(event.peer_id, f'✅ Задержка текста изменена на {split_text[2]} секунд') + else: + choice = random.choice(c.ERRORS) + send_msg(event.peer_id, f'{choice}') + + elif len(split_text) == 3 and split_text[1] in c.hate_photo_prefix and split_text[2].isnumeric(): + if event.user_id in c.u_admins: + settings_result.pop(2) + settings_result.insert(2, int(split_text[2])) + m.set_photo_cooldown(int(split_text[2]), 1) + send_msg(event.peer_id, f'✅ Задержка фото изменена на {split_text[2]} секунд') + else: + choice = random.choice(c.ERRORS) + send_msg(event.peer_id, f'{choice}') + else: + send_msg(event.peer_id, '❎ Неверный формат команды') + except Exception as e: + print(repr(e)) + + +if __name__ == '__main__': + Thread(target=hate, args=[]).start() + Thread(target=commands, args=[]).start() diff --git a/config.py b/config.py new file mode 100644 index 0000000..1d08ab5 --- /dev/null +++ b/config.py @@ -0,0 +1,24 @@ +# для страницы +u_admins = [] +bot_id = +u_token = '' + +# для группы +g_admins = [] +group_id = +g_token = '' + +# комнады +hate = ['+хейт', '+hate'] +unhate = ['-хейт', '-hate'] +cooldown = ['!кд', '!cd'] + +# префиксы +hate_message_prefix = ['текст', 'text'] +hate_photo_prefix = ['фото', 'photo'] + +# варианты ошибок доступа +ERRORS = "Иди отсюда нахуй, безправный", "А залупой по голове не хочешь?", "Хуя че вздумал", "Это так не работает", "1к и я подумаю" + +# 1 - "набирает сообщение" включено, 0 - выключено +TYPING = 1 diff --git a/database/db.db b/database/db.db new file mode 100644 index 0000000000000000000000000000000000000000..ea7f35e8fcf665469ed25fad2881ecb8c158b5fd GIT binary patch literal 36864 zcmeI)!Asjv9Ki9Hq>W9s^tn^mK?oJ*gs~#xVY_TjiU=y`^fDNs&de3mI1||}JM^;4 z{s3XuUG_i77!3BW$cBeGgi+j(y_dGGrRZ*g_51Ld_maLezfaP`OWw=lh1psf1<&K{ zjcOW@w%~pa^5~XQvb1f+aw_T@HTP-;=^GlWK%3`oQKeMo0xue!@ zL`hOzi^6AdyuKR0+C2S?-njK5PUGH9?x^ZjrORbQ)HYY6*Xl4-KQ659q;XacdyXp{ z>sjTLuiO6A(3!hv9lC1SDmhQ`wm&>X??H?p0#O|sp0Rm|=$=-T$5uaKXF`g61MIakkL8}NsQjC$+Lwqk6@dST~LUDFe` z?avIKbsjnh!?BLafNELLzleLL?az&z)w~NR9P6rDo@#E&Lm>}kLw?gcBO!nQ0tg_0 z00IagfB*srAb`Ln7RYWD*ru7g@#Xsi+cI;vZr=aw%7*Iy?+f`u?yCg}0R#|0009IL zKmY**5I_I{1TLF^>f7r9{A!edl{0j2-_ix${nz99v-<)1`M)07FOTJs8U{c@009IL zKmY**5I_I{1Q0*~fxZxM^JdN{2=y=LWVZlxRC+FdPX6kP00{yC1Q0*~0R#|0009IL zKmY**ltA9fTZUnpmgP97&;J`d{paF9009ILKmY**5I_I{1Q0-=j|AEe{j;U31JmRG z8)~uu2>}EUKmY**5I_I{1Q0*~0R;L)p!r4s6-;yfzdTm&|2q)!Kpyo;fP{en0tg_0 z00IagfB*srAb`MC7O>TXe?9C!oBvsf4 literal 0 HcmV?d00001 diff --git a/modules/__init__.py b/modules/__init__.py new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/modules/__init__.py @@ -0,0 +1 @@ + diff --git a/modules/__pycache__/__init__.cpython-38.pyc b/modules/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..12f727c9df1caf7dbac9cc0122b8dd87fe8de246 GIT binary patch literal 136 zcmWIL<>g`kf@S@y5*UH>V-N=!fCL?YxR?b9*HHXMY>M;CHlGfDWy57#rpB_nR%Hd@$q^EmA5!-Afk34V?F~h0{}%Z B9qa%A literal 0 HcmV?d00001 diff --git a/modules/__pycache__/sqlite_methods.cpython-38.pyc b/modules/__pycache__/sqlite_methods.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4eb558b2fde708b44afc25eaed3025d48d3a84b4 GIT binary patch literal 3646 zcmd5;OK%)S5bmDYm)G{j@%xd$05*7|*hWgiLlBe@FLEF_!H*=e5N18yu~+Qwn4VdM zL~Ds8=7y9b2ZFFUAT1{oIV9NFzhU+|S5Eu@Uvi>qUY=R+Iv12MtLfRQ?w+ass_Ltn zZEZ~wxPHC=+m|CLLjFb}c*!7~gIoUv21XdolR3gEmzeZGVls=YM&@KrS@Z#AF%}0Y z;z|kD1X7eGS@SBHi}`z6SS#q`?y3|!0#d@2+SpN$npivQfIUgrLs=($r;BxizS)+0 zK<;IIAh*D5KYVw99RsPA(P@%C{twtmCexA?FX>#&=a>}}+$f2nN^!=$BJga2`vTnh z6&MV%Mj2hF_lH+#nXXCeWJM}VYci9{q?@c$NjY-0 z`;?jdRRj!)Og>GqtdU*F>U@kXjIxE>?@ebeWiHGps#Yo*!>)O0<)f*~pDG2e>)Ay< zk6K;1Hj$aiDDDd7tTMy|T3?A-asBIj&fur4xT+P4Ts5qiS`xY@tT_LMt0jZaC2nv- zUDAr&imG`{=aq<%V6zp$9Trs)5WSQ)DnuLs{nJxpOIm@CWs6Mkn`2i$8JWl$T#S6E z8Dj;FmGWF4b3Qs>;Kq{1^wH&8R)0}(rtq!q72yLMWnxfq>Ca5?H znl!a-3Hbs;%=g805PV;pZs-e&zM#a2GPz8CBrNiid=GpS@=MJ1i~VE-d=i}$Xx#15 zi<8rtsTt+sUZ$(PguBZKB?ZR-mSz%4AzP`4hbCa*mE&eD-?2u6g)C+6t!Gw-h;r6dkY>tE4 zk4ZTxgrJP(BlQ-@`D6%D7$eu;1a@#I-pcyb%Vu8?rc8q#mRn% zpzmt|=vw5)JgoK+u=(XxSQ$8elD0b;dJOcTD0v<<>7?Ylhj8Qal4fX!Goy&&;hXCq z&ULf%$yM>0K5GpZ;8f)4zTA%OUvHKzH zi{!HG^hITQLkjjrht^|x&8f$d^9_c`h4nHHv?M&@FStxg?AA20DsEyl(*Xc!v6sHGxdNEn_3U{ zH{nnRVP7?O0rK4jkc-z4RAeYX8C#}jpxllqhfVnccGbi9b$lsxFm2f6PrxESmlRFG?=4H=~8t zS%93j+iSbe6WGNFtmOi0nLs)h$ZA5t0V7f%WCC9lpcb2C?Cvu0zSH=BfN1L2SS94P NWD0(XfQ`7c>VW$*w1 literal 0 HcmV?d00001 diff --git a/modules/sqlite_methods.py b/modules/sqlite_methods.py new file mode 100644 index 0000000..05d3968 --- /dev/null +++ b/modules/sqlite_methods.py @@ -0,0 +1,111 @@ +import sqlite3 + + +def is_message_user_hatelisted(user_id: int) -> bool: + with sqlite3.connect("database/db.db") as conn: + c = conn.cursor() + c.execute("SELECT count(user_id) FROM message_users WHERE user_id = %d" % user_id) + result = c.fetchone()[0] + c.close() + conn.close() + return result > 0 + + +def insert_message_hatelist(user_id: int): + with sqlite3.connect("database/db.db") as conn: + c = conn.cursor() + c.execute("INSERT INTO message_users(user_id) VALUES (%d)" % user_id) + conn.commit() + print(f"Пользователь {user_id} добавлен в хейтлист") + c.close() + conn.close() + + +def delete_message_hatelist(user_id: int): + with sqlite3.connect("database/db.db") as conn: + c = conn.cursor() + c.execute("DELETE FROM message_users WHERE user_id=%d" % user_id) + conn.commit() + print(f"Пользователь {user_id} удален из хейтлиста") + c.close() + conn.close() + + +def get_all_message_users(): + with sqlite3.connect("database/db.db") as conn: + c = conn.cursor() + c.execute("SELECT * FROM message_users") + result = c.fetchall() + c.close() + conn.close() + return result + + +def is_photo_user_hatelisted(user_id: int) -> bool: + with sqlite3.connect("database/db.db") as conn: + c = conn.cursor() + c.execute("SELECT count(user_id) FROM photo_users WHERE user_id = %d" % user_id) + result = c.fetchone()[0] + c.close() + conn.close() + return result > 0 + + +def insert_photo_hatelist(user_id: int): + with sqlite3.connect("database/db.db") as conn: + c = conn.cursor() + c.execute("INSERT INTO photo_users(user_id) VALUES (%d)" % user_id) + conn.commit() + print(f"Пользователь {user_id} добавлен в хейтлист") + c.close() + conn.close() + + +def delete_photo_hatelist(user_id: int): + with sqlite3.connect("database/db.db") as conn: + c = conn.cursor() + c.execute("DELETE FROM photo_users WHERE user_id=%d" % user_id) + conn.commit() + print(f"Пользователь {user_id} удален из хейтлиста") + c.close() + conn.close() + + +def get_all_photo_users(): + with sqlite3.connect("database/db.db") as conn: + c = conn.cursor() + c.execute("SELECT * FROM photo_users") + result = c.fetchall() + c.close() + conn.close() + return result + + +def set_message_cooldown(message_cooldown: int, type_id: int): + with sqlite3.connect("database/db.db") as conn: + c = conn.cursor() + c.execute("UPDATE settings SET message_cooldown = %d WHERE id = %d" % (message_cooldown, type_id)) + conn.commit() + print(f"Задержка текста изменена на {message_cooldown} секунд") + c.close() + conn.close() + + +def set_photo_cooldown(photo_cooldown: int, type_id: int): + with sqlite3.connect("database/db.db") as conn: + c = conn.cursor() + c.execute("UPDATE settings SET photo_cooldown = %d WHERE id = %d" % (photo_cooldown, type_id)) + conn.commit() + print(f"Задержка фото изменена на {photo_cooldown} секунд") + c.close() + conn.close() + + +def get_settings(type_id: int): + with sqlite3.connect("database/db.db") as conn: + c = conn.cursor() + c.execute("SELECT * FROM settings WHERE id = %d" % type_id) + result = c.fetchone() + c.close() + conn.close() + return result diff --git a/variants/message_variants.txt b/variants/message_variants.txt new file mode 100644 index 0000000..a764e08 --- /dev/null +++ b/variants/message_variants.txt @@ -0,0 +1,113 @@ +Я твой рот ебал +Пошел нахуй +Соси мой пайтонский член +Маме своей так скажи +Ты быканул или мне показалось +Не пиши мне, педик +Ясно гей +Пидорас ебаный +Хуй из пасти вытащи и потом говори +Я вертел тебя на своем цифрововм хуе +Ну и хули ты высрал +Тебе уебать или дать пососать +Нихуя ты умный +Хорошо сосешь +А почему рот в говне +Хуя ты сказанул +От такой речи мне аж захотелось въебать тебе +Ну и что ты мне сделаешь +Пососи ок +Помойся, воняешь +Нихуя ты заглотнул +Готовь очко +Сын шлюхи +Срал я на тебя, хуебланатый ебланат +Уткнись утырок +Вижу тебе понравилось как я тебя ебу +Лох ебаный +Иди мамке поплачься +В школе расскажешь +Маме привет +Шароеб ебаный +Я твой рот ебал +На, хуй соси и не скули, пока я твою мать не начал ебать +Че ты на мой хуй садишься как муха на говно +Сука, ты заебал мне яйца носом щекотать, соси аккуратно +Прикол, твоя мать шлюха обоссаная +Ты хули такой токсик, отчим в детстве выебал? +Оккупировал твое очко +Ты че там кони двинул, сын пидораса +Ты че заикаться то начал, хуеглот +Мамку твою ебал, что на это скажешь? +Ты на кого выебываешься, фиксик ебаный +Вхахахава, нихуя ты сказанул, чехол для хуя +От тебя говном воняет +От таких слов даже твой батя в гробу перевернулся +Ну как там с деньгами, еблан? +Нихуя тебе пердак разорвало +Чет твой батя не постарался, сливаешься как говно +Маму ебал +Все ясно, автор пидорас +Расширил твое очко до размеров созвездия Гидры +В палату быстро, долбоеб +А когда я тебя ебал ты другое орал +Как уебу тебе залупой по лбу +Че ты высрал, подзалупник +Поешь говна +10 iq ответ +Завали ебало, уёбище безмозглое, сука я бы тебя закопал +Хватит ныть как дешевая шлюха при виде огромного члена, твои выпуки читать все равно никто не будет +Молодец, а теперь отсоси так же, только с заглотом +Девочка слитая, иди поплачься бате в хуй +Ебало оффни, подзалупный творог +Сказал ты, сглотнув сперму своего бати +Единственное,что отличает тебя от остальных маленьких хуеглотов, это твое оригинальное имя. Передай своим родителям, что они достаточно творческие хуеплеты. +Я тебе тут ебучку в моче ополаскиваю, нравится? +Ебашу тебя хуем по лбу +Обкончал тебя и твою дохлую мамашу +Че ты мне сделаешь, сын портовой шлюхи? +гандон пашол нахуй гандон секс газонокосилка +Я найду тваю мамку, надену ей пакет на голову и изнасилую потом закопаю и раскопаю, и опять изнасилую потом её начнут жестко трах собаки, а твой папа будет это снимать +дебил у тя мать сгорела и я не про плату +Почему ты такая дура сегодня? Хотя я думаю это типично для тебя. +Я видел людей, как ты, но тогда я должен был заплатить за билет! +Я знаю, вы не так глупы, как выглядите. Такое невозможно! +Я знаю, что вы сделали сами себя. Это хорошо, что вы признаете свою вину! +Я знаю, вы родились глупым, но почему у вас рецидив? +Мне даже не нравятся те люди, которых вы пытаетесь копировать. +Я не могу вспомнить ваше имя и, пожалуйста, не помогайте мне в этом! +Я могу выгнать из вас обезьяну, но это будет очень дорого для вас стоить! +Я не знаю, что делает вас глупым, но это действительно работает. +Я не знаю, кто вы, но лучше бы вас не было, я уверен, все согласятся со мной. +Я не хочу, чтобы вы подставляли другую щеку, это просто уродливо. +Я не могу говорить с вами прямо сейчас, скажите мне, где вы будете находиться через лет 10? +Привет! Я человек! Что вы? +Я думаю, вы бы не хотели, чувствовать себя так, как вы выглядите! +Не пытайтесь ничего найти у себя в голове, она же пустая +Как ты сюда попал? Неужели кто-то оставил клетку открытой? +Почему ты здесь? Я думал, что зоопарк закрывается на ночь! +Да вы просто шаблон для построения идиота. +Он настолько короткий, что когда идет дождь, он всегда узнает об этом последним. +Вы являетесь живым доказательством того, что человек может жить без мозгов! +В книге «Кто есть кто» вас следует искать как Что Это? +Да вы просто чудо комик. Если смешно, это чудо! +Когда, наконец стемнеет, вы наверняка будете выглядеть лучше! +Он задумался – это что-то новенькое. +Вы человек земли, плохо, что не самая лучшая ее часть. +Любое сходство между вами и человеком является чисто случайным! +Вы всегда так глупы, или сегодня особый случай? +Как аутсайдер, что вы думаете о человеческой расе? +Я хотел бы вам ударить в зубы, но почему я должен улучшать ваш внешний вид? +По крайней мере, есть одна положительная вещь, в вашем теле. Оно не такое страшное, как ваше лицо! +Мозг еще не все. А в вашем случае он ничего! +Осторожнее, не позволяйте мозгу влезть вам в голову!08. Вы мне нравитесь. Говорят, у меня отвратительный вкус, но я вас люблю. +Ваши родители когда-нибудь попросили вас, убежать из дома? +Если бы я меня было такое лицо, как у вас. Я бы подал в суд на своих родителей! +Не огорчайтесь. У многих людей тоже нет таланта! +Не обижайтесь, но у вас, что, работа распространять невежество? +Продолжайте говорить, когда-нибудь вам все-таки удастся сказать что-нибудь умное! +Вы все еще любите природу, несмотря на то, что она сделала с вами? +Я так не думаю, может у вас растяжение мозга! +Стипендиаты как вы не растут на деревьях, они там колеблются. +Он имеет механический ум. Это плохо для него, он часто забывает поворачиваться к ветру спиной. +Его разум как стальная ловушка, которая всегда захлопывается при попытке найти ответ! diff --git a/variants/photo_variants.txt b/variants/photo_variants.txt new file mode 100644 index 0000000..079ed8f --- /dev/null +++ b/variants/photo_variants.txt @@ -0,0 +1,129 @@ +photo-198847189_457239149 +photo-198847189_457239148 +photo-198847189_457239147 +photo-198847189_457239146 +photo-198847189_457239145 +photo-198847189_457239144 +photo-198847189_457239143 +photo-198847189_457239142 +photo-198847189_457239141 +photo-198847189_457239140 +photo-198847189_457239139 +photo-198847189_457239138 +photo-198847189_457239137 +photo-198847189_457239136 +photo-198847189_457239135 +photo-198847189_457239134 +photo-198847189_457239133 +photo-198847189_457239132 +photo-198847189_457239131 +photo-198847189_457239130 +photo-198847189_457239129 +photo-198847189_457239128 +photo-198847189_457239127 +photo-198847189_457239126 +photo-198847189_457239125 +photo-198847189_457239124 +photo-198847189_457239123 +photo-198847189_457239122 +photo-198847189_457239121 +photo-198847189_457239120 +photo-198847189_457239119 +photo-198847189_457239118 +photo-198847189_457239117 +photo-198847189_457239116 +photo-198847189_457239115 +photo-198847189_457239114 +photo-198847189_457239113 +photo-198847189_457239112 +photo-198847189_457239111 +photo-198847189_457239110 +photo-198847189_457239109 +photo-198847189_457239108 +photo-198847189_457239107 +photo-198847189_457239106 +photo-198847189_457239105 +photo-198847189_457239104 +photo-198847189_457239103 +photo-198847189_457239102 +photo-198847189_457239101 +photo-198847189_457239100 +photo-198847189_457239099 +photo-198847189_457239098 +photo-198847189_457239097 +photo-198847189_457239096 +photo-198847189_457239095 +photo-198847189_457239094 +photo-198847189_457239093 +photo-198847189_457239092 +photo-198847189_457239091 +photo-198847189_457239090 +photo-198847189_457239089 +photo-198847189_457239088 +photo-198847189_457239087 +photo-198847189_457239086 +photo-198847189_457239085 +photo-198847189_457239084 +photo-198847189_457239083 +photo-198847189_457239081 +photo-198847189_457239080 +photo-198847189_457239079 +photo-198847189_457239078 +photo-198847189_457239077 +photo-198847189_457239076 +photo-198847189_457239075 +photo-198847189_457239074 +photo-198847189_457239073 +photo-198847189_457239072 +photo-198847189_457239071 +photo-198847189_457239070 +photo-198847189_457239069 +photo-198847189_457239068 +photo-198847189_457239067 +photo-198847189_457239066 +photo-198847189_457239065 +photo-198847189_457239064 +photo-198847189_457239063 +photo-198847189_457239062 +photo-198847189_457239061 +photo-198847189_457239060 +photo-198847189_457239059 +photo-198847189_457239058 +photo-198847189_457239057 +photo-198847189_457239056 +photo-198847189_457239055 +photo-198847189_457239054 +photo-198847189_457239053 +photo-198847189_457239052 +photo-198847189_457239051 +photo-198847189_457239050 +photo-198847189_457239049 +photo-198847189_457239048 +photo-198847189_457239047 +photo-198847189_457239046 +photo-198847189_457239045 +photo-198847189_457239044 +photo-198847189_457239043 +photo-198847189_457239042 +photo-198847189_457239041 +photo-198847189_457239040 +photo-198847189_457239039 +photo498281739_457246586 +photo498281739_457246585 +photo-198847189_457239038 +photo-198847189_457239037 +photo-198847189_457239036 +photo-198847189_457239035 +photo-198847189_457239034 +photo-198847189_457239033 +photo-198847189_457239031 +photo-198847189_457239030 +photo-198847189_457239027 +photo-198847189_457239025 +photo-198847189_457239024 +photo-198847189_457239023 +photo-198847189_457239021 +photo-198847189_457239019 +photo-198847189_457239018 +photo-198847189_457239017 +photo498281739_457246584