matrix-nsfwbot/README.md

82 lines
3 KiB
Markdown
Raw Normal View History

2024-09-13 11:23:05 +00:00
# nsfwbot for Matrix
`nsfwbot` is a Matrix bot plugin that attempts to detect NSFW (Not Safe For Work) images posted in
Matrix chat rooms. It uses [nsfwdetection](https://github.com/gsarridis/NSFW-Detection-Pytorch),
which includes a small model that can run without a GPU with low resource requirements.
## Features
- **Image Analysis**: Detects and analyses images posted in Matrix chats.
- **Text Message Parsing**: Analyses images embedded in text messages.
- **Configurable Concurrency**: Controls concurrent image processing tasks.
- **Custom Actions**: Configurable actions for detected content, including reporting and redacting messages.
## Requirements
- **Maubot**: Runs within the Maubot framework.
- **Python Dependencies**: `nsfwdetection` and `beautifulsoup4`.
> **Note**: `nsfwdetection` will not run on Alpine Linux. This means the default Maubot Docker
> image will not work. I have built a custom Debian-based Maubot in the
> `ghcr.io/tcpipuk/maubot:debian` Docker image.
## Installation
1. **Use the Custom Maubot Docker Image**:
Replace the official Maubot image with a custom Debian-based image:
```bash
docker pull ghcr.io/tcpipuk/maubot:debian
```
2. a. **Install pre-prepared plugin from [repository releases](https://github.com/tcpipuk/matrix-nsfwbot/releases)**
b. **Clone the Repository**:
```bash
git clone https://github.com/tcpipuk/matrix-nsfwbot
```
Zip the plugin files and upload through the Maubot admin interface. Ensure the plugin is
configured and enabled.
3. **Configure the Plugin**:
See configuration section below for a summary of settings in the Maubot UI.
## Configuration
Edit `base-config.yaml` to set:
- `max_concurrent_jobs`: Number of concurrent jobs to allow.
- `via_servers`: List of servers for `matrix.to` URLs.
- `actions`:
- `ignore_sfw`: Ignore SFW images (default: `true`).
- `redact_nsfw`: Redact NSFW messages (default: `false`).
- `direct_reply`: Reply directly in the same room (default: `false`).
- `report_to_room`: Room ID for reporting (not enabled by default).
> **Note**: This can be a room alias (like `#room:server`) but this is far less efficient,
as the bot will need to find the room ID (like `!room:server`) to send messages.
## Usage
Once installed and configured, `nsfwbot` will automatically analyse images posted in the chat and
reply with a classification result, e.g.
```markdown
mxc://matrix.org/abcd1234 in https://matrix.to/#/!roomid:matrix.org/$eventid?via=matrix.org appears NSFW with score 87.93%
```
If multiple images are detected in a text message:
```markdown
- mxc://matrix.org/abcd1234 in https://matrix.to/#/!roomid:matrix.org/$eventid?via=matrix.org appears SFW with score 2.45%
- mxc://matrix.org/efgh5678 in https://matrix.to/#/!roomid:matrix.org/$eventid?via=matrix.org appears NSFW with score 94.82%
```
## Contributing
Contributions are welcome! Open an issue or submit a pull request on GitHub.
## License
This project is licensed under the AGPLv3 License. See the [LICENSE](LICENSE) file for details.