[NEW] nekospeak v0.1 alpha

nekospeak - модуль для преобразования вашей речи в речь неко.
This commit is contained in:
homayk228
2025-03-05 15:19:20 +07:00
parent 2dd00f478e
commit 8e6c775f73

91
nekospeak.py Normal file
View File

@@ -0,0 +1,91 @@
from hikkatl.types import Message
from .. import loader, utils
import random
@loader.tds
class NekoSpeakModule(loader.Module):
"""Модуль для стилизации речи под неко"""
strings = {"name": "NekoSpeak", "converted": "{text}"}
strings_ru = {"converted": "{text}"}
def __init__(self):
self.active = False
self.pm_enabled = False
self.public_enabled = True
def neko_speak(self, text):
# Замена "н" на "ня" в некоторых словах
words = text.split()
new_words = []
for word in words:
if word.lower().startswith("н") and len(word) > 1:
word = "ня" + word[1:]
new_words.append(word)
text = " ".join(new_words)
# Замена стандартных фраз
replacements = {
"нет": "нят",
"ничего": "нячего",
"но": "ня",
"что": "ня?",
"ура": "ня!",
"о нет": "о-ня!"
}
for key, value in replacements.items():
text = text.replace(key, value)
# Добавление "мяу" и концовок
if random.random() < 0.3: # 30% шанс добавить "мяу"
text += " мяу~"
elif random.random() < 0.2: # 20% шанс добавить "-ня"
text += "-ня"
return text
@loader.command(ru_doc="Стилизовать текст под неко")
async def neko(self, message: Message):
"""Стилизовать текст под неко"""
text = utils.get_args_raw(message)
if not text:
return await utils.answer(message, "Ня? Введи текст!")
converted_text = self.neko_speak(text)
await utils.answer(message, self.strings("converted").format(text=converted_text))
@loader.command(ru_doc="Включить автоматическое преобразование речи в неко-стиль")
async def nekospeak(self, message: Message):
"""Включить автоматическое преобразование речи в неко-стиль"""
self.active = True
await utils.answer(message, "Ня~ Теперь все твои сообщения будут преобразовываться!")
@loader.command(ru_doc="Отключить автоматическое преобразование речи в неко-стиль")
async def nekospeakstop(self, message: Message):
"""Отключить автоматическое преобразование речи в неко-стиль"""
self.active = False
await utils.answer(message, "Ня... Теперь сообщения не будут изменяться.")
@loader.command(ru_doc="Переключить преобразование сообщений в ЛС")
async def nekospeakpm(self, message: Message):
"""Переключить преобразование сообщений в ЛС"""
self.pm_enabled = not self.pm_enabled
status = "включено" if self.pm_enabled else "выключено"
await utils.answer(message, f"Ня! Преобразование в ЛС теперь {status}.")
@loader.command(ru_doc="Переключить преобразование сообщений в публичных чатах")
async def nekospeakpublic(self, message: Message):
"""Переключить преобразование сообщений в публичных чатах"""
self.public_enabled = not self.public_enabled
status = "включено" if self.public_enabled else "выключено"
await utils.answer(message, f"Ня! Преобразование в публичных чатах теперь {status}.")
async def watcher(self, message: Message):
if not self.active:
return
if message.out:
if message.is_private and not self.pm_enabled:
return
if not message.is_private and not self.public_enabled:
return
new_text = self.neko_speak(message.text)
await message.edit(new_text)