From ccd853d237e82cdd632e9666c7385e5a765ade7e Mon Sep 17 00:00:00 2001 From: HypoxiE Date: Tue, 5 Aug 2025 12:39:47 +0300 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20'A=20transaction=20is=20already=20be?= =?UTF-8?q?gun=20on=20this=20Session'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/CoreMod.py | 2 +- src/cogs/moderators.py | 42 +++++++++++++++++++++--------------------- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/src/CoreMod.py b/src/CoreMod.py index b77de9f..6dea025 100644 --- a/src/CoreMod.py +++ b/src/CoreMod.py @@ -543,7 +543,7 @@ class MainBot(AnyBots): if link_in_wl is None: await log.send(f"{msg.author.mention}({msg.author.id}) отправил в чат {msg.channel.mention} сомнительную ссылку, которой нет в вайлисте:```{msg.content}```") - mess = await msg.reply(embed=self.ErrEmbed(description=f'Этой ссылки нет в белом списке. Чтобы её туда добавили, свяжитесь с разработчиком или модераторами.', colour=0xff9900)) + mess = await msg.reply(embed=self.ErrEmbed(description=f'Этой ссылки нет в белом списке, но заявка на добавление уже отправлена. Если это срочно, свяжитесь с разработчиком или модераторами.', colour=0xff9900)) await msg.delete() await asyncio.sleep(20) await mess.delete() diff --git a/src/cogs/moderators.py b/src/cogs/moderators.py index ae050aa..dc1e022 100644 --- a/src/cogs/moderators.py +++ b/src/cogs/moderators.py @@ -689,32 +689,32 @@ class ModerModule(commands.Cog): @commands.slash_command(description="Позволяет добавить домен в белый список", name="добавить_ссылку", administrator=True) async def add_domain(self, ctx: disnake.AppCmdInter, link: str = commands.Param(description="Укажите ссылку или домен", name="ссылка")): async with self.DataBaseManager.session() as session: - if not (await self.DataBaseManager.model_classes['staff_users'].is_admin_or_moder_by_id(ctx.author.id, self.DataBaseManager, session)): - await ctx.send(embed = self.client.ErrEmbed(description = f'У вас недостаточно полномочий, чтобы добавлять ссылку в белый лист. Обратитесь к любому модератору или разработчику.')) - return 1 - - else: - - def extract_root_domain(url): - ext = tldextract.extract(url) - if not ext.domain or not ext.suffix: - return None - return f"{ext.domain}.{ext.suffix}".lower() - new_link = extract_root_domain(link) - if not new_link: - await ctx.send(embed = self.client.ErrEmbed(description = f'Некорректная ссылка!')) + async with session.begin(): + if not (await self.DataBaseManager.model_classes['staff_users'].is_admin_or_moder_by_id(ctx.author.id, self.DataBaseManager, session)): + await ctx.send(embed = self.client.ErrEmbed(description = f'У вас недостаточно полномочий, чтобы добавлять ссылку в белый лист. Обратитесь к любому модератору или разработчику.')) return 1 - аllowed_domains_model = self.DataBaseManager.model_classes['аllowed_domains'] + else: - stmt = self.DataBaseManager.select(аllowed_domains_model).where(аllowed_domains_model.domain == new_link) - link_in_wl = (await session.execute(stmt)).scalars().first() + def extract_root_domain(url): + ext = tldextract.extract(url) + if not ext.domain or not ext.suffix: + return None + return f"{ext.domain}.{ext.suffix}".lower() + new_link = extract_root_domain(link) + if not new_link: + await ctx.send(embed = self.client.ErrEmbed(description = f'Некорректная ссылка!')) + return 1 - if link_in_wl is not None: - await ctx.send(embed = self.client.ErrEmbed(description = f'Этот домен уже есть в белом листе!')) - return 1 + аllowed_domains_model = self.DataBaseManager.model_classes['аllowed_domains'] + + stmt = self.DataBaseManager.select(аllowed_domains_model).where(аllowed_domains_model.domain == new_link) + link_in_wl = (await session.execute(stmt)).scalars().first() + + if link_in_wl is not None: + await ctx.send(embed = self.client.ErrEmbed(description = f'Этот домен уже есть в белом листе!')) + return 1 - async with session.begin(): domain = аllowed_domains_model(domain = new_link, initiator_id = ctx.author.id) session.add(domain)