discord / discord-api-docs

Official Discord API Documentation
https://discord.com/developers/docs/intro
Other
5.9k stars 1.25k forks source link

NSFW Slash Commands #2721

Closed ilxlodev closed 3 years ago

ilxlodev commented 3 years ago

Description My suggestion would be to allow marking a slash command as NSFW, such that it is hidden in channels without NSFW enabled. Discord is a place where there are underage children and, although bots can verify that the channel of execution of the slash command is NSFW or not, it is possible that the descriptions of the command suggest a vocabulary or words that, perhaps are not the most suitable for his age.

Example of two commands that should NOT be displayed outside of NSFW channels:

Example #1 Example #2

Why This is Needed As I mentioned before, Discord should continue to be a safe place, where content is suitable for underage children and having tools to hide slash commands from developers would be the perfect solution.

Alternatives Considered None.

Additional Details Some might think something like "Don't add the integration if you know it contains NSFW content", I know and it would be the most logical thing, but, some bots have multiple purposes and can be really useful, but, as I indicated well it has multiple purposes and there is a high probability that it includes NSFW commands.

I also speak in my case, I have a multipurpose bot and it includes adequate features to manage a community, but it also includes spicy features for adults. For example: there is no NSFW channel in my bot's support guild and displaying those names and descriptions could be out of place and annoying for guild members.

viral32111 commented 3 years ago

If I recall correctly I read an issue on here about per-channel permissions for each slash command, wouldn't that cover this? Could just deny certain slash commands from being used in all channels except for ones that are NSFW.

Edit: Found the issue, it was one of the ones in the pin: https://github.com/discord/discord-api-docs/issues/2315#issuecomment-761131184.

ilxlodev commented 3 years ago

If I recall correctly I read an issue on here about per-channel permissions for each slash command, wouldn't that cover this? Could just deny certain slash commands from being used in all channels except for ones that are NSFW.

Edit: Found the issue, it was one of the ones in the pin: #2315 (comment).

That fixes absolutely nothing, since if you want to use another command (ex: /ban) you have to enable the permission to use Slash Commands and that makes them all show (therefore NSFW commands continue to be displayed on non-NSFW channels)

Edit: After reviewing the cited issues, it seems like a partial solution to the problem, but, it is not an effective solution to the problem.

showengineer commented 3 years ago

Per-channel perms could fix it, but it's a hassle. It's way easier to simply have a field called nsfw (optional field maybe?) you can set to 1 when registering a command that indicates whether a command is NSFW or not.

Example when registering a NSFW slash command (whether that be a global or guild-specific command, it shouldn't matter):

{
  "name": "naughty",
  "description": "Send a naughty photo",
  "nsfw": 1,
  "options": []
}
qaisjp commented 3 years ago

This feature request seems like a more specific version of https://github.com/discord/discord-api-docs/issues/2324#issuecomment-761139882.

With that feature, bots can configure themselves to restrict access based on a channel's NSFW status.

The only drawback is that this would require the bot scope, to listen for channel create/update events, and grant/remove command permissions based on channel NSFW-ness.

Alternatively (which wouldn't require the bot scope), you could create a /nsfw command, which would either:

showengineer commented 3 years ago

It's a possibility. Having a separate property has a few advantages though. Marking a command as NSFW with a field:

  1. doesn't require user interaction
  2. allows Discord to hide it from users <18, even if the command is invoked in a public channel or...
  3. allows Discord to only allow use of the command in NSFW channels
  4. allows Discord to add a flair to the command

There is a reason channels must be marked NSFW, and I believe the same should be done for NSFW commands (since not every command name could imply its NSFW nature)

showengineer commented 3 years ago

Another advantage of a having a seperate property for this: Hide the command from users < 18 in direct messages.