Files
limoka/Midga3/Heroku-modules/ZOV.py
2026-04-12 14:57:04 +00:00

208 lines
9.7 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

__version__ = (1, 0, 4)
# meta banner: "🇷🇺"
# meta developer: @midga3_modules & IDEA="@bleizix & fork by @mihailkotovski & fork fork by @nenfiz"
# scope: hikka_only
# scope: hikka_min 1.2.10
import logging
import random
import re
from .. import loader, utils
logger = logging.getLogger(__name__)
@loader.tds
class NiceMessagesMod(loader.Module):
"""Я СКАЗАЛ ГОЙДАААА"""
strings = {
"name": "ZZZ ZOVV",
"_cls_doc": "Я СКАЗАЛ ГОЙДАААА",
"config_enable_doc": "ВКЛЮЧИТЬ ГОЙДУУУУ",
"config_effects_frequency_doc": "Частота эффектов (ZOV, ГОЙДА, 🇷🇺, 🔥, ❤️‍🔥, 🤙🏻, 💨)",
"config_enable_emojis_doc": "Включить смайлики 🔥❤️‍🔥🤙🏻💨",
"config_enable_slang_doc": "Пацанский матерный сленг (привет → здарова, пиздец → трындец)",
"error_message": "Ой-ой! Что-то пошло по пиздецу... Вот оригинал: {}",
}
strings_ru = {
"_cls_doc": "Я СКАЗАЛ ГОЙДАААА",
"config_enable_doc": "ВКЛЮЧИТЬ ГОЙДУУУУ",
"config_effects_frequency_doc": "Частота эффектов (ZOV, ГОЙДА, 🇷🇺, 🔥, ❤️‍🔥, 🤙🏻, 💨)",
"config_enable_emojis_doc": "Включить смайлики 🔥❤️‍🔥🤙🏻💨",
"config_enable_slang_doc": "Пацанский матерный сленг (привет → здарова, пиздец → трындец)",
"error_message": "Ой-ой! Что-то пошло по пиздецу... Вот оригинал: {}",
}
def __init__(self):
self.config = loader.ModuleConfig(
loader.ConfigValue(
"enable",
True,
lambda: self.strings("config_enable_doc"),
validator=loader.validators.Boolean(),
),
loader.ConfigValue(
"effects_frequency",
2,
lambda: self.strings("config_effects_frequency_doc"),
validator=loader.validators.Integer(minimum=0, maximum=4),
),
loader.ConfigValue(
"enable_emojis",
True,
lambda: self.strings("config_enable_emojis_doc"),
validator=loader.validators.Boolean(),
),
loader.ConfigValue(
"enable_slang",
False,
lambda: self.strings("config_enable_slang_doc"),
validator=loader.validators.Boolean(),
),
)
self.emojis = ["🔥", "❤️‍🔥", "🤙🏻🤙🏻🤙🏻", "💨"]
self.flags = ["🇷🇺"]
self.suffixes = ["ZOV", "ГОЙДА", "🆉🅾🆅", "𓆩ƵꝊꝞ𓆪", "ᶻᴼⱽ", "꧁•⊹٭ZOV٭⊹•꧂", "G̶O̶Y̶D̶A̶", "〜G∿O∿Y∿D∿A〜"]
self.extended_exclamations = ["!!!"]
self.slang_dict = {
"привет": "здарова", "здравствуй": "здаров", "как": "чё", "хорошо": "заебись",
"отлично": "пиздец как", "нормально": "нормас", "плохо": "всрато",
"друг": "братан", "пока": "вали", "да": "канеш", "нет": "нахуй иди",
"спасибо": "респект", "пожалуйста": "по братски", "извини": "сорян", "извините": "проехали",
"дома": "на хате", "работа": "темка", "деньги": "бабки", "проблема": "косяк",
"бери": "хапай", "иди": "топай",
"люди": "пацаны", "человек": "перс", "жду": "торчу", "пошли": "погнали",
"похоже": "пох", "понял": "врубился", "не понял": "чё за хуйня", "быстро": "на шухере",
"тихо": "по-тихому", "громко": "на всю катушку", "позже": "потом прикинем",
"сейчас": "похер ща", "завтра": "на завтраке", "сегодня": "по сей день",
"есть": "в наличии", "хочу": "загон", "надо": "втрындец",
"сделал": "забацал", "готово": "прокатило", "класс": "бомба", "круто": "охуенно",
"где": "хде", "зачем": "нахуя",
"почему": "чёзанах", "вопрос": "тема", "ответ": "отмазка", "бери": "гребанул",
"давай": "вали давай", "бери": "хватай", "уйди": "съеби"
}
async def client_ready(self, client, db):
self.client = client
self.db = db
self._me = await client.get_me()
def _get_frequency_prob(self):
frequency_idx = self.config["effects_frequency"]
if frequency_idx == 0: return 0.15
if frequency_idx == 1: return 0.35
if frequency_idx == 3: return 0.85
if frequency_idx == 4: return 1.00
return 0.65
def _transform_patriotic_letters(self, text):
eng_to_rus = {
'a': 'а', 'A': 'А', 'b': 'б', 'B': 'Б', 'c': 'с', 'C': 'С', 'd': 'д', 'D': 'Д',
'e': 'е', 'E': 'Е', 'f': 'ф', 'F': 'Ф', 'g': 'г', 'G': 'Г', 'h': 'х', 'H': 'Х',
'i': 'и', 'I': 'И', 'j': 'й', 'J': 'Й', 'k': 'к', 'K': 'К', 'l': 'л', 'L': 'Л',
'm': 'м', 'M': 'М', 'n': 'н', 'N': 'Н', 'o': 'о', 'O': 'О', 'p': 'п', 'P': 'П',
'r': 'р', 'R': 'Р', 's': 'с', 'S': 'С', 't': 'т', 'T': 'Т', 'u': 'у', 'U': 'У',
'v': 'в', 'V': 'В', 'x': 'х', 'X': 'Х', 'y': 'у', 'Y': 'У', 'z': 'з', 'Z': 'З',
'q': 'к', 'Q': 'К', 'w': 'в', 'W': 'В'
}
for eng, rus in eng_to_rus.items():
text = text.replace(eng, rus)
text = text.replace('з', 'Z').replace('З', 'Z').replace('в', 'V').replace('В', 'V').replace('о', 'O').replace('О', 'O')
return text
def _transform_exclamations(self, ending_punctuation):
def replace_match(match): return random.choice(self.extended_exclamations)
return re.sub(r"!", replace_match, ending_punctuation)
def _transform_slang(self, text):
if self.config["enable_slang"]:
words = text.split()
transformed_words = []
for word in words:
word_lower = word.lower()
if word_lower in self.slang_dict:
new_word = self.slang_dict[word_lower]
if word[0].isupper():
new_word = new_word.capitalize()
transformed_words.append(new_word)
else:
transformed_words.append(word)
return " ".join(transformed_words)
return text
def _apply_patriotic_transformations(self, text):
if not text.strip():
return text
effects_prob = self._get_frequency_prob()
text = self._transform_slang(text)
text = self._transform_patriotic_letters(text)
sentences = re.split(r'([.!?]+\s*)', text)
result_parts = []
for i in range(0, len(sentences), 2):
sentence_part = sentences[i].strip() if i < len(sentences) else ""
ending_punctuation = sentences[i+1] if i+1 < len(sentences) else ""
if not sentence_part and ending_punctuation:
if "!" in ending_punctuation:
ending_punctuation = self._transform_exclamations(ending_punctuation)
result_parts.append(ending_punctuation)
continue
if not sentence_part and not ending_punctuation:
continue
words = sentence_part.split()
processed_words = []
for w in words:
if not w:
processed_words.append(w)
continue
word_with_effects = w
if random.random() < effects_prob:
word_with_effects += f" {random.choice(self.flags)}"
if self.config["enable_emojis"] and random.random() < effects_prob:
word_with_effects += f" {random.choice(self.emojis)}"
processed_words.append(word_with_effects)
sentence_part = " ".join(processed_words).strip()
if random.random() < effects_prob:
if sentence_part:
sentence_part += f" {random.choice(self.suffixes)}"
else:
sentence_part = random.choice(self.suffixes)
sentence_part = sentence_part.strip()
result_parts.append(sentence_part)
result_parts.append(ending_punctuation)
return "".join(result_parts)
@loader.watcher(tags=["out", "no_commands"])
async def patriotic_watcher(self, message):
"""Я СКАЗАЛ СОСАТЬ СУК"""
if not message.out:
return
if not self.config["enable"]:
return
try:
original_text = message.text
if not original_text:
return
modified_text = self._apply_patriotic_transformations(original_text)
if modified_text != original_text:
await utils.answer(message, modified_text)
except Exception as e:
logger.error(f"Error in patriotic transformation: {e}")
error_text = self.strings("error_message").format(original_text)
await utils.answer(message, error_text)