TBC Web -Message-Roles

Restrict direct messages and community chat by role, with a friendly custom message instead of a generic error.

Price: $0.00
Buy Now

v1.8.10
Changelog · v1.8.10

1.8.10 — 2026-10-14

🛠 Fixed

  • The app shows your Restriction Message. When this plugin's rules stop a member starting a direct message, the app drew its own refusal and never your wording. A chat opened from a profile told them the member's profile wasn't visible to them, which was the wrong reason, and New Message said member search isn't available. The plugin now sends your Title and Message with those two answers, and the app shows them (core 1.3.25 or later). A field left blank, or still holding the built-in wording, lets the app use its own wording in the member's language. The web portal is unchanged.
  • Several forms on one settings tab each keep their Save in sight. Where a settings tab holds more than one form, each form with unsaved changes now shows its own Save, one above the other, instead of every Save sitting in the same spot on top of the others, and the tab keeps its unsaved dot until every form on it is saved. Every TBC add-on shares one save bar, and WordPress runs the copy from the add-on that loads first, so keep your TBC add-ons current to bring this to every settings page.
  • Folding cards point the reading way in right-to-left languages. With WordPress in a right-to-left language such as Arabic or Hebrew, a closed card's arrow on the settings page pointed right, away from the text. It now points left, and down when the card is open.
  • A link to a card in the plugin's guide opens it, even inside a closed section. A link straight to a card that sits inside one of the guide's folded sections opened the card but left its section shut, so the page showed nothing where the link pointed. Every fold around the card now opens.
  • Fewer database reads on every request. On a site without an object cache such as Redis, each TBC add-on read its licence key and its last licence answer from the database on every page and app request, two reads per add-on. From its next licence check (within a day of the update) WordPress loads both with its other settings, in the one read it already makes. Activating, checking and renewing a licence work as before. Every TBC add-on shares this licence code and WordPress runs the copy from the add-on that loads first, so keep your TBC add-ons current to get the whole saving.

1.8.9 — 2026-10-10

🛠 Fixed

  • "Saved" shows only when a save went through. The save bar on a settings page flashed "Saved" after every save, even one the site refused with an error. It now stays quiet when the page reports a refused save.

1.8.8 — 2026-10-03

🛠 Fixed

  • WordPress's "Check again" finds our updates. Dashboard › Updates › Check again now asks our licence server too, so an update we've just published shows at once instead of up to 12 hours later. Before, only the plugin's License tab Refresh did that.

1.8.7 — 2026-09-23

🔧 Changed

  • "Delete all plugin data" removes the license key too. With that switch on, uninstalling removes everything the plugin stored — the license key, its licenser records and cached checks included — so a reinstall asks for the key again. With it off, nothing is deleted, as before. Every TBC plugin now does the same; before, some kept the key and some did not.

📡 OTA & Internal

  • Comments state the Fluent Messaging rule rather than the release that introduced it.
  • The shared licenser drops hooks and an argument nothing used, and its comments say what it does rather than how it got there.

1.8.6 — 2026-09-05

🔧 Changed

  • The admin explains itself on request, not on sight. The paragraphs printed beside each control — read once, taking room forever — are behind a ? now, the same one on every screen in the suite. Orientation goes behind it; warnings, legal text and anything describing what is currently set stay visible, because a message you have to click to discover is not a warning.

