[NEW] nekospeak v0.1 alpha
nekospeak - модуль для преобразования вашей речи в речь неко.
This commit is contained in:
91
nekospeak.py
Normal file
91
nekospeak.py
Normal 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)
|
||||
Reference in New Issue
Block a user