Features
Detailed explanation of Technified Adonis plugin features.
Bidirectional Sync
The plugin syncs moderation actions in both directions.
Dashboard to Game
When you ban/mute someone from the Technified dashboard:
- Next time they try to join, they're checked against the API
- Banned players are kicked with a ban message
- Muted players have Adonis mute applied
- The ban/mute appears in Adonis
:bansand:muteslists
Game to Dashboard
When you use Adonis commands like :ban or :mute:
- The action is detected by the plugin
- It's synced to the Technified API
- Appears in Dashboard > Roblox > Moderation
- Can be managed from the dashboard
Echo Prevention
The plugin prevents infinite sync loops:
- Actions from the API are marked to prevent re-syncing back
- Adonis actions are only synced once
- No duplicate bans or mutes
Permission Sync
Staff permissions from Technified automatically apply in Adonis.
How It Works
- Staff member joins the game
- Plugin queries Technified API for their permissions
- Maps Technified level to Adonis level
- Sets their Adonis admin level
Permission Mapping
| Technified Level | Role Example | Adonis Level | Adonis Rank |
|---|---|---|---|
| 10 | Creator | 900 | Creators |
| 7-9 | Owner/Head | 300 | HeadAdmins |
| 3-6 | Admin/Super | 200 | Admins |
| 1-2 | Moderator | 100 | Moderators |
| 0 | Player | 0 | Players |
Caching
- Permissions are cached for 5 minutes
- Reduces API calls for performance
- Use
:tsyncto force refresh
Coexistence with Adonis Settings
The plugin adds to existing permissions:
- Adonis config permissions still work
- API permissions override when higher
- Group permissions still function
Ban Sync
Full synchronization of bans between Adonis and Technified.
Startup Sync
When the server starts:
- Plugin fetches all active bans from API
- Adds them to Adonis
Settings.Bannedlist - They appear in Adonis
:banscommand - Banned players kicked on join
Real-Time Sync
When players join:
- Ban status checked against API
- If banned, player is kicked immediately
- Ban message shows reason, expiry, and moderator
Ban Message Format
===== BANNED FROM THIS GAME =====
Reason: Exploiting
Expires: 2024-03-20 15:00:00 UTC
Banned by: AdminName
Appeal at: https://technified.xyz
=================================Adonis Ban Integration
When using Adonis :ban:
:ban Player1 1h GriefingThe plugin:
- Detects the ban command
- Parses duration (
1h) and reason (Griefing) - Syncs to Technified API
- Ban appears in dashboard
Shield Sync
Opt-in protection using the global Technified Shield flagged-users list.
How It Works
- A player joins the game
- If
SYNC_SHIELDis enabled, the plugin queries the Shield API with the player's Roblox ID - If the player is flagged, they are kicked immediately with the Shield reason
- If not flagged, the join proceeds normally
Shield checks run independently of per-guild ban sync. A player can be on Shield, banned in your guild, or both.
Enabling Shield
Shield is off by default. Enable it in the plugin config:
SYNC_SHIELD = true,Or toggle Shield Sync in the Installer plugin's Settings step.
See Technified Shield for the full picture of how the list is managed and who can add entries.
Mute Sync
Full synchronization of mutes between Adonis and Technified.
Startup Sync
When the server starts:
- Plugin fetches all active mutes from API
- Adds them to Adonis
Settings.Mutedlist - They appear in Adonis mute commands
Real-Time Sync
When players join:
- Mute status checked against API
- If muted, Adonis mute is applied
- Player cannot chat
Adonis Mute Integration
When using Adonis :mute:
:mute Player1 30m SpammingThe plugin:
- Detects the mute command
- Parses duration and reason
- Syncs to Technified API
- Mute appears in dashboard
Session Tracking
Track when staff are playing your game.
How It Works
- Staff member joins (above minimum level)
- Session start logged to API
- Session appears in Dashboard > Roblox > Staff Activity
- When they leave, session end is logged
- Duration calculated automatically
What's Tracked
- Staff Roblox username and ID
- Game name and Place ID
- Session start time
- Session end time
- Total duration
Minimum Level
Configure which staff to track:
SESSION_MIN_LEVEL = 100, -- Moderators and aboveOptions:
100- All moderators and above200- Admins and above only300- HeadAdmins and above only
Action Logging
Log all moderation and admin commands to Technified.
Logged Moderation Commands
| Command | Category |
|---|---|
| kick | moderation |
| ban | moderation |
| unban | moderation |
| mute | moderation |
| unmute | moderation |
| warn | moderation |
| jail | moderation |
| shutdown | moderation |
Logged Admin Commands
| Command | Category |
|---|---|
| fly, unfly | admin |
| tp, teleport | admin |
| god, ungod | admin |
| speed, walkspeed | admin |
| heal, kill | admin |
| freeze, unfreeze | admin |
| invisible, visible | admin |
| noclip, clip | admin |
| and many more... | admin |
Log Data
Each logged action includes:
- Who performed it (Roblox ID and username)
- What command was used
- Who was targeted (if applicable)
- The reason (if provided)
- Raw command text
- Place ID and Universe ID
- Timestamp
Viewing Logs
Logs appear in Dashboard > Logs > Audit Logs with filter for Roblox actions.
Game Registration
The plugin registers your game with Technified on startup.
Registered Information
- Place ID
- Universe ID
- Game Name
- Creator ID
- Plugin Version
- Server Job ID
Benefits
- Dashboard shows which games are connected
- Filters moderation by game
- Tracks plugin versions across games
Automatic Cleanup
The plugin cleans up when players leave:
- Session ended and logged
- Permission cache cleared
- Echo prevention markers cleared
- Memory freed
This ensures no memory leaks during long server uptimes.
Error Handling
The plugin handles errors gracefully:
API Failures
- Operations continue if API is unavailable
- Errors logged to console
- Stats track error count
- Retries on next opportunity
Missing Players
- Handles players leaving during async operations
- No errors for disconnected players
- Safe cleanup of state
Invalid Data
- JSON parsing protected with pcall
- Handles malformed API responses
- Falls back to defaults when needed