From af2350e3fd8b2c1df597757bb4115e05b3b6a05f Mon Sep 17 00:00:00 2001 From: Whyverum Date: Mon, 8 Dec 2025 16:47:19 +0700 Subject: [PATCH] =?UTF-8?q?=D0=A1=D0=BE=D0=B4=20=D0=B4=D0=BB=D1=8F=20?= =?UTF-8?q?=D1=83=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20?= =?UTF-8?q?=D1=87=D0=B5=D1=80=D0=BD=D1=8B=D0=BC=20=D1=81=D0=BF=D0=B8=D1=81?= =?UTF-8?q?=D0=BA=D0=BE=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bot/cogs/blacklist.py | 66 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 bot/cogs/blacklist.py diff --git a/bot/cogs/blacklist.py b/bot/cogs/blacklist.py new file mode 100644 index 0000000..e4ea34b --- /dev/null +++ b/bot/cogs/blacklist.py @@ -0,0 +1,66 @@ +from discord.ext import commands + +from ..storage import storage +from .moderation import is_admin + + +class Blacklist(commands.Cog): + """ + Cog для управления чёрным списком слов. + """ + + def __init__(self, bot: commands.Bot) -> None: + self.bot: commands.Bot = bot + + @commands.command() + @is_admin() + async def blacklist_show(self, ctx: commands.Context) -> None: + """ + Показать текущий чёрный список слов. + + :param ctx: Контекст команды. + """ + if not storage.blacklist: + await ctx.send("Чёрный список пуст.") + else: + await ctx.send("Чёрный список:\n" + ", ".join(storage.blacklist)) + + @commands.command() + @is_admin() + async def blacklist_add(self, ctx: commands.Context, *, word: str) -> None: + """ + Добавить слово в чёрный список. + + :param ctx: Контекст команды. + :param word: Слово для добавления. + """ + word_lower: str = word.lower() + if word_lower in storage.blacklist: + await ctx.send(f"Слово `{word_lower}` уже в чёрном списке.") + return + + storage.blacklist.append(word_lower) + storage.save_blacklist() + await ctx.send(f"Слово `{word_lower}` добавлено в чёрный список.") + + @commands.command() + @is_admin() + async def blacklist_remove(self, ctx: commands.Context, *, word: str) -> None: + """ + Удалить слово из чёрного списка. + + :param ctx: Контекст команды. + :param word: Слово для удаления. + """ + word_lower: str = word.lower() + if word_lower not in storage.blacklist: + await ctx.send(f"Слово `{word_lower}` отсутствует в чёрном списке.") + return + + storage.blacklist.remove(word_lower) + storage.save_blacklist() + await ctx.send(f"Слово `{word_lower}` удалено из чёрного списка.") + + +async def setup(bot: commands.Bot) -> None: + await bot.add_cog(Blacklist(bot))