Discord — популярная платформа для общения и создания сообщества, поэтому важно обеспечить безопасность и удобство работы для всех пользователей. Одним из аспектов поддержания безопасной среды является предотвращение совместного использования или отображения контента Not Safe for Work (NSFW). В этой статье мы рассмотрим различные методы проверки того, содержат ли сообщения чата контент NSFW, с помощью библиотеки Discord.py, а также примеры кода и пояснения.
Метод 1: использование предварительно обученной модели NSFW.
Один подход заключается в использовании предварительно обученной модели обнаружения NSFW. Эти модели обучаются на больших наборах данных изображений NSFW и SFW (Safe for Work) и могут классифицировать изображения на основе их содержания. Вы можете интегрировать такую модель в своего бота Discord.py, используя такие библиотеки, как TensorFlow или PyTorch. Вот пример:
import tensorflow as tf
def is_nsfw_image(image_path):
model = tf.keras.models.load_model('nsfw_model.h5')
image = tf.keras.preprocessing.image.load_img(image_path, target_size=(224, 224))
image = tf.keras.preprocessing.image.img_to_array(image)
image = tf.keras.applications.mobilenet_v2.preprocess_input(image)
image = tf.expand_dims(image, axis=0)
predictions = model.predict(image)
nsfw_score = predictions[0][0]
return nsfw_score >= 0.5
Метод 2: использование внешних API-интерфейсов NSFW
Существуют также внешние API-интерфейсы обнаружения NSFW, которые можно интегрировать в вашего бота Discord. Эти API предоставляют простой способ проанализировать текст или изображения и определить, содержат ли они контент NSFW. Вот пример использования NSFW API от Sightengine:
import requests
def is_nsfw_content(text):
response = requests.get(f"https://api.sightengine.com/1.0/text/check.json?text={text}&models=explicit")
result = response.json()
return result["explicit"]["match"]
# Usage:
is_nsfw_content("Hey, how are you?") # False
is_nsfw_content("Send me some NSFW pictures!") # True
Метод 3: Сопоставление ключевых слов и шаблонов.
Другой простой подход — проверка определенных ключевых слов или шаблонов, связанных с контентом NSFW. Вы можете вести список таких ключевых слов или использовать регулярные выражения для идентификации содержимого NSFW в сообщениях чата. Вот пример:
import re
def contains_nsfw_keywords(message):
nsfw_keywords = ["nsfw", "xxx", "porn", "explicit"]
pattern = re.compile(r'\b(?:%s)\b' % '|'.join(nsfw_keywords), flags=re.IGNORECASE)
return bool(re.search(pattern, message))
# Usage:
contains_nsfw_keywords("I love watching movies!") # False
contains_nsfw_keywords("Check out this NSFW website!") # True
Реализуя один или комбинацию этих методов, вы можете эффективно проверять содержимое NSFW в сообщениях чата Discord.py. Не забудьте учитывать чувствительность обнаружения и настраивать его в соответствии с правилами вашего сообщества. Создание безопасной и приятной среды имеет решающее значение для поддержания здоровья сообщества Discord.