User-install contexts (DMs, group DMs, non-member guilds) now only show
commands that can actually work outside a guild:
- _command_needs_guild() heuristic checks @guild_only, Red privilege
levels (MOD/ADMIN/GUILD_OWNER), and user permission requirements,
walking the parent chain for subcommands.
- Autocomplete pre-filters the candidate pool in user-install contexts
and shows available DM-compatible commands when nothing is typed.
- Command execution blocks guild-only commands early with a clear
ephemeral error instead of letting them fail cryptically.
Also:
- Slash command description changed to 'Shine bright like a Ruby'
- Added [p]userslash setdescription command to change it on the fly
(persisted in Config, applied on cog load)
The file userslash/commands.py shadowed redbot.core.commands when Python
registered the submodule on the parent package, causing:
AttributeError: module 'userslash.commands' has no attribute 'Cog'
Renaming the file to slash_bridge.py avoids the collision entirely.
Also adds a user-install whitelist feature:
- [p]userslash whitelist enable/disable
- [p]userslash whitelist add/remove @user
- [p]userslash whitelist list
- [p]userslash whitelist clear
When enabled, only whitelisted users may use the bot via user-install
(DMs, group DMs, non-member guilds). Guild-installed usage is unaffected.
Replaces OneTrueSlash with full user-install support:
- Single proxy slash command bridges all text commands
- Works in servers, DMs, and group DMs
- REST API patcher sets integration_types & contexts on all global commands
- Owner commands: [p]userslash sync/patch/status
- Fuzzy autocomplete (rapidfuzz)
- Enhanced InterContext/InterMessage for non-guild contexts