<?php
$_chan = 464946448719675393;
$__types = array(2 => 'Duo', 3 => 'Trio', 4 => 'Squad', 10 => 'Event');
// список ролей для сравнения
$all_roles = array(
0 => array('439151638918463490', 'KD 0.5+'),
1 => array('439151643444117515', 'KD 1+'),
2 => array('439151647990611968', 'KD 1.5+'),
3 => array('439151652440637440', 'KD 2+'),
4 => array('439151656832204810', 'KD 2.5+'),
5 => array('439151661345406986', 'KD 3+'),
6 => array('439151665627660288', 'KD 4+'),
7 => array('439151670019096587', 'KD 5+'),
8 => array('439151674418790420', 'KD 6+'),
9 => array('439151678822940672', 'KD 7+'),
10 => array('463978944492994562', 'ADR 100+'),
11 => array('463979025677680640', 'ADR 150+'),
12 => array('463979073874558976', 'ADR 200+'),
13 => array('463979210323656704', 'ADR 250+'),
14 => array('463979273745596416', 'ADR 300+'),
15 => array('463979319765630977', 'ADR 350+'),
16 => array('463979389579952128', 'ADR 400+'),
17 => array('463979440083435521', 'ADR 450+'),
18 => array('463979478092087299', 'ADR 500+'),
19 => array('464023946384244737', 'PUBG Platinum'),
20 => array('464024203117592587', 'PUBG Gold'),
21 => array('464024254715920384', 'PUBG Silver'),
22 => array('472006005555986452', 'WinRate 5%+'),
23 => array('472006228906606592', 'WinRate 10%+'),
24 => array('472006319998631936', 'WinRate 15%+'),
25 => array('472006417402953738', 'WinRate 25%+'),
26 => array('472006532637130753', 'WinRate 40%+'),
27 => array('472006626505916417', 'WinRate 50%+'),
28 => array('396007345911758858', '*Админ*'),
29 => array('456139455829508097', '**Developer**')
);
// Триггерим соыбтие voice update
if($event -> d -> guild_id == 385204664028889088)
{
if($event -> t == 'VOICE_STATE_UPDATE')
{
// ты хтоаааа? id юзера
$id_user = $event -> d -> member -> user -> id;
// если пустой id_channel - значит человек вышел
if(empty($event -> d -> channel_id))
{
// $f = fopen('dump2.txt', 'w+'); fputs($f, 'воркает детект выхода'.PHP_EOL); fclose($f);
// проверяем, а состоит ли этот юзер в какой-то комнате вообще в принципе
// ибо если нет - это voice state на левую руму и нам на нее наплевать
$q = mysql_query("SELECT * FROM `tmp_rooms_users` WHERE `id_user` = ".$id_user);
if(mysql_num_rows($q) > 0)
{
// теперь узнаем в какой руме он был
$row = mysql_fetch_assoc($q);
// удаляем юзера из этой румы
mysql_query("DELETE FROM `tmp_rooms_users` WHERE `id_user` = ".$id_user);
// проверяем остался ли кто-то в руме вообще
$q2 = mysql_query("SELECT * FROM `tmp_rooms_users` WHERE `id_channel` = ".$row['id_channel']);
// заодно запросим всю инфу о руме, там id_message, он нам в любом случае нужен - либо отредачить сообщение, либо удалить
$q3 = mysql_query("SELECT * FROM `tmp_rooms` WHERE `id_channel` = ".$row['id_channel']);
$room = mysql_fetch_assoc($q3);
if(mysql_num_rows($q2) == 0)
{
// в руме никого не осталось, удаляем комнату и сообщение
$api -> channels($row['id_channel']) -> delete();
$api -> channels($_chan) -> messages($room['id_message']) -> delete();
// и БД чистим
mysql_query("DELETE FROM `tmp_rooms` WHERE `id_channel` = ".$row['id_channel']);
// апдейтим мессагу
updateChannelDescription($api, $_chan);
}
else
{
// в руме кто-то остался.
// циклом перебираем юзеров
// отправляем фикс embed
voiceEmbed($q2, $event, $api, $room, $all_roles, $_chan);
}
}
}
else
{
// это НЕ ВЫХОД из войс чата
// две вариации...
// либо человек ПРИСОЕДИНИЛСЯ
// либо сменил канал
// человек ПРИСОЕДИНИЛСЯ: о нем нет записей в БД
// человек СМЕНИЛ КАНАЛ: есть запись в БД о том что он где-то состоит
$id_room = $event -> d -> channel_id;
// проверим есть ли человек где-то уже
$q = mysql_query("SELECT * FROM `tmp_rooms_users` WHERE `id_user` = ".$id_user);
// значит есть
if(mysql_num_rows($q) > 0)
{
// находим id_channel старой румы
$tmp = mysql_fetch_assoc($q);
$old_id_channel = $tmp['id_channel'];
// получаем инфу о комнате в которую он зашел
$q2 = mysql_query("SELECT * FROM `tmp_rooms` WHERE `id_channel` = ".$id_room);
// если такой комнаты не найдено в tmp rooms - значит вообще левая рума. опустим этот вариант
if(mysql_num_rows($q2) > 0)
{
// узнаем, что это за комната была
// БЫЛА
$q5 = mysql_query("SELECT * FROM `tmp_rooms` WHERE `id_channel` = ".$old_id_channel);
$old_room = mysql_fetch_assoc($q5);
// СТАЛА
$room = mysql_fetch_assoc($q2);
// !!!! снимаем лок с создания новых комнат
mysql_query("DELETE FROM `tmp_rooms_lock` WHERE `id_user` = ".$id_user);
// обновим состав румы - поменяем id комнаты в которой юзер находится
mysql_query("UPDATE `tmp_rooms_users` SET `id_channel` = ".$id_room." WHERE `id_user` = ".$id_user);
// обновим сообщение старой румы
/// сначала получим ее новый состав
$q3 = mysql_query("SELECT * FROM `tmp_rooms_users` WHERE `id_channel` = ".$old_room['id_channel']);
// !!! а вдруг пустая осталась?
if(mysql_num_rows($q3) == 0)
{
// удаляем руму
$api -> channels($old_room['id_channel']) -> delete();
sleep(1);
$api -> channels($_chan) -> messages($old_room['id_message']) -> delete();
// и БД чистим
mysql_query("DELETE FROM `tmp_rooms` WHERE `id_channel` = ".$old_room['id_channel']);
updateChannelDescription($api, $_chan);
}
else
{
// не пустая
voiceEmbed($q3, $event, $api, $old_room, $all_roles, $_chan);
}
// со старой комнатой разобрались. теперь работаем с новой.
// в БД мы юзера уже записали
// состав у нее 100% не пустой
// можем сразу запросить свежий состав и переопределять сообщение
$q4 = mysql_query("SELECT * FROM `tmp_rooms_users` WHERE `id_channel` = ".$id_room);
$new_message = '**'.$__types[$room['num']].'/'.$room['title'].'**'.PHP_EOL.'```diff'.PHP_EOL;
voiceEmbed($q4, $event, $api, $room, $all_roles, $_chan);
}
else
{
//// !!!!!
// 1) запрашиваем был ли где-то юзер
// 2) если был - узнаем где
// 3) правим сообщение (актуализируем состав так сказатб)
// 4) отвязываем юзера
$q = mysql_query("SELECT * FROM `tmp_rooms_users` WHERE `id_user` = ".$id_user);
if(mysql_num_rows($q) > 0)
{
// запись о том что юзер в комнате
$row = mysql_fetch_assoc($q);
// инфа о руме
$room = mysql_fetch_assoc(mysql_query("SELECT * FROM `tmp_rooms` WHERE `id_channel` = ".$row['id_channel']));
// дропаем юзера с румы
mysql_query("DELETE FROM `tmp_rooms_users` WHERE `id_user` = ".$id_user);
// !!!! снимаем лок с создания новых комнат
mysql_query("DELETE FROM `tmp_rooms_lock` WHERE `id_user` = ".$id_user);
/// актуализируем сообщение
// запрашиваем новый состав румы
$q2 = mysql_query("SELECT * FROM `tmp_rooms_users` WHERE `id_channel` = ".$room['id_channel']);
if(mysql_num_rows($q2) > 0)
{
voiceEmbed($q2, $event, $api, $room, $all_roles, $_chan);
}
else
{
$api -> channels($room['id_channel']) -> delete();
sleep(1);
$api -> channels($_chan) -> messages($room['id_message']) -> delete();
// и БД чистим
mysql_query("DELETE FROM `tmp_rooms` WHERE `id_channel` = ".$room['id_channel']);
updateChannelDescription($api, $_chan);
}
}
}
}
else
{
// юзера нет ни в какой комнате ЛИБО он перешел из другой левой румы
// id_room - это куда он зашел
////!!!!!!!!!!!!!!!!!!
// проверяем, а может он ваще в левую комнату зашел???
$q = mysql_query("SELECT * FROM `tmp_rooms` WHERE `id_channel` = ".$id_room);
if(mysql_num_rows($q) > 0)
{
// заносим его в список комнаты
mysql_query("INSERT INTO `tmp_rooms_users`(`id_channel`, `id_user`) VALUES (".$id_room.", ".$id_user.")");
// !!!! снимаем лок с создания новых комнат
mysql_query("DELETE FROM `tmp_rooms_lock` WHERE `id_user` = ".$id_user);
// нужна инфа о комнате
$room = mysql_fetch_assoc($q);
// запрашиваем список юзеров комнаты
$q2 = mysql_query("SELECT * FROM `tmp_rooms_users` WHERE `id_channel` = ".$id_room);
voiceEmbed($q2, $event, $api, $room, $all_roles, $_chan);
}
}
}
}
}