Исправление 'A transaction is already begun on this Session'
This commit is contained in:
@@ -543,7 +543,7 @@ class MainBot(AnyBots):
|
|||||||
|
|
||||||
if link_in_wl is None:
|
if link_in_wl is None:
|
||||||
await log.send(f"{msg.author.mention}({msg.author.id}) отправил в чат {msg.channel.mention} сомнительную ссылку, которой нет в вайлисте:```{msg.content}```")
|
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 msg.delete()
|
||||||
await asyncio.sleep(20)
|
await asyncio.sleep(20)
|
||||||
await mess.delete()
|
await mess.delete()
|
||||||
|
|||||||
@@ -689,32 +689,32 @@ class ModerModule(commands.Cog):
|
|||||||
@commands.slash_command(description="Позволяет добавить домен в белый список", name="добавить_ссылку", administrator=True)
|
@commands.slash_command(description="Позволяет добавить домен в белый список", name="добавить_ссылку", administrator=True)
|
||||||
async def add_domain(self, ctx: disnake.AppCmdInter, link: str = commands.Param(description="Укажите ссылку или домен", name="ссылка")):
|
async def add_domain(self, ctx: disnake.AppCmdInter, link: str = commands.Param(description="Укажите ссылку или домен", name="ссылка")):
|
||||||
async with self.DataBaseManager.session() as session:
|
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)):
|
async with session.begin():
|
||||||
await ctx.send(embed = self.client.ErrEmbed(description = f'У вас недостаточно полномочий, чтобы добавлять ссылку в белый лист. Обратитесь к любому модератору или разработчику.'))
|
if not (await self.DataBaseManager.model_classes['staff_users'].is_admin_or_moder_by_id(ctx.author.id, self.DataBaseManager, session)):
|
||||||
return 1
|
await ctx.send(embed = self.client.ErrEmbed(description = f'У вас недостаточно полномочий, чтобы добавлять ссылку в белый лист. Обратитесь к любому модератору или разработчику.'))
|
||||||
|
|
||||||
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'Некорректная ссылка!'))
|
|
||||||
return 1
|
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)
|
def extract_root_domain(url):
|
||||||
link_in_wl = (await session.execute(stmt)).scalars().first()
|
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:
|
аllowed_domains_model = self.DataBaseManager.model_classes['аllowed_domains']
|
||||||
await ctx.send(embed = self.client.ErrEmbed(description = f'Этот домен уже есть в белом листе!'))
|
|
||||||
return 1
|
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)
|
domain = аllowed_domains_model(domain = new_link, initiator_id = ctx.author.id)
|
||||||
session.add(domain)
|
session.add(domain)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user