@ -37,19 +37,22 @@ $bot = new Zanzara(require(__DIR__ . '/../settings/key.php'), $config);
$bot -> onMessage ( function ( Context $ctx ) {
$bot -> onMessage ( function ( Context $ctx ) {
if ( $members = $ctx -> getMessage () -> getNewChatMembers ()) {
if ( $members = $ctx -> getMessage () -> getNewChatMembers ()) {
// Новый аккаунт в чате
// Новый аккаунт в чате
echo " Обнаружен новый участник в чате " . PHP_EOL ;
$ctx -> sendMessage ( '⚠️ Введите ваш табельный номер для авторизации ', [ 'reply_to_message_id' => $ctx -> getMessage () -> getMessageId ()])
$ctx -> sendMessage ( '⚠️ Введите ваш табельный номер ', [ 'reply_to_message_id' => $ctx -> getMessage () -> getMessageId ()])
-> then ( function ( $message ) use ( $ctx , $members ) {
-> then ( function ( $message ) use ( $ctx , $members ) {
// Инициализация идентификатора сотрудника
// Инициализация идентификатора сотрудника
$id = $members [ 0 ] -> getId ();
$id = $members [ 0 ] -> getId ();
echo " Отправлено сообщение ( { $message -> getMessageId () } ) с запросом ID у сотрудника ( $id ) " . PHP_EOL ;
$ctx -> getGlobalDataItem ( " member_ { $id } _request " )
$ctx -> getGlobalDataItem ( " member_ { $id } _request " )
-> then (
-> then (
function ( $old ) use ( $ctx , $id , $message ) {
function ( $old ) use ( $ctx , $id , $message ) {
$timer = function ( $ctx , $id , $message ) {
$timer = function ( $ctx , $id , $message ) {
$ctx -> setGlobalDataItem ( " member_ { $id } _request " , $message )
$ctx -> setGlobalDataItem ( " member_ { $id } _request " , $message )
-> then ( function () use ( $ctx , $id ) {
-> then ( function () use ( $ctx , $id , $message ) {
echo " Записано сообщение ( { $message -> getMessageId () } ) с запросом ID у сотрудника ( $id ) в сессионное хранилище " . PHP_EOL ;
// Инициализация таймера
// Инициализация таймера
React\Promise\Timer\sleep ( 180 ) -> then (
React\Promise\Timer\sleep ( 180 ) -> then (
@ -62,11 +65,17 @@ $bot->onMessage(function (Context $ctx) {
// Изгнание из чата
// Изгнание из чата
$ctx -> kickChatMember ( $message -> getChat () -> getId (), $id )
$ctx -> kickChatMember ( $message -> getChat () -> getId (), $id )
-> then ( function () use ( $ctx , $id , $message ) {
-> then ( function () use ( $ctx , $id , $message ) {
echo " Сотрудник ( $id ) изгнан из чата ( { $message -> getChat () -> getId () } ) " . PHP_EOL ;
// Удаление сообщения из сессионного хранилища
// Удаление сообщения из сессионного хранилища
$ctx -> deleteGlobalDataItem ( " member_ { $id } _request " );
$ctx -> deleteGlobalDataItem ( " member_ { $id } _request " );
echo " Удалено сообщение ( { $message -> getMessageId () } ?) (member_ { $id } _request) с запросом ID у сотрудника ( $id ) из сессионного хранилища " . PHP_EOL ;
// Удаление сообщения
// Удаление сообщения
$ctx -> deleteMessage ( $message -> getChat () -> getId (), $message -> getMessageId ());
$ctx -> deleteMessage ( $message -> getChat () -> getId (), $message -> getMessageId ());
echo " Удалено сообщение ( { $message -> getMessageId () } ) с запросом ID у сотрудника ( $id ) из чата ( { $message -> getChat () -> getId () } ) " . PHP_EOL ;
});
});
}
}
},
},
@ -75,18 +84,28 @@ $bot->onMessage(function (Context $ctx) {
);
);
}
}
);
);
echo " Инициализирован таймер изгнания сотрудника ( $id ) " . PHP_EOL ;
});
});
};
};
if ( $old ) {
if ( $old ) {
echo " Найдено сообщение ( { $old -> getMessageId () } ) с запросом ID у сотрудника ( $id ) в сессионном хранилище " . PHP_EOL ;
$ctx -> deleteGlobalDataItem ( " member_ { $id } _request " )
$ctx -> deleteGlobalDataItem ( " member_ { $id } _request " )
-> then ( function () use ( $ctx , $id , $message , $timer , $old ) {
-> then ( function () use ( $ctx , $id , $message , $timer , $old ) {
echo " Удалено сообщение ( { $old -> getMessageId () } ?) (member_ { $id } _request) с запросом ID у сотрудника ( $id ) из сессионного хранилища " . PHP_EOL ;
$ctx -> deleteMessage ( $old -> getChat () -> getId (), $old -> getMessageId ())
$ctx -> deleteMessage ( $old -> getChat () -> getId (), $old -> getMessageId ())
-> then ( function () use ( $ctx , $id , $message , $timer ) {
-> then ( function () use ( $ctx , $id , $message , $timer , $old ) {
echo " Удалено сообщение ( { $old -> getMessageId () } ) с запросом ID у сотрудника ( $id ) из чата ( { $old -> getChat () -> getId () } ) " . PHP_EOL ;
$timer ( $ctx , $id , $message );
$timer ( $ctx , $id , $message );
});
});
});
});
} else $timer ( $ctx , $id , $message );
} else {
echo " Н е найдено сообщение с запросом ID у сотрудника ($id ) в сессионном хранилище " . PHP_EOL ;
$timer ( $ctx , $id , $message );
}
}
}
);
);
});
});
@ -122,20 +141,58 @@ $bot->onMessage(function (Context $ctx) {
// Перебор строк
// Перебор строк
if ( $worker === $row -> toArray ()[ 'ID' ]) {
if ( $worker === $row -> toArray ()[ 'ID' ]) {
$ctx -> sendMessage ( " ✅ Авторизован сотрудник: $worker " , [ 'reply_to_message_id' => $message -> getMessageId ()]);
$ctx -> sendMessage ( " ✅ Авторизован сотрудник: $worker " , [ 'reply_to_message_id' => $message -> getMessageId ()])
-> then (
function ( $message ) use ( $ctx , $id ) {
// Инициализация таймера
React\Promise\Timer\sleep ( 10 ) -> then (
function () use ( $ctx , $id , $message ) {
// Удаление сообщения
$ctx -> deleteMessage ( $message -> getChat () -> getId (), $message -> getMessageId ());
echo " Удалено сообщение ( { $message -> getMessageId () } ) с подтверждением авторизации сотрудника ( $id ) в чате ( { $message -> getChat () -> getId () } ) " . PHP_EOL ;
},
function () {
}
);
}
);
echo " Авторизован сотрудник ( $id ) по идентификатору ( $worker ) " . PHP_EOL ;
// Удаление сообщения из сессионного хранилища
// Удаление сообщения из сессионного хранилища
$ctx -> deleteGlobalDataItem ( " member_ { $id } _request " );
$ctx -> deleteGlobalDataItem ( " member_ { $id } _request " );
echo " Удалено сообщение ( { $_message -> getMessageId () } ) с запросом ID у сотрудника ( $id ) из сессионного хранилища после успешной авторизации " . PHP_EOL ;
// Удаление сообщения
// Удаление сообщения
$ctx -> deleteMessage ( $_message -> getChat () -> getId (), $_message -> getMessageId ());
$ctx -> deleteMessage ( $_message -> getChat () -> getId (), $_message -> getMessageId ());
echo " Удалено сообщение ( { $_message -> getMessageId () } ) с запросом ID у сотрудника ( $id ) из чата ( { $_message -> getChat () -> getId () } ) после успешной авторизации " . PHP_EOL ;
return ;
return ;
}
}
}
}
}
}
if ( ! empty ( $worker )) $ctx -> sendMessage ( " ⛔ Н е найден сотрудник: $id " , [ 'reply_to_message_id' => $message -> getMessageId ()]);
if ( ! empty ( $worker )) {
echo " Н е удалось авторизовать сотрудника ($id ) по номеру ( $worker ) " . PHP_EOL ;
$ctx -> sendMessage ( " ⛔ Н е найден сотрудник: $worker " , [ 'reply_to_message_id' => $message -> getMessageId ()])
-> then (
function ( $message ) use ( $ctx , $id ) {
// Инициализация таймера
React\Promise\Timer\sleep ( 10 ) -> then (
function () use ( $ctx , $id , $message ) {
// Удаление сообщения
$ctx -> deleteMessage ( $message -> getChat () -> getId (), $message -> getMessageId ());
echo " Удалено сообщение ( { $message -> getMessageId () } ) с провалом авторизации сотрудника ( $id ) в чате ( { $message -> getChat () -> getId () } ) " . PHP_EOL ;
},
function () {
}
);
}
);
}
}
}
}
}
);
);