основа
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