Добавлена классификация embeds

This commit is contained in:
2025-07-30 00:27:23 +03:00
parent 8d5bac64fa
commit 445dca1062
4 changed files with 99 additions and 80 deletions

View File

@@ -283,6 +283,25 @@ class AnyBots(commands.Bot):
else:
await self.send_function(embed = embed)
class ErrEmbed(disnake.Embed):
def __init__(self, **kwargs):
color = kwargs.pop('color', 0xff0000)
super().__init__(color = color, **kwargs)
class AnswEmbed(disnake.Embed):
def __init__(self, **kwargs):
color = kwargs.pop('color', 0x008000)
super().__init__(color = color, **kwargs)
class WarnEmbed(disnake.Embed):
def __init__(self, **kwargs):
color = kwargs.pop('color', 0xFFFF00)
super().__init__(color = color, **kwargs)
class SuccessEmbed(disnake.Embed):
def __init__(self, **kwargs):
color = kwargs.pop('color', 0x008000)
super().__init__(color = color, **kwargs)
class MainBot(AnyBots):
'''
@@ -520,14 +539,14 @@ class MainBot(AnyBots):
async def on_message(self, msg):
if msg.author.bot:
if msg.author.bot or not self.task_start:
return 0
if msg.author.id == 479210801891115009 and msg.content == "botsoff":
await msg.reply(embed=disnake.Embed(description=f'Бот отключён', colour=0xff9900))
await msg.reply(embed=self.AnswEmbed(description=f'Бот отключён', colour=0xff9900))
await self.BotOff()
return 0
if type(msg.channel).__name__!="DMChannel" and fnmatch(msg.channel.name, "⚠жалоба-от-*-на-*"):
if type(msg.channel).__name__!="DMChannel" and re.match(r"^⚠️?жалоба-от-(.+)-на-(.+)$", msg.channel.name):
log_reports = disnake.utils.get(msg.guild.channels, id=1242373230384386068)
files=[]
for att in msg.attachments:
@@ -558,7 +577,7 @@ class MainBot(AnyBots):
if link_in_wl is None:
print("Нарушение!!!")
await log.send(f"{msg.author.mention}({msg.author.id}) отправил в чат {msg.channel.mention} сомнительную ссылку, которой нет в вайлисте:```{msg.content}```")
mess = await msg.reply(embed=disnake.Embed(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()
@@ -572,7 +591,7 @@ class MainBot(AnyBots):
inv = await self.fetch_invite(url = "https://discord.gg/"+message_words[i+1])
if inv.guild.id != 490445877903622144:
await log.send(f"{msg.author.mention}({msg.author.id}) отправил в чат {msg.channel.mention} сомнительную ссылку на сервер '{inv.guild.name}':```{msg.content}```")
mess = await msg.reply(embed=disnake.Embed(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()

View File

@@ -30,18 +30,18 @@ class AdminModule(commands.Cog):
@commands.slash_command(name="bot_mod_off")
async def BotModOff(self, ctx: disnake.ApplicationCommandInteraction):
if self.client.me in ctx.author.roles:
await ctx.send(embed=disnake.Embed(description=f'Бот отключён', colour=0xff9900), ephemeral=True)
await ctx.send(embed=self.client.SuccessEmbed(description=f'Бот отключён', colour=0xff9900), ephemeral=True)
await self.client.BotOff()
else:
await ctx.send(embed=disnake.Embed(description=f'Не допустимо', colour=0xff9900), ephemeral=True)
await ctx.send(embed=self.client.ErrEmbed(description=f'Не допустимо', colour=0xff9900), ephemeral=True)
@commands.slash_command(name="очистка", administrator=True)
async def clear(self, ctx: disnake.AppCmdInter, count: int):
if self.client.me in ctx.author.roles:
await ctx.channel.purge(limit=count)
await ctx.send(embed = disnake.Embed(description = f'очищено {count} сообщений!', colour = 0xff9900), ephemeral=True)
await ctx.send(embed = self.client.SuccessEmbed(description = f'очищено {count} сообщений!', colour = 0xff9900), ephemeral=True)
else:
await ctx.send(embed = disnake.Embed(description = f'Ты чего удумал?', colour = 0xff9900), ephemeral=True)
await ctx.send(embed = self.client.ErrEmbed(description = f'Ты чего удумал?', colour = 0xff9900), ephemeral=True)
@commands.slash_command(description="Позволяет менять/создавать/удалять ветви", name="правкаетви", administrator=True)
async def edit_branch(self, ctx: disnake.AppCmdInter, purpose: str = commands.Param(description="Укажите цель этой ветки (например, \"модерация\" или \"администрация\")", name="цель", default=None),
@@ -52,41 +52,41 @@ class AdminModule(commands.Cog):
delete_branch: str = commands.Param(description="Вы уверены, что хотите удалить ветвь? Для подтверждения впишите \"уверен\"", name="удаление", default=None)):
if not self.client.me in ctx.author.roles:
await ctx.send(embed = disnake.Embed(description = f'Недостаточно прав', colour = 0xff9900), ephemeral=True)
await ctx.send(embed = self.client.ErrEmbed(description = f'Недостаточно прав', colour = 0xff9900), ephemeral=True)
return 1
async with self.DataBaseManager.session() as session:
if delete_branch == "уверен":
if branchid is None:
await ctx.send(embed = disnake.Embed(description = f'Для удаления ветки необходимо указать её id', colour = 0xff9900))
await ctx.send(embed = self.client.ErrEmbed(description = f'Для удаления ветки необходимо указать её id', colour = 0xff9900))
return 1
async with session.begin():
stmt = self.DataBaseManager.delete(self.DataBaseManager.models['staff_branches'].m).where(self.DataBaseManager.models['staff_branches'].m.id == branchid)
await session.execute(stmt)
await ctx.send(embed = disnake.Embed(description = f'Ветка {branchid} успешно удалена', colour = 0xff9900))
await ctx.send(embed = self.client.SuccessEmbed(description = f'Ветка {branchid} успешно удалена', colour = 0xff9900))
return 0
if branchid is None:
if layer is None or purpose is None:
await ctx.send(embed = disnake.Embed(description = f'Для создания роли необходимо ввести все данные', colour = 0xff9900))
await ctx.send(embed = self.client.ErrEmbed(description = f'Для создания роли необходимо ввести все данные', colour = 0xff9900))
return 1
async with session.begin():
new_branch = self.DataBaseManager.models['staff_branches'].m(layer = layer, purpose = purpose, is_admin = is_admin, is_moder = is_moder)
session.add(new_branch)
await ctx.send(embed = disnake.Embed(description = f'Ветвь \"{purpose}\" успешно создана. Её новый id: {new_branch.id}', colour = 0xff9900))
await ctx.send(embed = self.client.SuccessEmbed(description = f'Ветвь \"{purpose}\" успешно создана. Её новый id: {new_branch.id}', colour = 0xff9900))
return 0
else:
async with session.begin():
branch = await session.get(self.DataBaseManager.models['staff_branches'].m, branchid, with_for_update = True)
if branch is None:
await ctx.send(embed = disnake.Embed(description = f'Ветви с таким идентификатором пока не существует', colour = 0xff9900))
await ctx.send(embed = self.client.ErrEmbed(description = f'Ветви с таким идентификатором пока не существует', colour = 0xff9900))
return 1
else:
if purpose is None and layer is None:
await ctx.send(embed = disnake.Embed(description = f'Для изменения ветви необходимы новые значения', colour = 0xff9900))
await ctx.send(embed = self.client.ErrEmbed(description = f'Для изменения ветви необходимы новые значения', colour = 0xff9900))
return 1
if not purpose is None:
@@ -95,7 +95,7 @@ class AdminModule(commands.Cog):
if not layer is None:
branch.layer = layer
await ctx.send(embed = disnake.Embed(description = f'Ветвь \"{branch.purpose}\"({branch.id}) успешно изменена', colour = 0xff9900))
await ctx.send(embed = self.client.SuccessEmbed(description = f'Ветвь \"{branch.purpose}\"({branch.id}) успешно изменена', colour = 0xff9900))
return 0
@@ -106,7 +106,7 @@ class AdminModule(commands.Cog):
layer: int = commands.Param(description="Укажите слой этой роли в ветке (у ролей нижних слоёв есть власть над верхними)", name="слой", default=None),
delete_role: str = commands.Param(description="Вы уверены, что хотите удалить роль из системы? Для подтверждения впишите \"уверен\"", name="удаление", default=None),):
if not self.client.me in ctx.author.roles:
await ctx.send(embed = disnake.Embed(description = f'Недостаточно прав', colour = 0xff9900), ephemeral=True)
await ctx.send(embed = self.client.ErrEmbed(description = f'Недостаточно прав', colour = 0xff9900), ephemeral=True)
return 1
roleid = int(roleid)
@@ -118,7 +118,7 @@ class AdminModule(commands.Cog):
async with session.begin():
stmt = self.DataBaseManager.delete(staff_roles_model).where(staff_roles_model.id == roleid)
await session.execute(stmt)
await ctx.send(embed = disnake.Embed(description = f'Роль <@&{roleid}> успешно удалена из системы', colour = 0xff9900))
await ctx.send(embed = self.client.SuccessEmbed(description = f'Роль <@&{roleid}> успешно удалена из системы', colour = 0xff9900))
return 0
async with session.begin():
@@ -126,36 +126,36 @@ class AdminModule(commands.Cog):
if not role is None:
if staffsalary != 0:
role.staff_salary = staffsalary
await ctx.send(embed = disnake.Embed(description = f'Зарплата роли <@&{roleid}> успешно изменена на {staffsalary}', colour = 0xff9900))
await ctx.send(embed = self.client.SuccessEmbed(description = f'Зарплата роли <@&{roleid}> успешно изменена на {staffsalary}', colour = 0xff9900))
return 0
elif not layer is None:
role.layer = layer
await ctx.send(embed = disnake.Embed(description = f'Слой роли <@&{roleid}> успешно изменён на {layer}', colour = 0xff9900))
await ctx.send(embed = self.client.SuccessEmbed(description = f'Слой роли <@&{roleid}> успешно изменён на {layer}', colour = 0xff9900))
return 0
else:
await ctx.send(embed = disnake.Embed(description = f'Для изменения существующей роли необходимо ввести новые параметры: layer или staffsalary', colour = 0xff9900))
await ctx.send(embed = self.client.ErrEmbed(description = f'Для изменения существующей роли необходимо ввести новые параметры: layer или staffsalary', colour = 0xff9900))
return 1
else:
if branchid is None:
await ctx.send(embed = disnake.Embed(description = f'Для внесения этой роли в систему необходимо указать id ветви', colour = 0xff9900))
await ctx.send(embed = self.client.ErrEmbed(description = f'Для внесения этой роли в систему необходимо указать id ветви', colour = 0xff9900))
return 1
if layer is None:
await ctx.send(embed = disnake.Embed(description = f'Для внесения этой роли в систему необходимо указать слой роли', colour = 0xff9900))
await ctx.send(embed = self.client.ErrEmbed(description = f'Для внесения этой роли в систему необходимо указать слой роли', colour = 0xff9900))
return 1
branch = await session.get(self.DataBaseManager.models['staff_branches'].m, branchid)
if branch is None:
await ctx.send(embed = disnake.Embed(description = f'Ветви с таким id пока не существует', colour = 0xff9900))
await ctx.send(embed = self.client.ErrEmbed(description = f'Ветви с таким id пока не существует', colour = 0xff9900))
return 1
role = staff_roles_model(id = roleid, staff_salary = staffsalary, branch_id = branchid, layer = layer)
session.add(role)
await ctx.send(embed = disnake.Embed(description = f'Роль <@&{roleid}> успешно добавлена в ветвь {branchid}', colour = 0xff9900))
await ctx.send(embed = self.client.SuccessEmbed(description = f'Роль <@&{roleid}> успешно добавлена в ветвь {branchid}', colour = 0xff9900))
return 0
@commands.slash_command(description="Позволяет создавать/удалять пользователей в системе персонала", name="правка_пользователя", administrator=True)
async def edit_member(self, ctx: disnake.AppCmdInter, userid: str = commands.Param(description="Укажите id пользователя (используются идентификаторы дискорда)", name="id"),
delete_user: str = commands.Param(description="Вы уверены, что хотите удалить пользователя из системы? Для подтверждения впишите \"уверен\"", name="удаление", default=None)):
if not self.client.me in ctx.author.roles:
await ctx.send(embed = disnake.Embed(description = f'Недостаточно прав', colour = 0xff9900), ephemeral=True)
await ctx.send(embed = self.client.ErrEmbed(description = f'Недостаточно прав', colour = 0xff9900), ephemeral=True)
return 1
userid = int(userid)
@@ -167,7 +167,7 @@ class AdminModule(commands.Cog):
async with session.begin():
stmt = self.DataBaseManager.delete(staff_users_model).where(staff_users_model.id == userid)
await session.execute(stmt)
await ctx.send(embed = disnake.Embed(description = f'Пользователь <@{userid}> успешно удален из системы', colour = 0xff9900))
await ctx.send(embed = self.client.SuccessEmbed(description = f'Пользователь <@{userid}> успешно удален из системы', colour = 0xff9900))
member = await self.client.krekchat.fetch_member(userid)
await member.remove_roles(self.client.staff)
return 0
@@ -179,10 +179,10 @@ class AdminModule(commands.Cog):
await member.add_roles(self.client.staff)
user = staff_users_model(id = userid)
session.add(user)
await ctx.send(embed = disnake.Embed(description = f'Пользователь <@{userid}> успешно добавлен в систему', colour = 0xff9900))
await ctx.send(embed = self.client.SuccessEmbed(description = f'Пользователь <@{userid}> успешно добавлен в систему', colour = 0xff9900))
return 0
else:
await ctx.send(embed = disnake.Embed(description = f'Пользователь <@{userid}> уже есть в системе', colour = 0xff9900))
await ctx.send(embed = self.client.ErrEmbed(description = f'Пользователь <@{userid}> уже есть в системе', colour = 0xff9900))
return 1
@commands.slash_command(description="!!ВАЖНО!! ИСПОЛЬЗОВАНИЕ ТОЛЬКО В ЭКСТРЕННЫХ СЛУЧАЯХ! Назначает пользователей на роль", name="назначить_пользователя", administrator=True)
@@ -190,7 +190,7 @@ class AdminModule(commands.Cog):
roleid: str = commands.Param(description="Укажите id роли (используются идентификаторы дискорда)", name="роль"),
description: str = commands.Param(description="Описание", name="описание", default=None)):
if not self.client.me in ctx.author.roles:
await ctx.send(embed = disnake.Embed(description = f'Недостаточно прав', colour = 0xff9900), ephemeral=True)
await ctx.send(embed = self.client.ErrEmbed(description = f'Недостаточно прав', colour = 0xff9900), ephemeral=True)
return 1
userid = int(userid)
@@ -206,5 +206,5 @@ class AdminModule(commands.Cog):
await session.flush()
user_role = await self.DataBaseManager.model_classes['staff_users_roles'].create_with_auto_branch(session, user_id = userid, role_id = roleid, description = description)
session.add(user_role)
await ctx.send(embed = disnake.Embed(description = f'Пользователю <@{userid}> успешно назначена роль <@&{roleid}>. \n```diff\n- Эта функция не выдаёт роли автоматически, поэтому требуется выдача вручную.```', colour = 0xff9900))
await ctx.send(embed = self.client.SuccessEmbed(description = f'Пользователю <@{userid}> успешно назначена роль <@&{roleid}>. \n```diff\n- Эта функция не выдаёт роли автоматически, поэтому требуется выдача вручную.```', colour = 0xff9900))
return 0

View File

@@ -136,7 +136,7 @@ class ModerModule(commands.Cog):
await member.edit(nick=newnick)
await interaction.response.defer(ephemeral=True)
embed = disnake.Embed(title=f"{translate[self.title.split(':')[0]]}", description = f"{self.member.mention} ({self.member.id})")
embed = self.client.AnswEmbed(title=f"{translate[self.title.split(':')[0]]}", description = f"{self.member.mention} ({self.member.id})")
bans_channel = disnake.utils.get(interaction.guild.channels, id = 1219644103973671035)
warns_channel = disnake.utils.get(interaction.guild.channels, id = 1219644151184887838)
muts_channel = disnake.utils.get(interaction.guild.channels, id = 1219644125469474889)
@@ -225,7 +225,7 @@ class ModerModule(commands.Cog):
counter += count_translate[i] * len(result)
if counter>=18:
await ban(interaction, self.member, 0, "Набрал больше 18 'очков наказаний'")
await bans_channel.send(embed=disnake.Embed(title=f"Достойное достижение!", description = f"Поздравляем! {self.member.mention}({self.member.id}) наконец набрал целых {counter} очков наказания и получил свою награду: вечный бан!"))
await bans_channel.send(embed=self.client.AnswEmbed(title=f"Достойное достижение!", description = f"Поздравляем! {self.member.mention}({self.member.id}) наконец набрал целых {counter} очков наказания и получил свою награду: вечный бан!"))
await interaction.edit_original_response(embed=embed)
@@ -329,12 +329,12 @@ class ModerModule(commands.Cog):
await self.client.bt_send({"type": "unpunishment", "options": {"severity": "warning", "member": int(member)}})
view = disnake.ui.View(timeout=30)
embed = disnake.Embed(title="Выберите наказание для снятия", description = f"{self.member.mention}\n({self.member.id})", colour = 0x008000)
embed = self.client.AnswEmbed(title="Выберите наказание для снятия", description = f"{self.member.mention}\n({self.member.id})")
view.add_item(await DeletePenaltiesSelect(self.member).initialization(embed))
await interaction.response.edit_message(embed = embed, view=view)
await interaction.followup.send(embed = disnake.Embed(description = f"Наказание {pentype} успешно аннулировано!", colour = 0x008000), ephemeral=True)
await logs_channel.send(embed = disnake.Embed(description = f"{interaction.author.mention}({interaction.author.id}) успешно аннулировал наказание {pentype}({penaltid}) у пользователя {member}", colour = 0x008000),)
await interaction.followup.send(embed = self.client.AnswEmbed(description = f"Наказание {pentype} успешно аннулировано!"), ephemeral=True)
await logs_channel.send(embed = self.client.AnswEmbed(description = f"{interaction.author.mention}({interaction.author.id}) успешно аннулировал наказание {pentype}({penaltid}) у пользователя {member}"),)
if "textmute" in self.values[0] or "voicemute" in self.values[0] or "ban" in self.values[0] or\
@@ -343,7 +343,7 @@ class ModerModule(commands.Cog):
await interaction.response.send_modal(modal)
elif "deletepenalties" in self.values[0]:
view = disnake.ui.View(timeout=30)
embed = disnake.Embed(title="Выберите наказание для снятия", description = f"{self.member.mention}\n({self.member.id})", colour = 0x008000)
embed = self.client.AnswEmbed(title="Выберите наказание для снятия", description = f"{self.member.mention}\n({self.member.id})")
view.add_item(await DeletePenaltiesSelect(self.member).initialization(embed))
await interaction.response.send_message(embed = embed, ephemeral=True, view=view)
await ctx.response.defer(ephemeral=True)
@@ -353,7 +353,7 @@ class ModerModule(commands.Cog):
stmt = self.max_strength_role(ctx.author.id)
author_strenght = (await session.execute(stmt)).first()
if author_strenght is None:
await ctx.edit_original_message(embed = disnake.Embed(description = f"Вы должны иметь должность в персонале полей, чтобы действовать", colour = 0xff9900))
await ctx.edit_original_message(embed = self.client.ErrEmbed(description = f"Вы должны иметь должность в персонале полей, чтобы действовать"))
return
stmt = (
@@ -401,10 +401,10 @@ class ModerModule(commands.Cog):
await ctx.edit_original_message(view=None)
if (not reprimand_branches) and (not ((not member_is_moderator) and author_is_moderator)):
await ctx.edit_original_message(embed = disnake.Embed(description = f"Вы ничего не можете сделать этому пользователю", colour = 0xff9900))
await ctx.edit_original_message(embed = self.client.ErrEmbed(description = f"Вы ничего не можете сделать этому пользователю"))
return
embed = disnake.Embed(title="Выберите действие", description = f"{member.mention}\n({member.id})", colour = 0x008000)
embed = self.client.AnswEmbed(title="Выберите действие", description = f"{member.mention}\n({member.id})")
embed.set_thumbnail(url=member.avatar)
view = View(timeout=30)
view.add_item(ActionSelect(member = member, reprimand_branches = reprimand_branches, other_on = (not member_is_moderator) and author_is_moderator))
@@ -459,14 +459,14 @@ class ModerModule(commands.Cog):
try:
await member.add_roles(add_role)
except disnake.errors.Forbidden:
await ctx.channel.send(ctx.author.mention, embed = disnake.Embed(description = f'Недостаточно прав. Пользователю {member.mention} необходимо ручное добавление роли {add_role.mention}', colour = 0xff9900))
await ctx.channel.send(ctx.author.mention, embed = self.client.ErrEmbed(description = f'Недостаточно прав. Пользователю {member.mention} необходимо ручное добавление роли {add_role.mention}'))
if not remove_roleid is None:
remove_role = await krekchat.fetch_role(remove_roleid)
try:
await member.remove_roles(remove_role)
except disnake.errors.Forbidden:
await ctx.channel.send(ctx.author.mention, embed = disnake.Embed(description = f'Недостаточно прав. Пользователю {member.mention} необходимо ручное удаление роли {remove_role.mention}', colour = 0xff9900))
await ctx.channel.send(ctx.author.mention, embed = self.client.ErrEmbed(description = f'Недостаточно прав. Пользователю {member.mention} необходимо ручное удаление роли {remove_role.mention}'))
@commands.slash_command(description="Позволяет повысить пользователя в указанной ветке", name="повысить", administrator=True)
@@ -497,7 +497,7 @@ class ModerModule(commands.Cog):
user_roles = (await session.execute(stmt)).scalars().all()
if len(user_roles) != 1:
await ctx.send(embed = disnake.Embed(description = f'Для данной операции необходимо уточнение id ветки!', colour = 0xff9900))
await ctx.send(embed = self.client.ErrEmbed(description = f'Для данной операции необходимо уточнение id ветки!'))
return 1
else:
@@ -510,7 +510,7 @@ class ModerModule(commands.Cog):
member_upper_role = (await session.execute(stmt)).first()
if author_upper_role is None or ((not member_upper_role is None) and author_upper_role >= member_upper_role):
await ctx.send(embed = disnake.Embed(description = f'Вы должны быть выше должности, на которую назначаете пользователя', colour = 0xff9900))
await ctx.send(embed = self.client.ErrEmbed(description = f'Вы должны быть выше должности, на которую назначаете пользователя'))
return 1
stmt = (
@@ -546,39 +546,39 @@ class ModerModule(commands.Cog):
member_role_index = next((i for i, role in enumerate(branch_roles) if role.id == member_role.role.id), None)
if member_role_index + 1 >= len(branch_roles):
await ctx.send(embed = disnake.Embed(description = f'Этот пользователь уже находится на самой высокой должности в данной ветви', colour = 0xff9900))
await ctx.send(embed = self.client.ErrEmbed(description = f'Этот пользователь уже находится на самой высокой должности в данной ветви'))
return 1
target_role = branch_roles[member_role_index + 1]
if author_upper_role >= (target_role.branch.layer, target_role.layer):
await ctx.send(embed = disnake.Embed(description = f'Вы должны быть выше должности, на которую назначаете пользователя', colour = 0xff9900))
await ctx.send(embed = self.client.ErrEmbed(description = f'Вы должны быть выше должности, на которую назначаете пользователя'))
return 1
previous_role_id = member_role.role_id
member_role.role_id = target_role.id
await ctx.send(embed = disnake.Embed(description = f'Пользователь <@{userid}> успешно назначен на роль <@&{target_role.id}>', colour = 0xff9900))
await ctx.send(embed = self.client.AnswEmbed(description = f'Пользователь <@{userid}> успешно назначен на роль <@&{target_role.id}>'))
await self.promotions_add_remove_role(ctx, userid, add_roleid = target_role.id, remove_roleid = previous_role_id)
return 0
else:
member_check = await session.get(staff_users_model, userid)
if member_check is None:
await ctx.send(embed = disnake.Embed(description = f'Необходимо изначально зарегистрировать пользователя, попросите разработчика использовать \"/правка_пользователя\"', colour = 0xff9900))
await ctx.send(embed = self.client.ErrEmbed(description = f'Необходимо изначально зарегистрировать пользователя, попросите разработчика использовать \"/правка_пользователя\"'))
return 1
member_role_index = 0
if member_role_index >= len(branch_roles):
await ctx.send(embed = disnake.Embed(description = f'В данной ветви пока нет ролей', colour = 0xff9900))
await ctx.send(embed = self.client.ErrEmbed(description = f'В данной ветви пока нет ролей'))
return 1
target_role = branch_roles[member_role_index]
if author_upper_role >= (target_role.branch.layer, target_role.layer):
await ctx.send(embed = disnake.Embed(description = f'Вы должны быть выше должности, на которую назначаете пользователя', colour = 0xff9900))
await ctx.send(embed = self.client.ErrEmbed(description = f'Вы должны быть выше должности, на которую назначаете пользователя'))
return 1
user_role = await staff_users_roles_model.create_with_auto_branch(session, user_id = userid, role_id = target_role.id)
session.add(user_role)
await ctx.send(embed = disnake.Embed(description = f'Пользователь <@{userid}> успешно назначен на роль <@&{target_role.id}>', colour = 0xff9900))
await ctx.send(embed = self.client.AnswEmbed(description = f'Пользователь <@{userid}> успешно назначен на роль <@&{target_role.id}>'))
await self.promotions_add_remove_role(ctx, userid, add_roleid = target_role.id)
return 0
@@ -610,7 +610,7 @@ class ModerModule(commands.Cog):
user_roles = (await session.execute(stmt)).scalars().all()
if len(user_roles) != 1:
await ctx.send(embed = disnake.Embed(description = f'Для данной операции необходимо уточнение id ветки!', colour = 0xff9900))
await ctx.send(embed = self.client.ErrEmbed(description = f'Для данной операции необходимо уточнение id ветки!'))
return 1
else:
@@ -623,7 +623,7 @@ class ModerModule(commands.Cog):
member_upper_role = (await session.execute(stmt)).first()
if author_upper_role is None or ((not member_upper_role is None) and author_upper_role >= member_upper_role):
await ctx.send(embed = disnake.Embed(description = f'Вы должны быть выше пользователя в должности', colour = 0xff9900))
await ctx.send(embed = self.client.ErrEmbed(description = f'Вы должны быть выше пользователя в должности'))
return 1
stmt = (
@@ -668,22 +668,22 @@ class ModerModule(commands.Cog):
if len(result) <= 1:
stmt = self.DataBaseManager.delete(staff_users_model).where(staff_users_model.id == userid)
await session.execute(stmt)
await ctx.send(embed = disnake.Embed(description = f'Пользователь <@{userid}> полностью удалён из системы', colour = 0xff9900))
await ctx.send(embed = self.client.AnswEmbed(description = f'Пользователь <@{userid}> полностью удалён из системы'))
await self.promotions_add_remove_role(ctx, userid, remove_roleid = self.client.staff.id)
return 0
else:
await session.delete(member_role)
await ctx.send(embed = disnake.Embed(description = f'Пользователь <@{userid}> снят со всех должностей в ветви {branchid}', colour = 0xff9900))
await ctx.send(embed = self.client.AnswEmbed(description = f'Пользователь <@{userid}> снят со всех должностей в ветви {branchid}'))
return 0
target_role = branch_roles[member_role_index - 1]
previous_role_id = member_role.role_id
member_role.role_id = target_role.id
await ctx.send(embed = disnake.Embed(description = f'Пользователь <@{userid}> успешно понижен до роли <@&{target_role.id}> в ветви {branchid}', colour = 0xff9900))
await ctx.send(embed = self.client.AnswEmbed(description = f'Пользователь <@{userid}> успешно понижен до роли <@&{target_role.id}> в ветви {branchid}'))
await self.promotions_add_remove_role(ctx, userid, add_roleid = target_role.id, remove_roleid = previous_role_id)
return 0
else:
await ctx.send(embed = disnake.Embed(description = f'Данный пользователь не имеет роли в ветке {branchid}', colour = 0xff9900))
await ctx.send(embed = self.client.ErrEmbed(description = f'Данный пользователь не имеет роли в ветке {branchid}'))
return 1
@commands.slash_command(description="Позволяет добавить домен в белый список", name="добавить_ссылку", administrator=True)
@@ -719,7 +719,7 @@ class ModerModule(commands.Cog):
break
if not admin_flag:
await ctx.send(embed = disnake.Embed(description = f'У вас недостаточно полномочий, чтобы добавлять ссылку в белый лист. Обратитесь к любому модератору или разработчику.', colour = 0xff9900))
await ctx.send(embed = self.client.ErrEmbed(description = f'У вас недостаточно полномочий, чтобы добавлять ссылку в белый лист. Обратитесь к любому модератору или разработчику.'))
return 1
else:
@@ -731,18 +731,18 @@ class ModerModule(commands.Cog):
return f"{ext.domain}.{ext.suffix}".lower()
new_link = extract_root_domain(link)
if not new_link:
await ctx.send(embed = disnake.Embed(description = f'Некорректная ссылка!', colour = 0xff9900))
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 = disnake.Embed(description = f'Этот домен уже есть в белом листе!', colour = 0xff9900))
await ctx.send(embed = self.client.ErrEmbed(description = f'Этот домен уже есть в белом листе!'))
return 1
domain = аllowed_domains_model(domain = new_link, initiator_id = ctx.author.id)
session.add(domain)
await ctx.send(embed = disnake.Embed(description = f'Домен {new_link} успешно добавлен в белый список', colour = 0xff9900))
await ctx.send(embed = self.client.AnswEmbed(description = f'Домен {new_link} успешно добавлен в белый список'))
return 1

View File

@@ -31,7 +31,7 @@ class UIModule(commands.Cog):
models = self.client.DataBaseManager.model_classes
if not member:
member = ctx.author
embed = disnake.Embed(title="Наказания", description = f"{member.mention}", colour = 0x008000)
embed = self.client.AnswEmbed(title="Наказания", description = f"{member.mention}")
embed.set_thumbnail(url=member.avatar)
async with self.DataBaseManager.session() as session:
@@ -83,11 +83,11 @@ class UIModule(commands.Cog):
embed.set_footer(text = f"Рассмотрено в пользу исца\n{mod.author.name} ({mod.author.id})")
embed.colour=0x008000
await report_message.edit(content = "", embed=embed, view=None)
await member.send(embed = disnake.Embed(title=f"", description = f"После разбора нарушения модератор {mod.author.mention} признал вас виновным", colour = 0xff9900))
await member.send(embed = self.client.WarnEmbed(title=f"", description = f"После разбора нарушения модератор {mod.author.mention} признал вас виновным"))
await self.client.bt_send({"type": "complaint", "options": {"accepted": True, "attack_member": ctx.author.id, "defence_member": member.id, "moderator": mod.author.id}})
else:
await call.send(embed = disnake.Embed(title=f"", description = f"Только судья может использовать эти команды", colour = 0xff9900), ephemeral=True)
await call.send(embed = self.client.ErrEmbed(title=f"", description = f"Только судья может использовать эти команды"), ephemeral=True)
async def DenyCallback(report_message, member, embed, mod, call, channel):
if call.author == mod.author:
@@ -95,11 +95,11 @@ class UIModule(commands.Cog):
embed.set_footer(text = f"Рассмотрено в пользу ответчика\n{mod.author.name} ({mod.author.id})")
embed.colour=0x008000
await report_message.edit(content = "", embed=embed, view=None)
#await member.send(embed = disnake.Embed(title=f"", description = f"После разбора нарушения модератор {mod.author.mention} признал вас невиновным", colour = 0xff9900))
#await member.send(embed = self.client.AnswEmbed(title=f"", description = f"После разбора нарушения модератор {mod.author.mention} признал вас невиновным", colour = 0xff9900))
await self.client.bt_send({"type": "complaint", "options": {"accepted": False, "attack_member": ctx.author.id, "defence_member": member.id, "moderator": mod.author.id}})
else:
await call.send(embed = disnake.Embed(title=f"", description = f"Только судья может использовать эти команды", colour = 0xff9900), ephemeral=True)
await call.send(embed = self.client.ErrEmbed(title=f"", description = f"Только судья может использовать эти команды"), ephemeral=True)
class AttackClass:
def __init__(self, member, channel, mod):
@@ -110,10 +110,10 @@ class UIModule(commands.Cog):
async def callback(self, mod):
if mod.author == self.mod.author:
await self.channel.set_permissions(self.member, read_messages = True, read_message_history=True, send_messages=self.permatt) #read_messages=self.permatt
await mod.send(embed = disnake.Embed(title=f"", description = f"{self.member.mention}-{'право ответа включено' if self.permatt else 'право ответа выключено'}", colour = 0x008000), ephemeral=True)
await mod.send(embed = self.client.SuccessEmbed(title=f"", description = f"{self.member.mention}-{'право ответа включено' if self.permatt else 'право ответа выключено'}"), ephemeral=True)
self.permatt=not self.permatt
else:
await mod.send(embed = disnake.Embed(title=f"", description = f"Только судья может использовать эти команды", colour = 0xff9900), ephemeral=True)
await mod.send(embed = self.client.ErrEmbed(title=f"", description = f"Только судья может использовать эти команды"), ephemeral=True)
class DefenceClass:
def __init__(self, member, channel, mod):
self.member=member
@@ -123,17 +123,17 @@ class UIModule(commands.Cog):
async def callback(self, mod):
if mod.author == self.mod.author:
await self.channel.set_permissions(self.member, read_messages = True, read_message_history=True, send_messages=self.permdef) #read_messages=self.permdef
await mod.send(embed = disnake.Embed(title=f"", description = f"{self.member.mention}-{'право ответа включено' if self.permdef else 'право ответа выключено'}", colour = 0x008000), ephemeral=True)
await mod.send(embed = self.client.SuccessEmbed(title=f"", description = f"{self.member.mention}-{'право ответа включено' if self.permdef else 'право ответа выключено'}"), ephemeral=True)
self.permdef=not self.permdef
else:
await mod.send(embed = disnake.Embed(title=f"", description = f"Только судья может использовать эти команды", colour = 0xff9900), ephemeral=True)
await mod.send(embed = self.client.ErrEmbed(title=f"", description = f"Только судья может использовать эти команды"), ephemeral=True)
if not any(i.mention in mentions for i in mod.author.roles):
await mod.send(embed = disnake.Embed(description = f"Вы не можете принять этот репорт", colour = 0xff9900), ephemeral=True)
await mod.send(embed = self.client.ErrEmbed(description = f"Вы не можете принять этот репорт"), ephemeral=True)
return
if mod.author == ctx.author:
await mod.send(embed = disnake.Embed(description = f"Вы не можете принять свой же репорт", colour = 0xff9900), ephemeral=True)
await mod.send(embed = self.client.ErrEmbed(description = f"Вы не можете принять свой же репорт"), ephemeral=True)
return
embed.set_footer(text = f"Принято\n{mod.author.name} ({mod.author.id})")
@@ -163,7 +163,7 @@ class UIModule(commands.Cog):
attack = AttackClass(ctx.author, parsing_channel, mod)
defence = DefenceClass(member, parsing_channel, mod)
pin = await parsing_channel.send( f"{mod.author.mention}" ,embed = disnake.Embed(title=f"Жалоба", description = f"Вы вызвались судить {member.mention} по жалобе от {ctx.author.mention}\n\
pin = await parsing_channel.send( f"{mod.author.mention}" ,embed = self.client.AnswEmbed(title=f"Жалоба", description = f"Вы вызвались судить {member.mention} по жалобе от {ctx.author.mention}\n\
⚔️ - Дать {ctx.author.mention} право ответа\n\
⚰️ - Дать {member.mention} право ответа\n\
✅ - Виновен\n\
@@ -176,7 +176,7 @@ class UIModule(commands.Cog):
await pin.pin()
if member==ctx.author:
await ctx.send(embed = disnake.Embed(description = f'Нельзя подать жалобу на самого себя!', colour = 0xFF4500), ephemeral=True)
await ctx.send(embed = self.client.ErrEmbed(description = f'Нельзя подать жалобу на самого себя!', colour = 0xFF4500), ephemeral=True)
return
mentions = []
@@ -190,7 +190,7 @@ class UIModule(commands.Cog):
if len(mentions)==0:
mentions.append(f"{self.client.me.mention}")
report_embed = disnake.Embed(title=f"**Жалоба**", colour = 0xDC143C)
report_embed = self.client.AnswEmbed(title=f"**Жалоба**", colour = 0xDC143C)
report_embed.add_field(name=f"Обвинитель: ", value = f"{ctx.author.mention}\n({ctx.author.id})", inline=True)
report_embed.add_field(name=f"Обвиняемый: ", value = f"{member.mention}\n({member.id})", inline=True)
@@ -202,7 +202,7 @@ class UIModule(commands.Cog):
report_message = await report_channel.send(", ".join(mentions), embed = report_embed, view=view)
btn.callback = lambda mod: ReportCallback(ctx,member,report_message,reason,report_embed,mentions,mod)
await ctx.send(embed = disnake.Embed(description = f'Жалоба на {member.mention} успешно подана', colour = 0x008000), ephemeral=True)
await ctx.send(embed = self.client.SuccessEmbed(description = f'Жалоба на {member.mention} успешно подана', colour = 0x008000), ephemeral=True)
'''
@@ -231,7 +231,7 @@ class UIModule(commands.Cog):
for branch in branches:
branch.roles.sort(key=lambda role: role.layer)
embed = disnake.Embed(title = f"", description = f"# Общая иерархия\n", colour = 0xff9900)
embed = self.client.AnswEmbed(title = f"", description = f"# Общая иерархия\n", colour = 0xff9900)
for branchcounter, branch in enumerate(branches, start=1):
embed.description += f"## {branchcounter}) {branch.purpose}"
if devmod:
@@ -259,12 +259,12 @@ class UIModule(commands.Cog):
)
branch = (await session.execute(stmt)).scalars().first()
if branch is None:
await ctx.send(embed = disnake.Embed(description = f'Ветви с идентификатором {branchid} не существует', colour = 0xff9900))
await ctx.send(embed = self.client.ErrEmbed(description = f'Ветви с идентификатором {branchid} не существует', colour = 0xff9900))
return 1
branch.roles.sort(key=lambda role: role.layer)
embed = disnake.Embed(title = f"", description = f"# Иерархия по ветви {branch.purpose}\n", colour = 0xff9900)
embed = self.client.AnswEmbed(title = f"", description = f"# Иерархия по ветви {branch.purpose}\n", colour = 0xff9900)
for rolecounter, role in enumerate(branch.roles, start=1):
embed.description += f"## {rolecounter}) <@&{role.id}>"