🛠 Fixed

  • The role lists no longer overrule Fluent Community's own messaging rules. When Fluent Community asks "may this member message?", it first reaches its own answer — Fluent Community Pro's who can start a message setting, its points threshold — and hands it to this plugin. The plugin used to throw that answer away and give only its own, so a site set to "moderators only" with an empty role list here was quietly back to everyone. The lists can now only take messaging away from members Fluent Community allows, never hand it to members it refuses. The plugin's own promises are unchanged and still pass regardless: administrators and Fluent Community moderators can always message, and an Always Messageable recipient can always be reached. Sites that use this plugin as their only restriction see no difference.
  • An empty section means "no extra restriction", not "everyone". It follows from the above: with nothing ticked the plugin steps aside and Fluent Community's settings decide alone, instead of forcing an allow. The admin page wording says so.
  • The Message button on a profile honours Always Messageable. Opening a chat from someone's profile names the recipient under a different parameter than the member search does, and the exception only read one of them — so a restricted member trying to reach an always-messageable admin from their profile got an empty compose screen. Both paths now resolve the recipient, each read exactly the way Fluent Community reads it, and only on the routes that actually name one — the two chat routes and the profile page itself — so a stray parameter on any other page or request can no longer stand in for the real recipient.
  • Fluent Community moderators are recognised in every path. The restriction wording swap checked moderator status with a WordPress user object that Fluent Community's helper can't read, so a moderator not on any list was shown the "restricted" copy. The check now uses Fluent Community's own user record.

📡 OTA & Internal

  • The member behind a permission check is resolved once per request, reusing the model Fluent Community already hands the filters instead of looking it up again.
  • The shared admin stylesheet picked up the suite-wide sync from late August (six lines).
  • The Enable checkbox saves through the Settings API like every other field (a hidden "off" value travels with it), retiring the plugin's own save handler and its hand-rolled nonce and capability checks.

1.8.5 — 2026-08-26

🔧 Changed

  • The shared admin library caught up with the rest of the suite. Every TBC plugin ships a byte-identical copy of the same admin CSS, JS and licenser under one handle, and this plugin's copy had fallen behind. It now carries the Hide sensitive control — which covers credentials on screen so a settings page can be screen-shared or screenshotted without publishing them — the one-open-at-a-time accordion, and newest-wins registration, so the copy WordPress actually loads is the most recent one installed rather than whichever plugin happened to register first.
  • The documentation theme re-synced, so this plugin's HTML reference looks like the rest of the suite again.

1.8.4 — 2026-08-01

🔧 Changed

  • The License tab's support contact follows the site's vendor identity. A dev-bundle buyer running managed service for their own clients points it at their own business from the client site's wp-config.php, so their clients see their address rather than ours. Left undefined it stays Two Birds Code, so nothing changes on an ordinary install.

1.8.3 — 2026-07-27

🛠 Fixed

  • Blocked members see your wording again on member search. Fluent Messaging 2.7.5 added a permission check on member search with a denial message of its own. That new message is now mapped like the others, so a member blocked by your role settings reads the explanation you wrote rather than Fluent's generic one.

✨ New

  • A warning when Fluent Community's privacy setting is overriding your roles. As of Fluent Messaging 2.7.5, member search and starting a conversation need both a role you've granted and Fluent Community's members-page privacy setting to allow it — so granting a role is no longer sufficient on its own. The DM roles section now tells you when that's happening, and stays quiet on installs where it isn't.

Note: only the granting direction is affected. A blocked role stays blocked regardless of the privacy setting.

1.8.2 — 2026-07-21

🛠 Fixed

  • The Save bar works without JavaScript, and stops claiming unsaved changes mid-save. The floating Save pill only appeared once JavaScript had run, so a settings form could be left with no reachable submit button; there's now a plain fallback that always works. Separately, the post-submit latch cleared after 4 seconds, which on a slower save re-showed the "unsaved changes" warning while the save was still in flight and swallowed the "Saved" confirmation. That window is now 20 seconds. Shared across the plugin suite.

1.8.1 — 2026-07-14

🛠 Fixed

  • Licensing resilience. A rate limit or brief license-server hiccup no longer disables a licensed site — the plugin runs on its last good check, and only a definitive invalid or expired answer gates features. A revoked key also can't slip back to licensed between checks.

🔧 Changed

  • Licensing hardened — the developer bypass filter is removed, so licensing goes solely through the standard check.

Message Roles · WordPress plugin · web + app

