# * _ __ __ _ _
# * / \ _ _ _ __ ___ _ __ __ _| \/ | ___ __| |_ _| | ___ ___
# * / _ \| | | | '__/ _ \| '__/ _` | |\/| |/ _ \ / _` | | | | |/ _ \/ __|
# * / ___ \ |_| | | | (_) | | | (_| | | | | (_) | (_| | |_| | | __/\__ \
# * /_/ \_\__,_|_| \___/|_| \__,_|_| |_|\___/ \__,_|\__,_|_|\___||___/
# *
# * © Copyright 2024
# *
# * https://t.me/AuroraModules
# *
# * 🔒 Code is licensed under GNU AGPLv3
# * 🌐 https://www.gnu.org/licenses/agpl-3.0.html
# * ⛔️ You CANNOT edit this file without direct permission from the author.
# * ⛔️ You CANNOT distribute this file if you have modified it without the direct permission of the author.
# Name: BanWord
# Author: dend1yya
# Commands:
# .bwadd | .bword | .bwlist | .bwordoff | .bwon | .bwdel | .bwoff
# scope: hikka_only
# meta developer: @AuroraModules
# meta pic: https://i.postimg.cc/Hx3Zm8rB/logo.png
# meta banner: https://te.legra.ph/file/926b74bc3235fb03433ea.jpg
version = (1, 0, 0)
from .. import loader, utils
from datetime import timedelta
@loader.tds
class BanWordMod(loader.Module):
"""Модуль для управления запрещёнными словами в чате."""
strings = {
"name": "BanWord",
"word_added": "📄 Banword successfully added: {}",
"kick": "👤 | User @{message.sender.username} used a banned word and was kicked. 🛡\n🥰 | Protected by AuroraModules",
"mute": "👤 | User @{message.sender.username} used a banned word and was muted for 1 hour. 🛡\n🥰 | Protected by AuroraModules",
"word_removed": "🗑 Banned word removed: {}",
"none_bw": "🤬 The list of prohibited words is empty.",
"bword_enabled": "✅ Banned words are included in this chat",
"bword_disabled": "❌ Prohibited words are disabled.",
"action_set": "🛡 Action set: {}",
"no_action": "❌ Action not specified. Use: kick, mute, delete",
"no_word": "💬 Word not specified"
}
strings_ru = {
"word_added": "📄 Запрещённое слово добавлено: {}",
"kick": "👤 | Пользователь @{message.sender.username} использовал запрещённое слово и был кикнут. 🛡\n🥰 | Protected by AuroraModules",
"mute": "👤 | Пользователь @{message.sender.username} использовал запрещённое слово и был замучен на 1 час. 🛡\n🥰 | Protected by AuroraModules",
"word_removed": "🗑 Запрещённое слово удалено: {}",
"none_bw": "🤬 Список запрещённых слов пуст.",
"bword_enabled": "✅ Банворды включены в этом чате.",
"bword_disabled": "❌ Банворды выключены в этом чате.",
"action_set": "🛡 Действие установлено: {}",
"no_action": "❌ Действие не указано. Используйте: kick, mute, delete.",
"no_word": "💬 Слово не указано.",
}
strings_uz = {
"word_added": "📄 Taqiqlangan so'z qo'shildi: {}",
"kick": "👤 | Foydalanuvchi @{message.sender.username} taqiqlangan soʻzni ishlatgan va haydalgan. 🛡\n🥰 | Protected by AuroraModules",
"mute": "👤 | Foydalanuvchi @{message.sender.username} taqiqlangan soʻzni ishlatgan va 1 soatga o'chirilgan. 🛡\n🥰 | Protected by AuroraModules",
"word_removed": "🗑 Taqiqlangan soʻz olib tashlandi: {}",
"bword_enabled": "✅ Bu chatda banwords yoqilgan.",
"bw_none": "🤬 Taqiqlangan so'zlar ro'yxati bo'sh.",
"bword_disabled": "❌ Banwords o'chirilgan.",
"action_set": "🛡 Harakat muvaffaqiyatli o'rnatildi: {}",
"no_action": "❌ Harakat belgilanmagan, foydalaning: kick, mute, delete",
"no_word": "💬 So'z belgilanmagan",
}
strings_de = {
"word_added": "📄 Verbotenes Wort hinzugefügt: {}",
"kick": "👤 | Benutzer @{message.sender.username} hat ein verbotenes Wort verwendet und wurde rausgeworfen. 🛡\n🥰 | Protected by AuroraModules",
"mute": "👤 | Benutzer @{message.sender.username} hat ein verbotenes Wort verwendet und wurde für 1 Stunde stummgeschaltet. 🛡\n🥰 | Protected by AuroraModules",
"word_removed": "🗑 Verbotenes Wort entfernt: {}",
"bw_none": "🤬 Die Liste der verbotenen Wörter ist leer.",
"bword_enabled": "✅ Banwords sind in diesem Chat aktiviert.",
"bword_disabled": "❌ Banwords sind in diesem Chat deaktiviert.",
"action_set": "🛡 Aktion erfolgreich festgelegt: {}",
"no_action": "❌ Aktion nicht angegeben, verwenden: kick, mute, delete",
"no_word": "💬 Das Wort ist nicht angegeben."
}
strings_es = {
"word_added": "📄 Palabra prohibida añadida con éxito: {}",
"kick": "👤 | El usuario @{message.sender.username} utilizó una palabra prohibida y fue expulsado. 🛡\n🥰 | Protegido por AuroraModules",
"mute": "👤 | El usuario @{message.sender.username} utilizó una palabra prohibida y fue silenciado por 1 hora. 🛡\n🥰 | Protegido por AuroraModules",
"word_removed": "🗑 Palabra prohibida eliminada: {}",
"none_bw": "🤬 La lista de palabras prohibidas está vacía.",
"bword_enabled": "✅ Las palabras prohibidas están activadas en este chat",
"bword_disabled": "❌ Las palabras prohibidas están desactivadas.",
"action_set": "🛡 Acción configurada: {}",
"no_action": "❌ Acción no especificada. Usa: kick, mute, delete",
"no_word": "💬 Palabra no especificada"
}
def __init__(self):
self.config = loader.ModuleConfig(
loader.ConfigValue(
"BAN_ACTION",
"delete",
lambda: "Action when finding a forbidden word: kick, mute, delete",
),
)
async def watcher(self, message):
chat_id = utils.get_chat_id(message)
enabled_chats = self.db.get("BanWord", "enabled_chats", [])
if str(chat_id) not in enabled_chats:
return
banned_words = self.db.get("BanWord", "banned_words", [])
if any(word in message.text for word in banned_words):
action = self.config["BAN_ACTION"]
if action == "delete":
await message.delete()
elif action == "kick":
entity = await message.client.get_input_entity(chat_id)
await message.client.kick_participant(entity, message.sender_id)
await message.respond(f"👤 | User @{message.sender.username} used a banned word and was kicked. 🛡\n🥰\nProtected by @AuroraModules")
elif action == "mute":
mute_duration = timedelta(hours=1)
until_date = message.date + mute_duration
entity = await message.client.get_input_entity(chat_id)
await message.client.edit_permissions(
entity,
message.sender_id,
until_date=until_date,
send_messages=False
)
await message.respond(f"👤 | User @{message.sender.username} used a banned word and was muted for 1 hour. 🛡\n🥰\nProtected by @AuroraModules")
@loader.command(
ru_doc = "Добавляет запрещённое слово.",
uz_doc = "Taqiqlangan so'zni qo'shadi.",
de_doc = "Fügt ein verbotenes Wort hinzu.",
es_doc = "Añade una palabra prohibida.",
)
async def bwadd(self, message):
"""Adds a banned word."""
args = utils.get_args_raw(message)
if not args:
await utils.answer(message, self.strings["no_word"])
return
banned_words = self.db.get("BanWord", "banned_words", [])
if args not in banned_words:
banned_words.append(args)
self.db.set("BanWord", "banned_words", banned_words)
await utils.answer(message, self.strings["word_added"].format(args))
@loader.command(
ru_doc = "Удаляет запрещённое слово.",
uz_doc = "Taqiqlangan so'zni olib tashlaydi.",
de_doc = "Entfernt ein verbotenes Wort.",
es_doc = "Elimina una palabra prohibida.",
)
async def bwdel(self, message):
"""Removes a banned word."""
args = utils.get_args_raw(message)
if not args:
await utils.answer(message, self.strings["no_word"])
return
banned_words = self.db.get("BanWord", "banned_words", [])
if args in banned_words:
banned_words.remove(args)
self.db.set("BanWord", "banned_words", banned_words)
await utils.answer(message, self.strings["word_removed"].format(args))
@loader.command(
ru_doc = "Включает банворды в чате.",
uz_doc = "Chatda banwordsni yoqadi.",
de_doc = "Aktiviert Banwords im Chat.",
es_doc = "Activa las palabras prohibidas en el chat.",
)
async def bwon(self, message):
"""Enables banwords in chat."""
chat_id = str(utils.get_chat_id(message))
enabled_chats = self.db.get("BanWord", "enabled_chats", [])
if chat_id not in enabled_chats:
enabled_chats.append(chat_id)
self.db.set("BanWord", "enabled_chats", enabled_chats)
await utils.answer(message, self.strings["bword_enabled"])
@loader.command(
ru_doc = "Отключает банворды в чате.",
uz_doc = "Chatdagi bandwordlarni o'chirib qo'yadi.",
de_doc = "Deaktiviert Ban Words im Chat.",
es_doc = "Desactiva las palabras prohibidas en el chat.",
)
async def bwoff(self, message):
"""Disable banword in chat."""
chat_id = str(utils.get_chat_id(message))
enabled_chats = self.db.get("BanWord", "enabled_chats", [])
if chat_id in enabled_chats:
enabled_chats.remove(chat_id)
self.db.set("BanWord", "enabled_chats", enabled_chats)
await utils.answer(message, self.strings["bword_disabled"])
@loader.command(
ru_doc = "Устанавливает действие при нахождении запрещённого слова (kick, mute, delete).",
uz_doc = "Taqiqlangan so'z aniqlanganda harakatni o'rnatadi (kick, mute, delete).",
de_doc = "Legt die Aktion fest, wenn ein verbotenes Wort gefunden wird (kick, mute, delete).",
es_doc = "Establece la acción cuando se encuentra una palabra prohibida (expulsar, silenciar, eliminar).",
)
async def bword(self, message):
"""Sets the action when a prohibited word is found (kick, mute, delete)."""
args = utils.get_args_raw(message)
if args not in ["kick", "mute", "delete"]:
await utils.answer(message, self.strings["no_action"])
return
self.config["BAN_ACTION"] = args
await utils.answer(message, self.strings["action_set"].format(args))
@loader.command(
ru_doc = "Выводит список запрещённых слов.",
uz_doc = "Taqiqlangan so'zlar ro'yxatini ko'rsatadi.",
de_doc = "Zeigt eine Liste verbotener Wörter an.",
es_doc = "Muestra una lista de palabras prohibidas.",
)
async def bwlist(self, message):
"""Displays a list of prohibited words."""
banned_words = self.db.get("BanWord", "banned_words", [])
if not banned_words:
await utils.answer(message, self.strings["none_bw"])
return
word_list = "\n".join(f"• {word}" for word in banned_words)
await utils.answer(message, f"💬 Banned Words:\n{word_list}")