основа
This commit is contained in:
192
bot_group.py
Normal file
192
bot_group.py
Normal file
@@ -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()
|
||||||
209
bot_user.py
Normal file
209
bot_user.py
Normal file
@@ -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()
|
||||||
24
config.py
Normal file
24
config.py
Normal file
@@ -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
|
||||||
BIN
database/db.db
Normal file
BIN
database/db.db
Normal file
Binary file not shown.
1
modules/__init__.py
Normal file
1
modules/__init__.py
Normal file
@@ -0,0 +1 @@
|
|||||||
|
|
||||||
BIN
modules/__pycache__/__init__.cpython-38.pyc
Normal file
BIN
modules/__pycache__/__init__.cpython-38.pyc
Normal file
Binary file not shown.
BIN
modules/__pycache__/sqlite_methods.cpython-38.pyc
Normal file
BIN
modules/__pycache__/sqlite_methods.cpython-38.pyc
Normal file
Binary file not shown.
111
modules/sqlite_methods.py
Normal file
111
modules/sqlite_methods.py
Normal file
@@ -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
|
||||||
113
variants/message_variants.txt
Normal file
113
variants/message_variants.txt
Normal file
@@ -0,0 +1,113 @@
|
|||||||
|
Я твой рот ебал
|
||||||
|
Пошел нахуй
|
||||||
|
Соси мой пайтонский член
|
||||||
|
Маме своей так скажи
|
||||||
|
Ты быканул или мне показалось
|
||||||
|
Не пиши мне, педик
|
||||||
|
Ясно гей
|
||||||
|
Пидорас ебаный
|
||||||
|
Хуй из пасти вытащи и потом говори
|
||||||
|
Я вертел тебя на своем цифрововм хуе
|
||||||
|
Ну и хули ты высрал
|
||||||
|
Тебе уебать или дать пососать
|
||||||
|
Нихуя ты умный
|
||||||
|
Хорошо сосешь
|
||||||
|
А почему рот в говне
|
||||||
|
Хуя ты сказанул
|
||||||
|
От такой речи мне аж захотелось въебать тебе
|
||||||
|
Ну и что ты мне сделаешь
|
||||||
|
Пососи ок
|
||||||
|
Помойся, воняешь
|
||||||
|
Нихуя ты заглотнул
|
||||||
|
Готовь очко
|
||||||
|
Сын шлюхи
|
||||||
|
Срал я на тебя, хуебланатый ебланат
|
||||||
|
Уткнись утырок
|
||||||
|
Вижу тебе понравилось как я тебя ебу
|
||||||
|
Лох ебаный
|
||||||
|
Иди мамке поплачься
|
||||||
|
В школе расскажешь
|
||||||
|
Маме привет
|
||||||
|
Шароеб ебаный
|
||||||
|
Я твой рот ебал
|
||||||
|
На, хуй соси и не скули, пока я твою мать не начал ебать
|
||||||
|
Че ты на мой хуй садишься как муха на говно
|
||||||
|
Сука, ты заебал мне яйца носом щекотать, соси аккуратно
|
||||||
|
Прикол, твоя мать шлюха обоссаная
|
||||||
|
Ты хули такой токсик, отчим в детстве выебал?
|
||||||
|
Оккупировал твое очко
|
||||||
|
Ты че там кони двинул, сын пидораса
|
||||||
|
Ты че заикаться то начал, хуеглот
|
||||||
|
Мамку твою ебал, что на это скажешь?
|
||||||
|
Ты на кого выебываешься, фиксик ебаный
|
||||||
|
Вхахахава, нихуя ты сказанул, чехол для хуя
|
||||||
|
От тебя говном воняет
|
||||||
|
От таких слов даже твой батя в гробу перевернулся
|
||||||
|
Ну как там с деньгами, еблан?
|
||||||
|
Нихуя тебе пердак разорвало
|
||||||
|
Чет твой батя не постарался, сливаешься как говно
|
||||||
|
Маму ебал
|
||||||
|
Все ясно, автор пидорас
|
||||||
|
Расширил твое очко до размеров созвездия Гидры
|
||||||
|
В палату быстро, долбоеб
|
||||||
|
А когда я тебя ебал ты другое орал
|
||||||
|
Как уебу тебе залупой по лбу
|
||||||
|
Че ты высрал, подзалупник
|
||||||
|
Поешь говна
|
||||||
|
10 iq ответ
|
||||||
|
Завали ебало, уёбище безмозглое, сука я бы тебя закопал
|
||||||
|
Хватит ныть как дешевая шлюха при виде огромного члена, твои выпуки читать все равно никто не будет
|
||||||
|
Молодец, а теперь отсоси так же, только с заглотом
|
||||||
|
Девочка слитая, иди поплачься бате в хуй
|
||||||
|
Ебало оффни, подзалупный творог
|
||||||
|
Сказал ты, сглотнув сперму своего бати
|
||||||
|
Единственное,что отличает тебя от остальных маленьких хуеглотов, это твое оригинальное имя. Передай своим родителям, что они достаточно творческие хуеплеты.
|
||||||
|
Я тебе тут ебучку в моче ополаскиваю, нравится?
|
||||||
|
Ебашу тебя хуем по лбу
|
||||||
|
Обкончал тебя и твою дохлую мамашу
|
||||||
|
Че ты мне сделаешь, сын портовой шлюхи?
|
||||||
|
гандон пашол нахуй гандон секс газонокосилка
|
||||||
|
Я найду тваю мамку, надену ей пакет на голову и изнасилую потом закопаю и раскопаю, и опять изнасилую потом её начнут жестко трах собаки, а твой папа будет это снимать
|
||||||
|
дебил у тя мать сгорела и я не про плату
|
||||||
|
Почему ты такая дура сегодня? Хотя я думаю это типично для тебя.
|
||||||
|
Я видел людей, как ты, но тогда я должен был заплатить за билет!
|
||||||
|
Я знаю, вы не так глупы, как выглядите. Такое невозможно!
|
||||||
|
Я знаю, что вы сделали сами себя. Это хорошо, что вы признаете свою вину!
|
||||||
|
Я знаю, вы родились глупым, но почему у вас рецидив?
|
||||||
|
Мне даже не нравятся те люди, которых вы пытаетесь копировать.
|
||||||
|
Я не могу вспомнить ваше имя и, пожалуйста, не помогайте мне в этом!
|
||||||
|
Я могу выгнать из вас обезьяну, но это будет очень дорого для вас стоить!
|
||||||
|
Я не знаю, что делает вас глупым, но это действительно работает.
|
||||||
|
Я не знаю, кто вы, но лучше бы вас не было, я уверен, все согласятся со мной.
|
||||||
|
Я не хочу, чтобы вы подставляли другую щеку, это просто уродливо.
|
||||||
|
Я не могу говорить с вами прямо сейчас, скажите мне, где вы будете находиться через лет 10?
|
||||||
|
Привет! Я человек! Что вы?
|
||||||
|
Я думаю, вы бы не хотели, чувствовать себя так, как вы выглядите!
|
||||||
|
Не пытайтесь ничего найти у себя в голове, она же пустая
|
||||||
|
Как ты сюда попал? Неужели кто-то оставил клетку открытой?
|
||||||
|
Почему ты здесь? Я думал, что зоопарк закрывается на ночь!
|
||||||
|
Да вы просто шаблон для построения идиота.
|
||||||
|
Он настолько короткий, что когда идет дождь, он всегда узнает об этом последним.
|
||||||
|
Вы являетесь живым доказательством того, что человек может жить без мозгов!
|
||||||
|
В книге «Кто есть кто» вас следует искать как Что Это?
|
||||||
|
Да вы просто чудо комик. Если смешно, это чудо!
|
||||||
|
Когда, наконец стемнеет, вы наверняка будете выглядеть лучше!
|
||||||
|
Он задумался – это что-то новенькое.
|
||||||
|
Вы человек земли, плохо, что не самая лучшая ее часть.
|
||||||
|
Любое сходство между вами и человеком является чисто случайным!
|
||||||
|
Вы всегда так глупы, или сегодня особый случай?
|
||||||
|
Как аутсайдер, что вы думаете о человеческой расе?
|
||||||
|
Я хотел бы вам ударить в зубы, но почему я должен улучшать ваш внешний вид?
|
||||||
|
По крайней мере, есть одна положительная вещь, в вашем теле. Оно не такое страшное, как ваше лицо!
|
||||||
|
Мозг еще не все. А в вашем случае он ничего!
|
||||||
|
Осторожнее, не позволяйте мозгу влезть вам в голову!08. Вы мне нравитесь. Говорят, у меня отвратительный вкус, но я вас люблю.
|
||||||
|
Ваши родители когда-нибудь попросили вас, убежать из дома?
|
||||||
|
Если бы я меня было такое лицо, как у вас. Я бы подал в суд на своих родителей!
|
||||||
|
Не огорчайтесь. У многих людей тоже нет таланта!
|
||||||
|
Не обижайтесь, но у вас, что, работа распространять невежество?
|
||||||
|
Продолжайте говорить, когда-нибудь вам все-таки удастся сказать что-нибудь умное!
|
||||||
|
Вы все еще любите природу, несмотря на то, что она сделала с вами?
|
||||||
|
Я так не думаю, может у вас растяжение мозга!
|
||||||
|
Стипендиаты как вы не растут на деревьях, они там колеблются.
|
||||||
|
Он имеет механический ум. Это плохо для него, он часто забывает поворачиваться к ветру спиной.
|
||||||
|
Его разум как стальная ловушка, которая всегда захлопывается при попытке найти ответ!
|
||||||
129
variants/photo_variants.txt
Normal file
129
variants/photo_variants.txt
Normal file
@@ -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
|
||||||
Reference in New Issue
Block a user