Decide who can start a conversation.

Restrict one-to-one direct messages and community or space chat by WordPress role, Fluent Community role, or space-level role — and show members who do not have access a clear, friendly message instead of a generic error. Lightweight, and free.

3role tiers you can mix — WordPress, Fluent Community, space-level
2surfaces gated separately — direct messages and space chat
Alwaysreachable roles, so members can still get to your staff
0changes until you choose — select nothing and everyone can message

Three parts · one add-on

What you gate, what blocked members see, how it behaves.

Click a tab.

Message Roles › How it works
Choose a view

Two surfaces, gated separately

Direct messages and space chat

Pick the roles allowed to message, mixing the three tiers however your community is organised.

  • Gate direct messages — choose which roles can start a one-to-one conversation
  • Gate community and space chat — choose which roles can post in space chat threads
  • Three role tiers — WordPress roles, Fluent Community roles (Admin, Moderator), and space-level roles (Space Admin, Moderator)
  • “Always messageable” roles — let members reach your staff even when messaging is otherwise locked down
A conversation in the TBC Community AppA conversation in the TBC Community App
The messaging surface these rules govern.

The bit most plugins get wrong

A sentence, not an error

A member who cannot message should be told why in your words. Set your own title and message and it is shown in both the mobile app and the web chat, in place of a generic “not allowed”.

  • Your title and your wording, on both surfaces
  • Leave it blank and sensible built-in wording is used instead
  • No dead ends — pair it with an always-messageable staff role so there is somewhere to go
screenshot coming soonstore-assets/products/tbc-message-roles/blocked-message.webp

Safe by default

Nothing changes until you say so

  • Fail-open — select no roles and everyone can message, exactly as before you installed it
  • Administrators and Fluent Community moderators always bypass the rules, so you cannot lock yourself out
  • One settings page, no configuration overload
screenshot coming soonstore-assets/products/tbc-message-roles/settings-roles.webp

What you get

  • Role gating for direct messages and for space chat, set independently
  • Always-messageable roles for staff and support
  • A custom restriction title and message, shown on web and in the app
  • WordPress, Fluent Community and space-level roles, mixed freely

What you need

  • WordPress 5.8+ and PHP 7.4+
  • Fluent Community with messaging enabled
  • The TBC Community App is optional — the rules apply on the web either way, and in the app when you run one

Pricing

Free.

Message Roles is one of our free tools. Activate a licence key so updates arrive automatically.

Message RolesWordPress plugin · web + appFree
At checkout$0

0 Reviews

Loading reviews...

No reviews yet. Be the first to write a review!

Related Products

TBC - Web - Admin Columns

TBC - Web - Admin Columns

Fluent Community fields, stats, roles and user-meta as sortable, inline-editable columns on the Users list and WooCommerce Orders.

Price: $0.00
TBC - Web - Automations

TBC - Web - Automations

Eighteen Uncanny Automator triggers and actions for Fluent Community — DMs, notifications, follows, points, spaces, posts.

Price: $0.00
TBC - Web - User Switching

TBC - Web - User Switching

Puts the free User Switching plugin's buttons in the Fluent Community portal: Switch user on a member's profile, and Switch back in the header to return to your own account.

Price: $0.00
TBC -App - Better Messages Addon

TBC -App - Better Messages Addon

Hand the app’s messaging to Better Messages — threads, group chats, attachments, reactions, rooms — with push that deep-links to the conversation.

Price: $0.00
TBC App - Community App (Dev Bundle)

TBC App - Community App (Dev Bundle)

The full React Native source plus the build dashboard. Configure your site, drop in your assets, and ship to both stores yourself — no coding required.

From $50.00
TBC App - Community App (Managed)

TBC App - Community App (Managed)

Your own branded community app on iOS and Android — built, published and kept up to date by us, under your accounts. You bring the content and branding; we handle every build and update.

From $33.00