Commited backup

This commit is contained in:
2025-07-10 21:02:34 +03:00
parent 952c1001e3
commit da0b80823e
1310 changed files with 254133 additions and 41 deletions

526
GeekTG/FTG-Modules/rpmod.py Normal file
View File

@@ -0,0 +1,526 @@
# -*- coding: utf-8 -*-
# Module author: @trololo_1
import subprocess
try:
import emoji
except:
mod_inst = subprocess.Popen("pip install emoji", shell=True)
mod_inst.wait()
import emoji
import string
from .. import loader, utils
@loader.tds
class RPMod(loader.Module):
"""Модуль RPMod + дополнение после команды.+реплика.(указывать реплику на второй строке)"""
strings = {"name": "RPMod"}
async def client_ready(self, client, db):
self.db = db
if not self.db.get("RPMod", "exlist", False):
exlist = []
self.db.set("RPMod", "exlist", exlist)
if not self.db.get("RPMod", "status", False):
self.db.get("RPMod", "status", 1)
if not self.db.get("RPMod", "rprezjim", False):
self.db.set("RPMod", "rprezjim", 1)
if not self.db.get("RPMod", "rpnick", False):
me = await client.get_me()
self.db.set("RPMod", "rpnick", me.first_name)
if not self.db.get("RPMod", "rpcomands", False):
comands = {
"чмок": "чмокнул",
"кусь": "кусьнул",
"пиц": "радостные звуки питсы",
"поцеловать": "поцеловал",
"ррр": "злые звуки питсы",
"выебать": "выебал",
"трахнуть": "трахнул",
"выпороть": "выпорол",
"шлепнуть": "шлепнул",
"отлизать": "отлизал у",
"прижать": "прижал",
"погладить": "погладил",
"да.": "пизда",
"где.": "в пизде",
"нет.": "пидора ответ",
"бывает.": "ну это пиздец конечно на самом деле",
"мрр.": "мурчание питсы",
"ррррр.": "злая питса",
"обнять": "обнял",
}
self.db.set("RPMod", "rpcomands", comands)
if not self.db.get("RPMod", "rpemoji", False):
emojiComands = {"лизь": "👅"}
self.db.set("RPMod", "rpemoji", emojiComands)
async def dobrpcmd(self, message):
"""Используй: .dobrp (команда) / (действие) / (эмодзи) чтобы добавить команду. Можно и без эмодзи(но и второго
разделителя). Используй только одно слово в качестве команды."""
await message.edit("<code>Команда добавляется...</coode>")
args = utils.get_args_raw(message)
dict_rp = self.db.get("RPMod", "rpcomands")
dict_rp_copy = dict_rp.copy()
try:
key_rp = str(args.split("/")[0]).strip()
value_rp = str(args.split("/", maxsplit=2)[1]).strip()
lenght_args = []
for i in args.split("/"):
lenght_args.append(i)
count_emoji = 0
if len(lenght_args) >= 3:
emoji_rp = str(args.split("/", maxsplit=2)[2]).strip()
dict_emoji_rp = self.db.get("RPMod", "rpemoji")
dict_emoji_rp_copy = dict_emoji_rp.copy()
r = emoji_rp
lst = []
count_emoji = 1
for x in r:
if x in emoji.UNICODE_EMOJI["en"].keys():
lst.append(x)
if (
x.isalpha()
or x.isspace()
or x.isdigit()
or x in string.punctuation
):
await message.edit(
"<b>Были введены не только эмодзи(пробел тоже символ). </b>"
)
return
if len(lst) > 3:
await message.edit("<b>Было введено более 3 эмодзи. </b>")
return
if not emoji_rp or not emoji_rp.strip():
await message.edit(
"<b>Разделитель для эмодзи есть, а их нет? хм.</b>"
)
return
if len(lst) == 0:
await message.edit(
"<b>В 3 секции были введены не эмодзи. Если были введены эмодзи, но всё равно выходит ошибка, обратись к: </b>@trololo_1"
)
return
key_len = [len(x) for x in key_rp.split()]
if len(dict_rp) >= 70:
await message.edit("<b>Достигнут лимит рп команд.</b>")
else:
if not key_rp or not key_rp.strip():
await message.edit("<b>Вы не ввели название рп команды.</b>")
else:
if not value_rp or not value_rp.strip():
await message.edit(
"<b>Вы не ввели действие для рп команды.</b>"
)
else:
if int(len(key_len)) > 1:
await message.edit(
"<b>В качестве рп команды было введено больше одного слова.</b>"
)
else:
if key_rp == "all":
await message.edit(
"<b>Использовать '<code>all</code>' в качестве названия команды запрещено!</b>"
)
else:
if count_emoji == 1:
dict_emoji_rp_copy[key_rp] = emoji_rp
dict_rp_copy[key_rp] = value_rp
self.db.set("RPMod", "rpcomands", dict_rp_copy)
self.db.set("RPMod", "rpemoji", dict_emoji_rp_copy)
await message.edit(
f"<b>Команда '<code>{key_rp}</code>' успешно добавлена с эмодзи '{emoji_rp}'!</b>"
)
else:
dict_rp_copy[key_rp] = value_rp
self.db.set("RPMod", "rpcomands", dict_rp_copy)
await message.edit(
f"<b>Команда '<code>{key_rp}</code>' успешно добавлена!</b>"
)
except:
await message.edit(
"<b>Вы не ввели разделитель /, либо вовсе ничего не ввели.</b>"
)
async def delrpcmd(self, message):
"""Используй: .delrp (команда) чтобы удалить команду.\n Используй: .delrp all чтобы удалить все команды."""
await message.edit("Команда удаляется..")
args = utils.get_args_raw(message)
dict_rp = self.db.get("RPMod", "rpcomands")
dict_emoji_rp = self.db.get("RPMod", "rpemoji")
dict_emoji_rp_copy = dict_emoji_rp.copy()
dict_rp_copy = dict_rp.copy()
key_rp = str(args)
count = 0
if key_rp == "all":
dict_rp_copy.clear()
dict_emoji_rp_copy.clear()
self.db.set("RPMod", "rpcomands", dict_rp_copy)
self.db.set("RPMod", "rpemoji", dict_emoji_rp_copy)
await message.edit("<b>Список рп команд очищен.</b>")
return
if not key_rp or not key_rp.strip():
await message.edit("<b>Вы не ввели команду.</b>")
else:
try:
for i in dict_emoji_rp_copy:
if i == key_rp:
count = 1
break
if count == 1:
dict_rp_copy.pop(key_rp)
dict_emoji_rp_copy.pop(key_rp)
self.db.set("RPMod", "rpcomands", dict_rp_copy)
self.db.set("RPMod", "rpemoji", dict_emoji_rp_copy)
else:
dict_rp_copy.pop(key_rp)
self.db.set("RPMod", "rpcomands", dict_rp_copy)
await message.edit(
f"<b>Команда '<code>{key_rp}</code>' успешно удалена!</b>"
)
except KeyError:
await message.edit("<b>Команда не найдена.</b>")
async def rpmodcmd(self, message):
"""Используй: .rpmod чтобы включить/выключить RP режим.\nИспользуй: .rpmod toggle чтобы сменить режим на отправку или изменение смс."""
status = self.db.get("RPMod", "status")
rezjim = self.db.get("RPMod", "rprezjim")
args = utils.get_args_raw(message)
if not args:
if status == 1:
self.db.set("RPMod", "status", 2)
await message.edit("<b>RP Режим <code>выключен</code></b>")
else:
self.db.set("RPMod", "status", 1)
await message.edit("<b>RP Режим <code>включен</code></b>")
elif args.strip() == "toggle":
if rezjim == 1:
self.db.set("RPMod", "rprezjim", 2)
await message.edit(
"<b>RP Режим изменён на <code>отправку смс.</code></b>"
)
else:
self.db.set("RPMod", "rprezjim", 1)
await message.edit(
"<b>RP Режим изменён на <code>изменение смс.</code></b>"
)
else:
await message.edit("Что то не так.. ")
async def rplistcmd(self, message):
"""Используй: .rplist чтобы посмотреть список рп команд."""
com = self.db.get("RPMod", "rpcomands")
emojies = self.db.get("RPMod", "rpemoji")
l = len(com)
listComands = f"У вас рп команд: <b>{l}</b> из <b>70</b>. "
if len(com) == 0:
await message.edit("<b>Увы, у вас нету рп команд. :(</b>")
return
for i in com:
if i in emojies.keys():
listComands += f"\n• <b><code>{i}</code> - {com[i]} |</b> {emojies[i]}"
else:
listComands += f"\n• <b><code>{i}</code> - {com[i]}</b>"
await message.edit(listComands)
async def rpnickcmd(self, message):
"Используй: .rpnick (ник) чтобы сменить свой ник. Если без аргументов, то вернётся ник из тг."
r = utils.get_args_raw(message).strip()
if not r:
me = await message.client.get_me()
self.db.set("RPMod", "rpnick", me.first_name)
await message.edit(f"<b>Ник изменён на {me.first_name}</b>")
return
lst = []
nick = ""
for x in r:
if x in emoji.UNICODE_EMOJI["en"].keys():
lst.append(x)
if x not in emoji.UNICODE_EMOJI["en"].keys():
nick += x
if len(lst) > 3:
await message.edit(f"<b>Ник '{r}' содержит более трёх эмодзи.</b>")
else:
if len(lst) + len(nick) >= 45:
await message.edit(
"<b>Ник превышает лимит в 45 символов(возможно эмодзи имеют длину более 1 символа).</b>"
)
else:
self.db.set("RPMod", "rpnick", r)
await message.edit(f"<b>Ник изменён на {r}</b>")
async def rpbackcmd(self, message):
"Используй: .rpback чтобы выгрузить список своих рп команд.\nИспользуй .rpback / (список чьих то команд) / (список чьих то эмодзи) чтобы добавить себе список команд. можно без эмодзи, но первый разделитель обязателен."
args = utils.get_args_raw(message).strip()
comand = self.db.get("RPMod", "rpcomands")
emojies = self.db.get("RPMod", "rpemoji")
if not args:
if len(comand) == 0:
await message.edit("<b>У вас нет рп команд.</b>")
elif len(emojies) == 0:
await message.edit(f"<code>.rpback / {comand} </code>")
else:
await message.edit(f"<code>.rpback / {comand} / {emojies}</code>")
if args:
try:
comands = str(args.split("/")[1]).strip()
lenght_args = []
for i in args.split("/"):
lenght_args.append(i)
count_emoji = 0
if len(lenght_args) >= 3:
emoji_rp = str(args.split("/")[2]).strip()
count_emoji = 1
emj = eval(emoji_rp)
if not dict == type(emj):
await message.edit(
"<b>Синтаксис секции эмодзи не является корректным(словарём в питоне).</b>"
)
else:
if len(emj) == 0:
await message.edit("<b>Словарь эмодзи пуст.</b>")
return
for x in emj.values():
lst = []
if x in emoji.UNICODE_EMOJI["en"].keys():
lst.append(x)
if not x or not x.strip():
await message.edit(
"<b>Пустое значение в словаре для эмодзи? Да ты гений.</b>"
)
return
if (
x.isalpha()
or x.isspace()
or x.isdigit()
or x in string.punctuation
):
await message.edit(
"<b>Были введены не только эмодзи в словаре для эмодзи(пробел тоже символ). </b>"
)
return
if len(lst) > 3:
await message.edit(
"<b>Было введено более 3 эмодзи в словаре для эмодзи. </b>"
)
return
for x in emj:
key_len = [len(l) for l in x.split()]
if int(len(key_len)) > 1:
await message.edit(
"<b>В качестве ключа было введено больше одного слова в словаре эмодзи.</b>"
)
return
if not x or not x.strip():
await message.edit(
"<b>Пустой ключ в словаре для эмодзи? Да ты умничка.</b>"
)
return
com = eval(comands)
if dict == type(com):
if len(com) == 0:
await message.edit("<b>Словарь команд пуст.</b>")
return
for x in com:
key_len_cmd = [len(l) for l in x.split()]
if int(len(key_len_cmd)) > 1:
await message.edit(
"<b>В качестве ключа было введено больше одного слова в словаре команд.</b>"
)
return
if not x or not x.strip():
await message.edit(
"<b>Пустой ключ в словаре для команд? Мой хороший, так дела не делаются.</b>"
)
return
for x in com.values():
if not x or not x.strip():
await message.edit(
"<b>Пустое значение в словаре для команд? Не сегодня, мой золотой.</b>"
)
return
if count_emoji == 1:
comand_copy = comand.copy()
emojies_copy = emojies.copy()
merge_emj = {**emojies_copy, **emj}
merge_com = {**comand_copy, **com}
self.db.set("RPMod", "rpcomands", merge_com)
self.db.set("RPMod", "rpemoji", merge_emj)
await message.edit(
"<b>Успешное обновлени словаря команд и эмодзи! Вы можете просмотреть их благодаря команде '<code>.rplist</code>'.</b>"
)
else:
comand_copy = comand.copy()
merge_com = {**comand_copy, **com}
self.db.set("RPMod", "rpcomands", merge_com)
await message.edit(
"<b>Успешное обновлени словаря команд! Вы можете просмотреть его благодаря команде '<code>.rplist</code>'.</b>"
)
else:
await message.edit(
"<b>Синтаксис секции команд не является корректным(словарём в питоне).</b>"
)
except:
await message.edit(
"<b>Что то не так с разделителями /.\nЛибо не корректный словарь.(либо вообще пусто)</b>"
)
async def rpblockcmd(self, message):
"""Используй: .rpblock чтобы добавить/удалить исключение(использовать в нужном чате).\nИспользуй: .rpblock list чтобы просмотреть чаты в исключениях.\nИспользуй .rpblock (ид) чтобы удалить чат из исключений."""
args = utils.get_args_raw(message)
ex = self.db.get("RPMod", "exlist")
ex_copy = ex.copy()
if not args:
a = await message.client.get_entity(message.to_id)
if a.id in ex_copy:
ex_copy.remove(a.id)
self.db.set("RPMod", "exlist", ex_copy)
try:
name = a.title
except:
name = a.first_name
await message.edit(
f"<i>Чат <b><u>{name}</u></b>(<code>{a.id}</code>) удален из исключений.</i>"
)
else:
ex_copy.append(a.id)
self.db.set("RPMod", "exlist", ex_copy)
try:
name = a.title
except:
name = a.first_name
await message.edit(
f"<i>Чат <b><u>{name}</u></b>(<code>{a.id}</code>) добавлен в исключения.</i>"
)
elif args.isdigit():
args = args.strip()
args = int(args)
if args in ex_copy:
a = await message.client.get_entity(args)
ex_copy.remove(args)
self.db.set("RPMod", "exlist", ex_copy)
try:
name = a.title
except:
name = a.first_name
await message.edit(
f"<i>Чат <b><u>{name}</u></b>(<code>{args}</code>) удален из исключений.</i>"
)
else:
await message.edit("<b>Неверный ид.</b>")
elif args == "list":
ex_len = len(ex_copy)
if ex_len == 0:
await message.edit("<b>Список исключений пуст.</b>")
return
sms = f"<i> Чаты, которые есть в исключениях({ex_len}):</i>"
for i in ex_copy:
a = await message.client.get_entity(i)
try:
name = a.title
except:
name = a.first_name
sms += f"\n• <b><u>{name}</u></b>(<code>{i}</code>)"
await message.edit(sms)
else:
await message.edit("Что то пошло не так..")
async def watcher(self, message):
try:
status = self.db.get("RPMod", "status")
comand = self.db.get("RPMod", "rpcomands")
rezjim = self.db.get("RPMod", "rprezjim")
emojies = self.db.get("RPMod", "rpemoji")
nick = self.db.get("RPMod", "rpnick")
ex = self.db.get("RPMod", "exlist")
args = message.text.lower()
chat_rp = await message.client.get_entity(message.to_id)
lines = []
detail = []
round = 1
for line in args.splitlines():
lines.append(line)
for i in lines[0].split(" ", maxsplit=1):
if round == 1:
detail.append(i)
else:
detail.append(" " + i)
round += 1
if len(detail) < 2:
detail.append(" ")
reply = await message.get_reply_message()
user = await message.client.get_entity(reply.sender_id)
me = await message.client.get_me()
if status == 1:
if chat_rp.id not in ex:
if message.sender_id == me.id:
for i in comand:
if detail[0] == i:
if detail[0] in emojies.keys():
if len(lines) < 2:
if rezjim == 1:
await message.edit(
f"{emojies[detail[0]]} | <a href=tg://user?id={me.id}>{nick}</a> {comand[detail[0]]} <a href=tg://user?id={user.id}>{user.first_name}</a>"
+ detail[1]
)
else:
await message.respond(
f"{emojies[detail[0]]} | <a href=tg://user?id={me.id}>{nick}</a> {comand[detail[0]]} <a href=tg://user?id={user.id}>{user.first_name}</a>"
+ detail[1]
)
else:
if rezjim == 1:
await message.edit(
f"{emojies[detail[0]]} | <a href=tg://user?id={me.id}>{nick}</a> {comand[detail[0]]} <a href=tg://user?id={user.id}>{user.first_name}</a>"
+ detail[1]
+ f"\n<b>С репликой: </b>{lines[1]}"
)
else:
await message.respond(
f"{emojies[detail[0]]} | <a href=tg://user?id={me.id}>{nick}</a> {comand[detail[0]]} <a href=tg://user?id={user.id}>{user.first_name}</a>"
+ detail[1]
+ f"\n<b>С репликой: </b>{lines[1]}"
)
else:
if len(lines) < 2:
if rezjim == 1:
await message.edit(
f"<a href=tg://user?id={me.id}>{nick}</a> {comand[detail[0]]} <a href=tg://user?id={user.id}>{user.first_name}</a>"
+ detail[1]
)
else:
await message.respond(
f"<a href=tg://user?id={me.id}>{nick}</a> {comand[detail[0]]} <a href=tg://user?id={user.id}>{user.first_name}</a>"
+ detail[1]
)
else:
if rezjim == 1:
await message.edit(
f"<a href=tg://user?id={me.id}>{nick}</a> {comand[detail[0]]} <a href=tg://user?id={user.id}>{user.first_name}</a>"
+ detail[1]
+ f"\n<b>С репликой: </b>{lines[1]}"
)
else:
await message.respond(
f"<a href=tg://user?id={me.id}>{nick}</a> {comand[detail[0]]} <a href=tg://user?id={user.id}>{user.first_name}</a>"
+ detail[1]
+ f"\n<b>С репликой: </b>{lines[1]}"
)
except:
pass