@@ -47,6 +47,9 @@ This repository's source code is open source under the MIT license. See
4747 dictator references, protected-class slurs, untrusted external links,
4848 suspicious promos, unsolicited invites, URL shorteners, and repeated spam,
4949 including messages from installed bots/apps and webhooks
50+ - media-friendly moderation: normal image uploads, GIFs, stickers, embeds, and
51+ attachment-only messages are allowed, while suspicious text links are still
52+ evaluated
5053- silent Sentinel detection for protected-class hate patterns, self-harm
5154 harassment, scam links, homoglyph domains, misleading markdown links,
5255 new-account bursts, and mention raids
@@ -59,7 +62,7 @@ This repository's source code is open source under the MIT license. See
5962- rules management and rules embed posting
6063- generic embed creation and reusable embed templates
6164- member report, appeal, and ticket flows
62- - optional Bluesky relay with automatic posting to a fixed Discord channel and
65+ - optional Bluesky relay with automatic posting to a configured Discord channel and
6366 moderator-picked reposts for older posts
6467
6568## Setup
@@ -70,31 +73,35 @@ This repository's source code is open source under the MIT license. See
7073 including View Audit Log, Moderate Members, Manage Messages, Kick Members,
7174 Ban Members, Manage Roles, and Manage Channels.
72754 . Copy ` .env.example ` to ` .env ` and fill in ` MEMACT_TOKEN ` .
73- 5 . Install dependencies with ` pip install -r requirements.txt ` .
74- 6 . Run the bot with ` python main.py ` .
75- 7 . Run ` /automod install ` once in Discord to create or refresh native Memact
76+ 5 . If you are not running the current Memact server, set the optional
77+ channel/role ID environment variables listed below so welcome, intro,
78+ ticket, log, join-role, and Bluesky relay behavior points at your server.
79+ 6 . Install dependencies with ` pip install -r requirements.txt ` .
80+ 7 . Run the bot with ` python main.py ` .
81+ 8 . Run ` /automod install ` once in Discord to create or refresh native Memact
7682 Guard rules, including the hate-speech preset.
77- 8 . Use ` /security sentinel_recent ` or ` /security sentinel ` to review silent
83+ 9 . Use ` /security sentinel_recent ` or ` /security sentinel ` to review silent
7884 risk intelligence after the bot has seen real traffic.
7985
8086## Bluesky Relay
8187
8288The Bluesky relay is optional. When enabled, the bot can mirror posts from one
83- public Bluesky account into the fixed Discord channel ` 1490277253949558975 ` .
89+ public Bluesky account into the configured relay channel. Memact's default
90+ relay channel is ` 1490277253949558975 ` , and other servers can override it with
91+ ` MEMACT_BLUESKY_RELAY_CHANNEL_ID ` .
8492
8593### Setup
8694
87951 . Start the bot normally.
88- 2 . Make sure the Discord server contains the text channel with ID
89- ` 1490277253949558975 ` .
96+ 2 . Make sure the Discord server contains the configured relay text channel.
90973 . In Discord, run ` /bluesky setup handle:<account> ` .
91984 . The bot saves the current latest Bluesky post as its sync point and starts
9299 auto-posting only new posts from that moment onward. The relay checks for
93100 new posts every five minutes.
94101
95102### Moderator commands
96103
97- - ` /bluesky view ` : show the selected account, relay status, fixed relay
104+ - ` /bluesky view ` : show the selected account, relay status, configured relay
98105 channel, and last synced post
99106- ` /bluesky sync_now ` : immediately catch up on posts that arrived while the
100107 bot was offline
@@ -118,6 +125,9 @@ In practice:
118125- the bot does not warn members for ordinary profanity or casual keywords
119126- GIFs, all-caps messages, memes, and normal chat are not judged by a custom
120127 keyword engine
128+ - image uploads, GIFs, stickers, embeds, and attachment-only messages are not
129+ violations by themselves; if suspicious or untrusted links appear beside
130+ that media, the links are still evaluated and can be deleted
121131- native Discord AutoMod blocks spam, mention raids, hate-speech slur presets,
122132 and known scam-link patterns before they become moderation cases
123133- Memact's local guard deletes public strong-profanity and offensive-reference
@@ -126,8 +136,9 @@ In practice:
126136- protected-class slurs are hard-blocked locally with punctuation and leetspeak
127137 variants, so targeted racism does not depend only on Discord's native preset
128138- public links use an allowlist-first posture: known safe hosts stay normal,
129- while unknown external links, shorteners, suspicious TLDs, invite spam, and
130- random-looking hosts are treated as spam-risk and logged
139+ ` memact.com ` links stay allowed, while unknown external links, shorteners,
140+ suspicious TLDs, invite spam, and random-looking hosts are treated as
141+ spam-risk and logged
131142- installed bots/apps and webhooks are moderated too, so compromised or spammy
132143 integrations cannot freely post abusive text, invite links, or promo scams
133144- staff-only channels are treated with lighter friction for human moderators,
@@ -194,6 +205,15 @@ Recommended settings:
194205 - ` MEMACT_BACKUP_DIR ` (optional, recommended on persistent storage)
195206 - ` MEMACT_BACKUP_INTERVAL_HOURS ` (optional, default ` 12 ` )
196207 - ` MEMACT_BACKUP_RETENTION ` (optional, default ` 14 ` )
208+ - ` MEMACT_BOT_JOIN_ROLE_ID ` (optional, defaults to Memact's bot role)
209+ - ` MEMACT_MEMBER_JOIN_ROLE_ID ` (optional, defaults to Memact's member role)
210+ - ` MEMACT_ACTION_LOG_CHANNEL_ID ` (optional, defaults to Memact's action log)
211+ - ` MEMACT_WELCOME_CHANNEL_ID ` (optional, defaults to Memact's welcome
212+ channel)
213+ - ` MEMACT_INTRO_CHANNEL_ID ` (optional, defaults to Memact's intro channel)
214+ - ` MEMACT_TICKET_CHANNEL_ID ` (optional, defaults to Memact's ticket channel)
215+ - ` MEMACT_BLUESKY_RELAY_CHANNEL_ID ` (optional, defaults to Memact's Bluesky
216+ relay channel)
1972176 . Start the app and watch the JustRunMy.App logs until the bot prints that it
198218 logged in and synced commands.
1992197 . Run ` /automod install ` after the bot is online if Discord native AutoMod
@@ -205,6 +225,15 @@ Important JustRunMy.App notes:
205225 the optional ` /healthz ` endpoint.
206226- Keep secrets such as ` MEMACT_TOKEN ` in JustRunMy.App environment variables,
207227 not in ` .env ` .
228+ - Server-specific IDs are normal runtime environment variables. Defaults match
229+ the current Memact server, but other servers should configure them explicitly.
230+ - If GitHub Actions is used for deployment, store sensitive deployment values as
231+ GitHub Secrets and inject them into the deployment/runtime environment; the
232+ bot code reads only normal environment variables.
233+ - You can enable Discord permissions for everyone to send images, GIFs,
234+ stickers, and embeds. Memact Guard will leave media-only messages alone while
235+ still filtering scam, invite, shortener, suspicious-domain, promo-link, and
236+ spam links found in message text.
208237- Use the dashboard logs, web shell, and auto-restart controls for debugging
209238 and recovery.
210239- For durable SQLite data, set ` MEMACT_DATABASE ` to a path that lives on
0 commit comments