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)