-
Notifications
You must be signed in to change notification settings - Fork 0
/
voice.py
182 lines (123 loc) · 9.15 KB
/
voice.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
import disnake
from disnake.ext import commands
import asyncio
import datetime
class voice(commands.Cog):
def __init__(self, bot):
self.bot = bot
@commands.command(name='voicehub') #здесь все супер, уже отправляется и кнопки есть
async def voicehub(self, inter: disnake.ApplicationCommandInteraction):
embed1 = disnake.Embed(title ='Управление приватной комнатой', description = '**Жми следующие кнопки, чтобы настроить свою комнату**\nИспользовать их можно только когда у тебя есть приватный канал\n\n<:VoiceHideRoom:1106136331714834435> - Скрыть комнату для всех\n<:VoiceChangeName:1106136322411872297> - Изменить название комнаты\n<:VoiceChangeOwner:1106136333862326303> - Передать владение комнатой\n<:VoiceKickUser:1106136326576816198> - Выгнать из комнаты\n<:VoiceGiveRoomAccess:1106136338949996554> - Выдать доступ в комнату\n\n<:VoiceRemoveRoomAccess:1106136317647142972> - Забрать доступ в комнату\n<:VoiceGiveSpeech:1106136311817056317> - Выдать право говорить\n<:VoiceRemoveSpeech:1106136314253950977> - Забрать право говорить\n<:VoiceChangeUserLimit:1106136336924164197> - Изменить лимит пользователей\n<:VoiceOpenForAll:1106136328623620106> - Открыть комнату для всех\n<:VoiceCloseForAll:1106136319291314186> - Закрыть комнату для всех', color=0x4e77eb)
await inter.send(embed = embed1, view = Button_for_voice(self.bot))
@commands.Cog.listener()
async def on_voice_state_update(self, member, before, after):
channel_hub = disnake.utils.get(self.bot.get_all_channels(), id=1105134032959844537)
category = disnake.utils.get(self.bot.get_all_channels(), id=1079792439105159319)
overwrites = {
self.guild.default_role: disnake.PermissionOverwrite(view_channel=True, connect = True, speak = True, use_voice_activation = True),
#inter.guild.role(role): disnake.PermissionOverwrite(read_messages=True, send_messages=True, view_channel=True),
self.guild.me: disnake.PermissionOverwrite(read_messages=True), #<-- настройка прав доступа к каналу
self.user: disnake.PermissionOverwrite(read_messages=True, send_messages=True, view_channel=True)
} # <- тут я получил войс
if before.channel == channel_hub:
print(123)
channel = await inter.guild.create_voice_channel(f'{inter.user.name} - рума', overwrites=overwrites, category=category)#присоединился -> принт123
await asyncio.sleep(2)
await member.move_to(channel)
class Modal1(disnake.ui.Modal):
def __init__(self, bot):
self.bot = bot
#детали окна и его компонентов
components = [
disnake.ui.TextInput(
label="название",
placeholder="",
custom_id="название",
max_length=100,
),
]
super().__init__(
title="Новое название",
custom_id="Новое название",
components=components,
)
# Обработка ответа, после отправки модального окна
async def callback(self, inter: disnake.ModalInteraction):
#здесь должно изменяться название канала
await print(1)
class Modal2(disnake.ui.Modal):
def __init__(self, bot):
self.bot = bot
#детали окна и его компонентов
components = [
disnake.ui.TextInput(
label="лимит(макс.)",
placeholder="Любое число до 99, либо 0 чтобы убрать лимит",
custom_id="лимит",
max_length=100,
),
]
super().__init__(
title="Новый лимит",
custom_id="Новый лимит",
components=components,
)
# Обработка ответа, после отправки модального окна
async def callback(self, inter: disnake.ModalInteraction):
#здесь должен изменяться лимит участников голосового канала
await print(1)
class Button_for_voice(disnake.ui.View):
def __init__(self, bot):
self.bot = bot
super().__init__(timeout=None)
@disnake.ui.button(label='', style=disnake.ButtonStyle.grey, emoji='<:VoiceHideRoom:1106136331714834435>')
async def Hide(self, button: disnake.ui.Button, inter: disnake.Interaction):
#здесь евриван убираем право видеть руму
await print(1)
@disnake.ui.button(label='', style=disnake.ButtonStyle.grey, emoji='<:VoiceChangeName:1106136322411872297>')
async def Name(self, button: disnake.ui.Button, inter: disnake.Interaction):
#здесь высылаем модальное окно с заменой названия
await print(1)
@disnake.ui.button(label='', style=disnake.ButtonStyle.grey, emoji='<:VoiceChangeOwner:1106136333862326303>')
async def Owner(self, button: disnake.ui.Button, inter: disnake.Interaction):
#здесь выпадаюбщее меню с выбором пользователя, чтобы поменять владельца комнаты
await print(1)
@disnake.ui.button(label='', style=disnake.ButtonStyle.grey, emoji='<:VoiceKickUser:1106136326576816198>')
async def Kick(self, button: disnake.ui.Button, inter: disnake.Interaction):
#здесь выпадаюбщее меню с выбором пользователя, чтобы выгнать кого-то из комнаты
await print(1)
@disnake.ui.button(label='', style=disnake.ButtonStyle.grey, emoji='<:VoiceGiveRoomAccess:1106136338949996554>')
async def Give(self, button: disnake.ui.Button, inter: disnake.Interaction):
#здесь выпадаюбщее меню с выбором пользователя, чтобы выдать ему право подключаться
await print(1)
@disnake.ui.button(label='', style=disnake.ButtonStyle.grey, emoji='<:VoiceRemoveRoomAccess:1106136317647142972>')
async def Remove(self, button: disnake.ui.Button, inter: disnake.Interaction):
#здесь выпадаюбщее меню с выбором пользователя, чтобы забрать у кого то право подключаться
await print(1)
@disnake.ui.button(label='', style=disnake.ButtonStyle.grey, emoji='<:VoiceGiveSpeech:1106136311817056317>')
async def MicOn(self, button: disnake.ui.Button, inter: disnake.Interaction):
#здесь выпадаюбщее меню с выбором пользователя, чтобы выдать право говорить
await print(1)
@disnake.ui.button(label='', style=disnake.ButtonStyle.grey, emoji='<:VoiceRemoveSpeech:1106136314253950977>')
async def MicOff(self, button: disnake.ui.Button, inter: disnake.Interaction):
#здесь выпадаюбщее меню с выбором пользователя, чтобы забрать право говорить
await print(1)
@disnake.ui.button(label='', style=disnake.ButtonStyle.grey, emoji='<:VoiceChangeUserLimit:1106136336924164197>')
async def Limit(self, button: disnake.ui.Button, inter: disnake.Interaction):
#здесь модальное окно которое меняет лимит
await print(1)
@disnake.ui.button(label='', style=disnake.ButtonStyle.grey, emoji='<:VoiceOpenForAll:1106136328623620106>')
async def Unlock(self, button: disnake.ui.Button, inter: disnake.Interaction):
#здесь выдать всем возможность подключаться
await print(1)
@disnake.ui.button(label='', style=disnake.ButtonStyle.grey, emoji='<:VoiceCloseForAll:1106136319291314186>')
async def Lock(self, button: disnake.ui.Button, inter: disnake.Interaction):
#здесь забрать у всех возможность подключаться
await print(1)
def setup(bot):
bot.add_cog(voice(bot))
#вопросы:
#загляни в ког тикеты там ивент чтобы после перезапуска все работало, не работает
#загляни в ког compet там все расписано
#загляни в он мембер джойн там что то с бд жаловалось чекни все ли ок?
#а так вроде бы это все