Если вы хотите определить, является ли изображение порнографическим - можно посмотреть в сторону разных нейронок.
Наиболее простой вариант - воспользоваться каким-нибудь готовым сервисом типа Azure Cognitive Services:
Detecting adult content
Но (применимо и для SaaS и для self hosted):
1. Это не мгновенно => какое-то время запрещённый контент будет находиться в чате.
А если сообщений много, а картинки большие - время нахождения в чате будет достаточно большим.
(self hosted, как правило, будет медленнее, если используется слабое железо)
2. Это не бесплатно (в зависимости от масштаба может быть дешевле как SaaS, так и self hosted)
3. Возможные ложно-позитивные и ложно-негативные срабатывания. (бесплатные модели имеют меньшую точность)
Так что тебе в любом случае придётся как-то модерировать чат и вводить запреты на спам и отравку каких-либо медиа вообще.