mirror of
https://github.com/yawaflua/AoyoBot.git
synced 2025-12-09 03:49:30 +02:00
81 lines
5.3 KiB
Python
81 lines
5.3 KiB
Python
from disnake.ext import *
|
||
import disnake
|
||
from pathlib import Path
|
||
from handlers import *
|
||
import json
|
||
from log import rootLogger
|
||
|
||
voiceChannelData = Path("tempFiles/voiceTempFile.json")
|
||
voiceChannelName = Path("tempFiles/voiceName.json")
|
||
class audioChannelAutomatization(commands.Cog):
|
||
def __init__(self, bot):
|
||
self.bot = bot
|
||
rootLogger.info(f'Модуль {self.__class__.__name__} включен!')
|
||
|
||
|
||
|
||
|
||
@bot.event
|
||
async def on_voice_state_update(member, before, after):
|
||
if after.channel and after.channel != before.channel and after.channel.name in ['[+] СОЗДАТЬ', '[+]СОЗДАТЬ']:
|
||
guild = bot.get_guild(member.guild.id)
|
||
|
||
category = disnake.utils.get(guild.categories, id=after.channel.category.id)
|
||
|
||
data = json.loads(voiceChannelName.read_text(encoding="utf-8"))
|
||
|
||
if f"{member.id}" in data:
|
||
channel = await guild.create_voice_channel(name=f'{data[f"{member.id}"]["chat_name"]}', category=category)
|
||
else:
|
||
channel = await guild.create_voice_channel(name=f'{member.name}`s voice channel', category=category)
|
||
await member.edit(voice_channel=channel)
|
||
data[f"{member.id}"]["channel_id"] = f"{channel.id}"
|
||
voiceChannelName.write_text(json.dumps(data, indent=7), "utf-8", newline='\n')
|
||
embeded = disnake.Embed(title="Пользователь присоединился к каналу", description=f"Пользователь: {member.mention}\n Канал: {after.channel.name}",timestamp=datetime.datetime.now(), color=0x00ff00)
|
||
embed = disnake.Embed(title = '**Управление приватными комнатами**',
|
||
description="""Вы можете изменить конфигурацию своей комнаты с помощью кнопок ниже.
|
||
**Переименовать приватную комнату:** ✏️
|
||
**Задать лимит участников приватной комнаты:**👥
|
||
**Закрыть/Открыть приватную комнату:**🔒
|
||
**Скрыть/Открыть приватную комнату:**👀
|
||
**Удалить канал(только для создателей канала):** \"Удалить канал\"""", colour=disnake.Colour.from_rgb(47, 49, 54))
|
||
buttons = disnake.ui.View()
|
||
buttons.add_item(disnake.ui.Button(style=disnake.ButtonStyle.secondary, custom_id='renamePrivateRoom', emoji='✏'))
|
||
buttons.add_item(disnake.ui.Button(style=disnake.ButtonStyle.secondary, custom_id='setUsersLimit', emoji='👥'))
|
||
buttons.add_item(disnake.ui.Button(style=disnake.ButtonStyle.secondary, custom_id='closePrivateRoom', emoji=f'🔒'))
|
||
buttons.add_item(disnake.ui.Button(style=disnake.ButtonStyle.secondary, custom_id='hidePrivateRoom', emoji=f'👀'))
|
||
buttons.add_item(disnake.ui.Button(style=disnake.ButtonStyle.secondary, custom_id='kickUser', label='Кикнуть пользователя'))
|
||
buttons.add_item(disnake.ui.Button(style=disnake.ButtonStyle.danger, custom_id='deleteChannel', label='Удалить канал'))
|
||
buttons.add_item(disnake.ui.Button(style=disnake.ButtonStyle.danger, custom_id='giveOwner', label='Передать права на канал'))
|
||
buttons.add_item(disnake.ui.Button(style=disnake.ButtonStyle.success, custom_id='takeOwner', label='Забрать права на канал'))
|
||
await bot.get_guild(member.guild.id).get_channel(channel.id).send(embed=embed, view=buttons)
|
||
writeData = {
|
||
'chat_name': f'{after.channel.name}',
|
||
'channel_owner': f'{member.id}',
|
||
'chat_id': f'{after.channel.id}',
|
||
}
|
||
data = json.loads(voiceChannelData.read_text(encoding="utf-8"))
|
||
data["voice_channels"][f'{after.channel.id}'] = writeData
|
||
voiceChannelData.write_text(json.dumps(data, indent=7), encoding="utf-8", newline="\n")
|
||
|
||
|
||
elif before.channel and after.channel != before.channel:
|
||
embeded = disnake.Embed(title="Пользователь покинул канал.", description=f"Пользователь: {member.mention}\n Канал: {before.channel.name}",timestamp=datetime.datetime.now(), color=disnake.Colour.from_rgb(186, 0, 6))
|
||
guild = bot.get_guild(member.guild.id)
|
||
data = json.loads(voiceChannelName.read_text(encoding="utf-8"))
|
||
for item in data:
|
||
if data[item]['channel_id'] == str(before.channel.id):
|
||
if before.channel.name == f'{member.name}`s voice channel' or before.channel.name == data[item]["chat_name"] and not len(before.channel.members):
|
||
try:
|
||
await before.channel.delete()
|
||
except Exception as e:
|
||
print(e)
|
||
else: pass
|
||
path = Path("guilds/guilds.json")
|
||
data = json.loads(path.read_text(encoding="utf-8"))
|
||
if data["guilds"][f"{member.guild.id}"]["logs"]:
|
||
embeded.set_thumbnail(url=member.avatar)
|
||
await bot.get_channel(data["guilds"][f"{member.guild.id}"]["logs"]).send(embed=embeded)
|
||
|
||
def setup(bot):
|
||
bot.add_cog(audioChannelAutomatization(bot)) |