Добавлена классификация embeds
This commit is contained in:
@@ -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()
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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}>"
|
||||
|
||||
Reference in New Issue
Block a user