#github-notifications

1 messages ยท Page 25 of 1

chilly siloBOT
#

So I was just browsing on discord when I realized I couldn't click out of someones profile without clicking their profile picture. I'm not sure if it's either a new feature or a bug. Please folow these steps to recreate what I experienced.

  1. First go to the right hand side when you're in a server.
  2. Click on someones name to pop up their profile.
  3. Then see if you can click out of it by clicking the chat.
  4. If not, click other peoples names. This will overlap their profiles.

I am...

chilly siloBOT
#

Description
A field in the command object to hide that command from the list in DMs.

Why This is Needed
Some commands don't make sense in DMs, for example, moderation commands. It would be best if those commands didn't show in the list.

Alternatives Considered
Erroring when the command is used or ignoring it; those would be a worse user experience

Additional Details
Maybe, instead of hiding, showing them at the bottom of the list but disabled and with text like "T...

chilly siloBOT
#

i have this problem also, i made an unconventional command that allows users to upload code in .java files to add to the bot, and yes, i read before i add it, but the bot is open source and i added a way to download .java files also, the bot cant upload any source thats over 8mb in size, the command also allows for storing up to 10mb in other types of files per user, zips are denied due to zip bombs, and sometimes a user uploads a file over 8mb and might want it back, so they cant get it

chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
#

Description
Seemingly wrong documentation for the interaction object for webhook based slash commands

Steps to Reproduce
Verify webhook endpoint, inspect object that discord POST's to your endpoint

Expected Behavior
Matches documentation

Current Behavior
Several required fields marked as required in the documentation are missing and a new user field is added.

Screenshots/Videos
Here is an example object returned:

{
  "id": "",
  "...
chilly siloBOT
#

Sorry for the silence on this for a little bit. We've been debating internally what the right path forward is to support this (as much as I love GraphQL in theory it'd be a bit hard to implement only for this since we don't use it elsewhere).

We've done some thinking, and consulted with library and bot developers, and this is the solution that we have come up with! Forgive the link to yet another gist/issue:

https://gist.github.com/msciotti/b1dabde51ebe2f3e875faf73a7a3509b

We think ...

chilly siloBOT
chilly siloBOT
chilly siloBOT
#

This looks good to me, but is the regular behavior documented? The gateway page documents large_threshold as "value between 50 and 250, total number of members where the gateway will stop sending offline members in the guild member list". Are these numbers still accurate? Isn't there an exception for members with roles?

The "large_threshold" behavior is still correct as documented, this overrides that behavior at the 75k threshold. The exception for members with roles applies to the "l...

chilly siloBOT
#

Description
A setting to hide the bot's slash commands when the bot is offline. While not useful for all types of applications, it would be very useful for some.

Why This is Needed
I have some test bots which have gateway-powered slash commands; they are only online and working sometimes (usually when I'm working on them). When the bots are offline, their slash commands are unusable but they still take up space in the command list.

Alternatives Considered

  • Allowing users...
chilly siloBOT
chilly siloBOT
#

Description

The current state of the MANAGE ROLES permission is very inconsistent with the rest of the permission system. The permission behaves differently depending on whether it is used in an override or role. My proposal is to make a channel equivalent of the ADMINISTRATOR permission instead to solve this problem.

Why This is Needed

The MANAGE ROLES permission in an override acts exactly the same as the ADMINISTRATOR permission on roles. It allows the user t...

chilly siloBOT
#

Description

When trying to use a slash command that has user/channel/group option the command is sent properly ( responds with status code 204) but the interactions endpoint gets null as the data instead of the actual JSON.

Steps to Reproduce

Create a Discord application and set the interactions endpoint URL.
Create a slash command using user/channel/group option.
Send said slash command.

Expected Behavior

Endpoint gets the JSON data of the interaction (slash ...

chilly siloBOT
#

Description
The endpoint for Create Guild Ban, when used with the X-Audit-Log-Reason header, will override the json param reason (for this endpoint) entirely.
I assume that this behavior is intentional, however, when using the Get Guild Bans endpoint for bans registered with the X-Audit-Log-Reason header (or when using both, since reason is ignored when using both) no reason is registered.

Steps to Reproduce
Send a Create Guild Ban call with the X-Audit-Log-Reason head...

chilly siloBOT
#

This is somewhat confusing but correct behavior. The audit log reason implicitly becomes the ban reason if not otherwise specified. We pick the ban reason as the default audit log reason if not otherwise specified - because it's a sensible default. However creating a ban has a reason, and so does creating an audit log entry. Thus why the more specific header wins for the audit log reason, but not the ban reason.

Somewhat odd side effect of how things work. But working as intended.

chilly siloBOT
#

This is somewhat confusing but correct behavior. The audit log reason implicitly becomes the ban reason if not otherwise specified. We pick the ban reason as the default audit log reason if not otherwise specified - because it's a sensible default. However creating a ban has a reason, and so does creating an audit log entry. Thus why the more specific header wins for the audit log reason, but not the ban reason.

Somewhat odd side effect of how things work. But working as intended.

...

chilly siloBOT
chilly siloBOT
chilly siloBOT
#

Hello @jhgg,

currently there is a trend among our members to use these buttons and sometimes to advertise their own Discord servers. My project would automatically warn these users that advertisment is not allowed on my server, but at the moment this endpoint is not available for bots.

Example 1
Example 2
Example 3

Thanks to @advaith1 for pointing out this issue on GitHub, it...

chilly siloBOT
#

I've been hitting this occasionally (usually due to cold starts right now), my personal preference right now would be to somehow ACK the message and then respond with whatever my success message is. That way my end-users know that their command is in the "processing" state.

In general if the timeout was able to be increased (maybe through configuration up to a maximum, but the default being 3 seconds) that would work great for them majority of my use cases. I have a couple other longer ter...

chilly siloBOT
#

Description

It's impossible to send a slash command that has two options - first one of any type, required, and second one of user/channel/role type, optional - if you include both options.

Steps to Reproduce

Create a slash command with two options - first one of any type, required, and second one of user/channel/role type, optional.
Send a slash command using both options.

Expected Behavior

Slash command is sent properly.

Current Behavior

returns error ...

chilly siloBOT
#

Description

The API incorrectly returns an error when trying to send slash commands with 1 or more required options and 1 or more optional options.

Steps to Reproduce

  1. Create or find a slash command with at least 1 required option as well as at least 1 optional option. (any option types)
  2. Send the slash command with the options

Expected Behavior

Slash command gets posted normally with no errors from the API.

Current Behavior

The API responds with ...

chilly siloBOT
chilly siloBOT
#

Description
In my testing guild (ID: 569855591489470485), using a command in a bot that edits the message that was sent doesn't seem to have effect. This doesn't seem to happen in any other guild

Logs

T 2021-02-11 10:56:30,023 hikari.gateway.0: received payload with size 674
    {"t":"MESSAGE_CREATE","s":22,"op":0,"d":{"type":0,"tts":false,"timestamp":"2021-02-11T09:56:29.925000+00:00","referenced_message":null,"pinned":false,"nonce":"809362217001549824","mentions":[],"ment...
chilly siloBOT
chilly siloBOT
#

Description
Currently, premium_since in the guild member structure is marked as an optional field. However, when receiving a GUILD_CREATE event from the gateway, the field is missing from certain guild members; namely, the bot itself. #2044 changed this in the documentation, spurred by the discussion in #1101 (https://github.com/discord/discord-api-docs/issues/1101#issuecomment-529672679) where the assumption was that the lack of the field was due to a backlog of in-memory objects....

chilly siloBOT
#

Description
When specifying an option of type "channel" for a command, channels users don't have view access to are hidden from the suggestions when entering the command, but this is not the case for categories even if the "View Channels" Permission is disabled for the user/role.

Steps to Reproduce

  1. Create a slash command with a required channel type argument
  2. Create a category with with the "View Channels" permission set to forbidden for a non-admin test user and add a few ...
chilly siloBOT
chilly siloBOT
#

Description
Checking applications.commands.update in the OAuth2 URL Generator in the dev portal always leads to a broken URL, as it is now restricted to client credentials grant. It should be removed.

Why This is Needed
Users keep clicking the scope when they shouldn't and end up with a broken URL

Alternatives Considered
Show a warning/error instead of removing the scope, there isn't really a point though

chilly siloBOT
#

Description

Dispatch panicking on every command except --help

~$ dispatch branch list 809017491648806932 
dispatch v1.0.0-rc3-d42fde1
thread 'main' panicked at 'called `Option::unwrap()` on a `None` value', src/libcore/option.rs:347:21
stack backtrace:
   0:     0x55777d9553fb - backtrace::backtrace::libunwind::trace::h034f17449c8f06d2
                               at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.29/src/backtrace/libunwind.rs:88
   ...
chilly siloBOT
#

Had some time to test a bit more on this, and found out the root cause. This can actually be reproduced in any guild. If you are missing the Embed Links permission when trying to send/edit a message (with no content) to show an embed, the REST API won't send a Forbidden 403: 'Missing Permissions' as expected (which is what it sent when you try to send an embed only with the permission disabled).

Curls to reproduce

Editing message with embed when no permission

# Create a...
chilly siloBOT
#

Description

When running slash commands in DMs, the INTERACTION_CREATE event fires once per shard

Steps to Reproduce

  1. Have some slash commands usable in DMs
  2. Create a gateway across multiple shards
  3. Run a slash command

Expected Behavior

Only shard 0 picks up the event

Current Behavior

Every shard receives the event

Screenshots/Videos

![image](https://user-images.githubusercontent.com/5381483/107809216-a1943780-6d62-1...

chilly siloBOT
chilly siloBOT
#

This would be great. Additionally, it would be ideal if test guild channels were not subject to rate limiting. Since tests may be run in parallel, they can easily run into rate-limits. As long as test guilds have a small number of members, increasing the rate limits for messages posted to those guilds shouldn't increase load too much.

@muddyfish I wonder how you deal with this issue. I have two bots, the bot under test, and a bot that simulates user actions, both in the same channel in a t...

chilly siloBOT
chilly siloBOT
#

Description

When fetching the roles from a guild, it would be very useful if the role structure had a "memberCount" property, similar to the guild.memberCount property currently exposed.

Why This is Needed

This is needed so we can avoid fetching all members just to know if a role is used or not. Currently, the only way to know how a role is used / who a role is assigned to, is to fetch the members to check what roles are assigned to them.

Alternatives Considered

...

chilly siloBOT
#

Description

currently when receiving a non-option slash command over the Websocket, it's sending a resolved property filled with member, user, roles and channels data. (tested it with a command that require a argument (optional works too) that works as expected.

It seems to send the data even if you are using it inside a dm with the bot.

Steps to Reproduce

  • create a slash command that does not require a option
  • use the command
  • look at the output .data
  • check fo...
chilly siloBOT
chilly siloBOT
#

Description

Allow interaction tokens to inherit external emoji permissions from either the everyone role or the bot permissions, whichever is more tolerant.

Why This is Needed

Currently, when sending a response to a slash command, assuming you also have a regular bot in the channel, you have two ways of responding to that command (ignoring any manage webhooks you may have as that probably won't change the outcome too much).

  1. Using the interaction token
  2. Using ...
chilly siloBOT
#

I can confirm I am getting this same issue, only i get it with required options so I think any command has the ability to leak random user/member data not just the ones we both listed

I have blocked out the random users info to avoid invading their privacy (not to say that that info isn't already public anyway)

attached is what I get from running this command
below is the command object I am running

{
   "data": {
      "name": "ban",
      "description": "Removes a use...
chilly siloBOT
#

For certain command patterns like dice-rolling, it's common to implement parsing bot-side. e.g. /roll 4d8 + 2. I suppose a workaround could be to pack these into an "expression" argument, but that could be unclear to users.

Perhaps an alternative design could be an implicit, unnamed string argument that command-implementers may parse on their end:
e.g.
/roll label: stealth gmOnly: false SomeExpressionTextThatLandsInUnnamedDefaultArgument
A more real world example:
`/roll label: s...

chilly siloBOT
chilly siloBOT
#

Description

Slash command ACK/ACKWithSource doesn't block using of data field, resulting sending a message... while having response type which denies that.

Steps to Reproduce

  • Create an application (slash) command
  • Setup an handler for it
  • Respond to the slash command with ACK/ACKWithSource types while also having some payload in data field.

Expected Behavior

Blocking the data field, maybe resulting a error.

Current Behavior

Sending...

chilly siloBOT
#

Description
Channels received as part of a Guild object sometimes lack the guild_id field. While reasonable once you think about it, it's not documented, and can be quite unexpected when dealing with something like caching logic.

The field is not marked as containing partial objects, and at first glance I believe most people would assume that the field would be included for a guild channel - regardless of whether it's part of a guild object itself when first received. Of course...

chilly siloBOT
chilly siloBOT
#

@GamingGeek there's a few states:

When the interaction is still being sent to Discord's servers, the source message is only visible to the invoking user.

When the third-party server responds, if it decides to respond ephemerally, the message will stay visible to only the user and well add the blue background.

If it decides to respond publicly, the message will appear in chat for everyone.

We didn't add the blue ephemeral background for the initial "bot has not yet responded" state...

#

@GamingGeek there's a few states:

When the interaction is still being sent to Discord's servers, the source message is only visible to the invoking user.

When the third-party server responds, if it decides to respond ephemerally, the message will stay visible to only the user and we'll add the blue background.

If it decides to respond publicly, the message will appear in chat for everyone.

We didn't add the blue ephemeral background for the initial "bot has not y...

#

Hey all! Wanted to inform you about a change for servers with a lot of bots in them.

Discord allows for a maximum of 250 roles in a guild. Adding a bot to a server gives that bot a managed role in the server with the requested permissions.

Currently, that managed role ignores our maximum number of guild roles when the bot is added. This is an oversight in our infrastructure that we will be correcting:

  • Managed roles from bots will respect the 250 guild role cap
  • If you are tryi...
chilly siloBOT
#

Description

Discord exit channel event missing

Steps to Reproduce

  1. Go to our large study server https://discord.com/invite/EHStrAyY
  2. Study, enter, and exit channel and do voice status changes frequently around noon US EST time.

Expected Behavior
Discord (discord.py) should invoke event upon users' entering and exiting channels

Current Behavior
Each day, about 1 out of 800 users is drawn to have missing events.

Screenshots/Videos
See https://gith...

chilly siloBOT
#

This isn't enough information to go on. It is entirely possible your bot is not receiving the exit events because it's disconnected from the server while those events occur.

If that's the case and the bot re-connects, it would receive a new set of voice_states on the GUILD_CREATE message for the given server, which will have the list of current voice states that will then be kept up-to-date until the connection to the given guild is restarted.

I recommend you reconcile whatever database...

chilly siloBOT
#

Thank you for the helpful information!

Our server becomes "discord server unavailable due to temporary outage" every day around US EST noon. The only unofficial posts I saw online say it's because we have too many members online. However, I believe we only have 800 or so people on our channels.

Could you kindly point me to the official documentation regarding unavailability? I hope to fix that issue but it seems like changing things like the bitrate won't ...

chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
#

Any chance of "bot name is thinking" being customisable? whether returned in the deferred response, or set globally on the bot.

@MeguminSama you could technically customize this yourself but not doing a deferred message and sending an immediate response that looks like a loading message. Customizing that system string is not something planned.

I'm open to other, less anthropomorphized wording though. "Waiting on <Bot>", or something else

#

Just to be clear, with these changes there is no way to respond without a channel message correct? E.g. Some of my commands currently use ACK with source and send a message with the bot separately that gets deleted next time the command is used. This is done mainly because these messages are embeds that have minor changes with each usage and clutter up the history. However, that history is still nice / important to see for some commands.
I can think of a workaround for now - suppressing embe...

#

@ckohen that is correct. There always has to be both a source message and a bot response message, but you can choose if they are public or ephemeral.

We designed this for what we believe is the 99% use case of command --> reply, but are aware that there are other cases where you might not need a separate reply (our remake of Airhorn bot is this way currently, actually). For now we're going to err more on the side of standardization and wait and see what everyone does once this thing is lau...

chilly siloBOT
chilly siloBOT
#

Description

When patching a webhook message with an embed to have either content: null or content: "", the content is unchanged.

Steps to Reproduce

curl https://discord.com/api/v7/webhooks/.../.../messages/... -H "Authorization: ..."  -H "Content-Type: application/json" -X PATCH --data '{"content": null}'

Expected Behavior

The message content empties

Current Behavior

The message remains unchanged but gains an edited mark

chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
#

I hope that eventually a permission system will be implemented, where for each command/subcommand I can say what permissions are required from roles/@everyone. Unless I missed something. Because its pretty eh when normal users can see commands like /ban and I have to check on code side if member has BAN permission. Excluding them from popup menu in first place would be nicer.

chilly siloBOT
#

Hey hi hello. Back with your not-quite-weekly update about what's been going on!

New Features

  • Support for slash commands in DMs!
  • A new "Use Slash Commands" permission has been rolled out, allowing you to turn off non-built-in commands on a guild or channel
  • Server-side validation is complete, deployed on desktop, and rolling out on mobile
  • Check out the new UI changes coming ๐Ÿ‘€ https://github.com/discord/discord-api-docs/pull/2615

Improvements

  • We've raised some l...
chilly siloBOT
chilly siloBOT
chilly siloBOT
#

Description
I know the resolved object is still new but I think this is relevant to bring up!
In the new resolved object and more specifically the resolved.member objects i would like to see a resolved.member[ID].permissions

Why This is Needed
this is to help those bots that use the permissions data in place of roles for running commands on other users, like the example below if I try to run a command on the user/member named Cooper I don't want to ban said user if they a...

#

Description

In the desktop client

Steps to Reproduce

  1. Have a command:
[
  {
    "name": "search",
    "description": "Search for things",
    "options": [
      {
        "type": 3,
        "name": "terms",
        "description": "What are you searching for?",
        "required": false
      },
      {
        "type": 5,
        "name": "exact",
        "description": "Only show results matching your search exactly",
        "required": fal...
#

Description

In the desktop client

Steps to Reproduce

  1. Have a command:
[
  {
    "name": "search",
    "description": "Search for things",
    "options": [
      {
        "type": 3,
        "name": "terms",
        "description": "What are you searching for?",
        "required": false
      },
      {
        "type": 5,
        "name": "exact",
        "description": "Only show results matching your search exactly",
        "required": fal...
chilly siloBOT
#

Get Outlook for Androidhttps://aka.ms/ghei36


From: mzrtamp notifications@github.com
Sent: Thursday, February 18, 2021, 8:20 PM
To: discord/discord-api-docs
Cc: Subscribed
Subject: Re: [discord/discord-api-docs] Changes to interaction responses and flags (#2615)

@mzrtamp approved this pull request.

All lookin' good, waiting for incoming commits

โ€”
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it o...

chilly siloBOT
#

Hello to all Discord developers. I'm glad to know that they are concerned with the users' experience.

However, it is important to note that there are more benefits than harm in exposing this data, after all, if the problem is to induce the user to boost the server, this problem already exists. If a server owner really wants to, he/she can try using other methods (like a wacky crawler that uses the standard automated messaging), or else do everything manually. So personally it seems to me th...

chilly siloBOT
#

How would this work for (the bot) uploading an attachment in the response? Currently, its ack -> followup and attachments can be uploaded in the followup, but uploading attachments probably won't be possible when editing the initial response.

@A5rocks pointed out on Discord that the "thinking" message can probably be removed with the Delete Original Interaction Response endpoint; this would be useful for commands where the bot doesn't send a response or doesn't want to show the command sou...

chilly siloBOT
#

I believe that I addressed most of the issues listed here in this thread. I do like to say thanks for the feedback and for your patience for me to address them.
The main changes that I want to highlight have been changes to the rate limiter. I'm also currently updating the library to support v8's new features. I have brought over these changes to both the develop and v8 update branches.

Change Log:

https://github.com/yourWaifu/sleepy-discord/compare/61d9c6f..ac4c912

Rate limiter ...

chilly siloBOT
chilly siloBOT
chilly siloBOT
#

Description

This feature already existed in the past and was removed (not sure if unintentionally) in the last few months. Like with identify OAuth2 scope, you were able to redirect a user after inviting a bot to a specific (trusted) uri.

Why This is Needed

This feature allows developers to redirect a user either to a get-started page or for bots with web interfaces back to their web interface to start configuring the bot.

Alternatives Considered

This feature might...

chilly siloBOT
#

Description

When I make a GET request to /api/v6/guilds/$GUILD_ID/members, I get back {:message=>"Missing Access", :code=>50001}. The browser app tells me via a top banner that email verification is required. I complete email verification successfully, but get the same error on the next request to that endpoint.

Steps to Reproduce

Make a GET request to /api/v6/guilds/$GUILD_ID/members with authorization token set.

Expected Behavior

I'm not sure of the exact da...

chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
#

Here's a fuller video just now showing the bug I reported as still very much in existence. When membership screening is enabled a guild join returns a 204 no content (same as if the user already a member), but when disabled the same request returns a 201 with member object.

https://user-images.githubusercontent.com/24899023/108605107-0591ae00-73aa-11eb-8a23-0d9633789b52.mp4

chilly siloBOT
#

Description
Slash commands for specific users.

Why This is Needed
Some commands could be hidden from everyone except server admins and moderators

Alternatives Considered

  • Check for privileges on the server
  • When Update or Add the command
    {
    "name": "admin",
    "description": "admin description",
    "users": [...(user ids)],
    "type": 3,
    }...

Additional Details
For example: kick, ban commands etc,

chilly siloBOT
chilly siloBOT
chilly siloBOT
#

Would be nice if we had a count of the number of users with tracking enabled.

That will cause nagging by mods and admins.

As well as being a privacy leakage in itself, as on small servers you could deduce who does and does not want to be tracked...you're right that this isn't the right way to solve it.

My solution to this would simply be to clarify in the docs that insights will be available upon hitting 500 users with tracking enabled and disable the analytics tab in the se...

chilly siloBOT
chilly siloBOT
#
  • in JSON they are objects, not dicts
  • the user and role objects are not partial
  • would be good to mention which fields are provided
    • the member object is missing user, deaf, and mute
    • partial channel only has id, name, type and permissions (the invoking member's permissions in the channel including overwrites - this should be added to the channel struct)

see https://gist.github.com/msciotti/b1dabde51ebe2f3e875faf73a7a3509b

Thanks for corrections, I've just add...

chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
#

I've just thought of something concerning. How will this roll out? It's an API change that depends on a client change, will their be an overlap period? For example, many of my commands use an ACK and then send a message using a bot, most of this can be cleaned up with PATCH original, however, if the UI is different across devices, I would want to make sure it still provides all the feedback it currently does.

chilly siloBOT
#

Description

Should be at the top of the list but instead ends up at the bottom.
Edits with the same position move it to the top.

Steps to Reproduce

  1. Set position to 0 when creating a new channel.

Expected Behavior

The newly created channel is first on the list (/ category).

Current Behavior

The newly created text channel is last on the list.

This is contrary to the result when editing a channel to position 0.

chilly siloBOT
chilly siloBOT
chilly siloBOT
#

Description

Add an option in server settings > integrations to remove the slash commands of an application without removing any bots or webhooks as well.

Slash commands can currently only be removed from a guild by removing the whole application, which also removes any related bot account and webhooks, while bots and webhooks can be kicked/removed individually.

Why This is Needed

Sometimes you only want to remove the slash commands of an application while keeping the b...

chilly siloBOT
chilly siloBOT
#

When an app is assigned to a team and tries to specify scopes other than 'identify' in the OAuth2 Client Credentials flow when requesting a token, HTTP 400 is returned with the following body:

{"error": "invalid_scope", "error_description": "The requested scope is invalid, unknown, or malformed."}

Create an app. Assign it to a team. Using the client credentials flow using the client_id and client_secret, try to request a token while specifying scopes other than/in addition t...

chilly siloBOT
chilly siloBOT
#

Teams can't, but the apps that the teams build can. The client credentials flow is asking for authorization for the application itself, not the team. How could, for example, a Guild Slash Command be created by an app if it can't dynamically identify which guild it's in?

An app not on a team can access all scopes using the client credentials flow because it's an application and is requesting access as an application (I was actually surprised when my application returned my user details wh...

#

uh, the entire point of client credentials grant (with the exception of applications.commands.update now, although that used to give access to all the owner's bots' slash commands) is to authorize the application's owner, as the docs say:

The client credential flow is a quick and easy way for bot developers to get their own bearer tokens for testing purposes

The OAuth2 protocol as a whole is for authorizing users so I don't see what else you could expect it to do

chilly siloBOT
#

The OAuth2 protocol as a whole is for authorizing users so I don't see what else you could expect it to do

...except for the client credentials flow which is explicitly used when a client is

requesting access to the protected resources under its control

and not on behalf of a user.

https://tools.ietf.org/html/rfc6749#section-4.4
https://oauth.net/2/grant-types/client-credentials/

Aside from protocol implementations, the documentation specifically mentions using the cli...

#

so what would you expect client credentials grant to do for email, connection or guilds.join for apps in teams?? since when the app is owned by a user, those (in client credentials grant) give information about the application's owner.

as I said earlier, applications.commands.update (which appears to be your example) can be used by applications in teams, but that is the only OAuth2 scope which gives access to the application instead of a user or guild.

chilly siloBOT
#

as I said earlier, applications.commands.update (which appears to be your example) can be used by applications in teams, but that is the only OAuth2 scope which gives access to the application instead of a user or guild.

there is no actual functionality which apps in teams do not have currently

I think it's safe to assume the Discord API's OAuth implementation isn't going to be overhauled to treat applications as bot users are treated now even if that would be the more c...

chilly siloBOT
#

Description
Interactions with slash-commands on mobile devices invoke old-formatted interaction objects (without "resolved" field in InteractionData and without "type" field in InteractionDataOption)

Steps to Reproduce

  • Register a command with at least 1 option
  • Invoke it from a mobile device

Expected Behavior
The app receives a usual Interaction object

Current Behavior
The app receives a deprecated Interaction object
InteractionData object misses "resolved" f...

chilly siloBOT
chilly siloBOT
chilly siloBOT
#

Description
My discord bot is kick from a server called None every day about 4:00 PM and also each time I restart it. You can see the servers logs here. I know another bot it is kick from a server called Undefined (owner : erreur#0000), every day too you can see it's servers logs here.

Go on the servers logs invites I put upper, and see by your eyes.

Screenshots/Videos
__My bot : __
![image](...

chilly siloBOT
chilly siloBOT
chilly siloBOT
#

Description
Running a slash command sends an empty message before eventually sending the actual message the application responded with

Steps to Reproduce

  • Use a slash command (likely needs to be one that attempts to respond with a message, but I don't have any that don't to test with)

Expected Behavior

No empty message would be sent. It would just show the applications response

Current Behavior

An empty message is sent before or after the actual response fr...

#

I believe that this issue is causing the Discord app on my phone to crash sometimes.
I was chatting in discord server 1 while someone in discord server 2 used a / command causing my discord app to crash.

I talked with them and we were not able to reproduce the crash itself, but the Discord app was timing out (no messages were sent / received anymore) and after a few seconds it connected again and all missed messages were received at once.

Then another crash happened while OP was using ...

chilly siloBOT
chilly siloBOT
#

Hello,

This patch updates the Intro doc to reference /slash commands instead of !bang commands, now that Discord supports custom slash commands. I've also linked to that documentation for good measure.

I did a quick check, and didn't find any similar references:

$ rg -o '.{0,4}!\w.{0,4}'
docs/Intro.md
15:wn `!wumpu

docs/Reference.md
237:| <@!USER_
237:| <@!80351

docs/game_sdk/Overlay.md
37:if (!overl

docs/interactions/Slash_Commands.md
332:if (!isVer

docs/ga...
chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
#

In the next week, a bug fix will be going out to address this issue where PUT requests to /guilds/{guild.id}/members/{user.id} for guilds with membership screening-enabled will return a 204 instead if a 201.

Previous behavior before this fix

If members were added to guilds with membership-screening enabled, the API would return a 204 NO CONTENT.

Behavior after this fix goes out

The API will return a `201 CREATED...

chilly siloBOT
#

Description
When you request to add a custom emoji reaction, it seems to unnecessarily require you to send the reaction in a name:id format. Understandable at first, but the thing is, you can use any name - as long as the ID is correct - and the reaction request will be resolved as normal and the reaction name will be normal to the client also. Requesting to react with the emoji identifier h:803797562594951178, not-an-emoji:803797562594951178 and `discord-lookin-kinda-cool:80379...

chilly siloBOT
#

without getting into technical specifics, internally emojis are keyed off of name and/or id. we used to do optimizations on this route by relying on the emoji name as a source of truth for certain requests when specified alongside of the id. while we eventually stopped allowing arbitrary names to be passed along, we still keep the same api path. this is not likely to change, and we recommend still passing the correct emoji name to prevent your request from breaking down the road.

chilly siloBOT
#

About Ephermeral messages: I think it would still be beneficial to keep the "Only you can see this" somewhere in the message, most non-tech users wouldn't be able to figure out what the blue background means without reading the docs, which can lead to annoying/frustrating situations of

  • User runs a command that replies with a ephemeral messages
  • User says to his friend "hey look at this!"
  • Friend says "I'm not seeing anything"
  • User says "stop being dumb the message is right here!...
#

I think if you want an argument that could either be a guild id or a channel id, or a role id or an arbitrary string, that is probably less likely?

While not likely, I do have some use cases for this: Image Manipulation commands.

Users can use:
/imagemanipulation user_mention_here (will use the user's avatar)
/imagemanipulation user_id_here (will use the user's avatar)
/imagemanipulation link_here (will use the link image)
`/imagemanipulation lori_ameno...

chilly siloBOT
#

Would this fix do anything about integration roles mentioned in #2479 ? I understand pending being set to false when the endpoint is used with specific roles, which addresses part of that issue, however it still doesn't make sense that an integration like twitch bypasses membership screening without any way to change it.

We're going to keep the behavior consistent. So, both bots and integrations like Twitch will allow users to bypass membership screening if they are granted a role when t...

chilly siloBOT
chilly siloBOT
#
jb3

Description

Typing events are not delivered to a bot in a large guild (150k+ in this case) while the guild typing event is enabled. It's worth noting that the typing events behave as expected in the client with no flaws.

Steps to Reproduce

It's a bit unclear, since this behaviour arose with no variable changes from us other than guild growth, however a rough idea is:

  1. Have a bot in a large guild
  2. Subscribe to typing events
  3. Observe no typing events being received
    ...
chilly siloBOT
chilly siloBOT
chilly siloBOT
#

It looks like there's a couple issues:

  1. your python script does not actually succeed at patching (it's getting a 400). this is because you're patching the same name, which already exists.
  2. the false-y value for options was not propagating to our storage layer properly.

I've fixed both of these issues, and they will be out in the next api release.

chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
#

Description

It would be great if there was a reliable way to tell if any given event (no matter the intended recipient) actually happened in the last few minutes. This could be done by sending the event or its hash back to Discord.

Why This is Needed

A realistic use case for this would be if events were sent from a bot to an external service that would perform impure actions based on the event. The service could easily be exploited if clients sent invalid events, causing it t...

chilly siloBOT
chilly siloBOT
#

The service could easily be exploited if clients sent invalid events, causing it to do something even though the event was 'fake'.

If this is regarding Slash Commands, there is already a way in place to handle this: https://discord.com/developers/docs/interactions/slash-commands#security-and-authorization

If you are talking about stuff like gateway events, you should not be relying a third-party service's word that the events actually happened.

Use Discord's gateway and respond to ...

chilly siloBOT
#

If this is regarding Slash Commands, there is already a way to handle this: https://discord.com/developers/docs/interactions/slash-commands#security-and-authorization

I wasn't actually aware of that; thanks!

Otherwise, you risk that third-party service using faked events to take control of your bot; i.e. faking a !eval command coming from you telling it to delete your entire database.

This is why a way to validate gateway events would be useful for certain architectures. To name ...

#

Description
The string option should allow multiline strings to be sent.

Why This is Needed
One use case would be an embed command. The description option would benefit from multiline strings. Otherwise, you have to send one line and then add.

Alternatives Considered
I'm not sure of any alternative other than the one line at a time method mentioned above.

Additional Details
N/A

chilly siloBOT
chilly siloBOT
chilly siloBOT
#

Description
It would be an excellent feature if you could set certain slash commands to certain channels.

Why This is Needed
For example, if I have a pokemon battle bot, I want to have a /createroom command in the matchmaking channel, and /usemove in a battle channel, but it would be confusing to have each of those in every channel.

Alternatives Considered
N/A

Additional Details
This should be implemented both user-side and in the API.

#

Description
It would be an excellent feature if you could set certain slash commands to certain channels.

Why This is Needed
For example, if I have a pokemon battle bot, I want to have a /createroom command in the matchmaking channel, and /usemove in a battle channel, but it would be confusing to have each of those in every channel.

Alternatives Considered
N/A

Additional Details
This should be implemented both user-side and in the API.

chilly siloBOT
#

Since my last comment was so disliked in such a short amount of time, here's two other suggestions:

  1. Bump the bot max upload size to 50mb. This is the same max upload size as Nitro Classic. While this doesn't solve the entire issue for Nitro users, this does help the Nitro Classic group. In reality, who uploads 100mb files? The only real answer I can think of is just uploading game ISO's.
  2. Bot file upload quota. Each bot gets 10GB of file uploads per guild. If the guild is boosted, so...
chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
#

Description

A simple api endpoint to get a list of all the rules a server has with membership screening.

Why This is Needed

Once the users see the rules with membership screening, moderators often need to remind users of a rule. Allowing bots to view the same global editable rule list for the server.

It makes moderation easy, for a single set of editable rules is much easier than updating multiple lists.

Alternatives Considered

I can't think of an elegant s...

chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
#

I am not very sure if this is a bug or not, but i tried everything and nothing worked, so I'm starting to think that this really is a bug. If it's not, I would love any type of help on this problem.

So what I'm trying to do is I'm creating some kind of dashboard for my bot and I want to get the current guilds roles. When I try to do that, I get {'message': '401: Unauthorized', 'code': 0} as response. I tried everything and looked at multiple questions as well as issues on github

chilly siloBOT
chilly siloBOT
#

Description

Error 20026 message is inaccurate and undocumented

Steps to Reproduce

One of my users reported this after kicking too many members. Spam the API to reproduce.

Expected Behavior

Instructions should be consistent with the options in the T&S form (see screenshot). Error message should be documented on opcodes and status codes page.

Current Behavior

Error 20026 says:

... selecting "Appeal an Action Trust and Safety took on my bot" as the...

chilly siloBOT
#

I've just thought of something concerning. How will this roll out? It's an API change that depends on a client change, will their be an overlap period? For example, many of my commands use an ACK and then send a message using a bot, most of this can be cleaned up with PATCH original, however, if the UI is different across devices, I would want to make sure it still provides all the feedback it currently does.

That's why the old response types are deprecated, and not deleted. Your functio...

#

So, with some changes to messages and interactions in https://github.com/discord/discord-api-docs/pull/2615, this "source message" concept is going away. And, some interaction metadata is sent on the message object that you'd receive in a message create.

So, you could:

  1. Receive an interaction
  2. Respond to it, noting it's unique id
  3. Listen for MESSAGE_CREATE events on the gateway with the matching ID

Since deleting the original source message isn't a thing (they're now all on...

#

Coming back to this after what, funny enough, was a long discussion. Not months long, but long.

This is working as intended, though I also don't like it. That string you're referencing is the raw value being sent to our servers. We would actually have to do some additional fetching of command data on the server to match value back to name and send it to our clients. Closing this for now, but tracking internally.

#

That's why the old response types are deprecated, and not deleted. Your functionality still works, it might just look weird with an infinite loading state until you swap/change it. These frontend changes are deployed on all our clients, but the API feature flag will flip next week (we need time for changes to propagate)

I've seen the client side changes and the infinite loading state isn't the worst for the brief period of overlap! My worries about clients were actually unnecessary since...

#

Would that mean that the interaction id received with the INTERACTION_CREATE payload is now the same as the message id of the response message? Or am I misunderstanding that.

Also, I still believe the GET endpoint would be necessary, as you will get the message object when using type 5 inherently by using the PATCH endpoint to finish your response, but when responding directly, there's no way to achieve this without a bot.

I also assume PATCH would no longer work after the 15 minute e...

#

I appreciate the issue, but we will not be doing this. Your use cases are valid, but arguably not common. I think if you really want the utmost flexibility and Discord to just get out of the way, you can just use a single string argument and instruct your users on how to do it.

It's not really a matter of storage on our end. We spend plenty of money on infrastructure as is, though we do want to make sure we have sane limits so that people don't DDOS us by registering Slash Commands that ar...

chilly siloBOT
#

Description

The current behaviour of slash commands over the gateway is to send it to the shard that is appropriate for each guild. I've been informed in ddevs that if the bot is not present in that server, the interaction will fail instantly [(Message Link)](#788586647142793246 message). This feature request proposes that the interaction is sent to the shard that the guild would be on.

Why This is Needed

The cur...

chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
#

Description

Right now there are 3 different representations of timestamps in API:

  • ISO8601 timestamp (Guilds, Channels, Templates, Invites, etc) - most used
  • UNIX timestamp in seconds (Activities)
  • UNIX timestamp in milliseconds (Activity Timestamps)

Usually, programming language and/or library has single built-in or user-defined type for representing absolute time which is reasonable and convenient for end users.
Since discord sends data with same semantics in diff...

chilly siloBOT
chilly siloBOT
chilly siloBOT
#

Description

An endpoint which returns if you have a bot/slash command access given a guild id.

Why This is Needed

When determining if a bot has access to slash commands in a server with /applications/.../guilds/.../commands, you get a 403 if you do not, or a 200 if you do.

This works fine until you consider that most guilds will not have slash commands enabled for a bot, so most responses will be 403s. If you want to detect this in say your help command so you can sugges...

chilly siloBOT
#

Description
When using a slash command, it appears that the 'type' property is missing from the options when the slash command is sent from mobile. It appears correctly when sent from desktop.
See in the screenshot below the diff, with mobile on left and desktop on right:

Steps to Reproduce
Set up a slash command and use the command on discord desktop and then on discord mobile. Compare the 'data' section of the resulting gateway INTERACTION_CREATE events.

**Expected Beha...

chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
#

Description

It should be possible to set a slash command as "private", which would prevent the arguments from being broadcasted in chat.

Why This is Needed

Would be useful for bots with authentication features - such as linking other accounts to the bot, or entering potentially sensitive info that you wouldn't want random users to see at all.

Alternatives Considered

I mean, the bot can just delete the message, but that seems inefficient.

chilly siloBOT
#

I'm not against the idea, but if you feel you need to hide a command's parameters, I might suggest looking into other solutions.

For example, perhaps you could ask for all the non-sensitive info in the command's parameters. When the user uses it, it'll hold onto that info for a moment, and then direct them to the bot's DMs (or even the bot's website), where the user would enter the "sensitive info" there.

That said, depending on the "potentially sensitive info" you're asking for, I migh...

chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
#

The ability to request user input over a series of requests/questions would be great.

Especially in the case of multiple questions that fetch multiple arguments to generate responses or results that are based on a set of conditions... or simply just to collect a group of multiple responses.

The common workaround is to request not-so-reliable user text input or make use of reactions to correspond to various options but it's super clunky. The user experience is also extremely poor when ha...

chilly siloBOT
#

Description
In many programming languages, as well as many existing command libraries for bots, overloads are a first-class concept that allow flexibility in the way commands are executed and used. Slash commands should also support this well-known and widely used feature in order to reach parity.

For those who are unfamiliar, an overloaded function in most programming languages is a function with the same name but another set of parameters as another. For example, the below two...

chilly siloBOT
chilly siloBOT
chilly siloBOT
#

not really anything new, as a user you can just send a get request to https://canary.discord.com/api/guilds/<guild_id>/channels
discord returns the full list of channels, their topics, the last message id, and the last time a message was pinned in that channel

the only slight vulnerability might be if someone uploads an image with a generic name such as image0.jpg you could snatch it, but that would require them running a a script at all times and sending requests pretty much every seco...

chilly siloBOT
chilly siloBOT
chilly siloBOT
#

Description

Slash command with an integer option will convert the integer to string and is likely to have off by one errors if the input is above 2^54 (9007199254740992) or below -(2^53)

  • Interactions with 9007199254740992 will be correct
  • Interactions with 9007199254740993 will return 9007199254740992 as a number in the interaction JSON
  • Interactions above 9007199254740993 will return the input as a string in the interaction JSON, and often be off by one.
    • e.g....
#

Specifically it's related to all parsers that consume valid JSON only. Java and JavaScript are among languages that cannot consume large numbers as numbers for one reason or another.

Number in JSON is the same as in JS - a 64-bit IEEE754 binary floating-point number. It has a 53-bit mantissa and that's where the precision limit comes from. If you puke large numbers into it as numbers and not strings, you will break compliant parsers.

chilly siloBOT
chilly siloBOT
#

Description

For certain interactions you don't want the user to re-run the command / run a new command. Prior to slash commands you might have the bot react to its own message with emotes like buttons and let the user click them for further interaction.

For example there is a list of items you want to show that is too big for one message you can have a left and right arrows reacted on the message and listen for the person who issued them to add to them.

For longer lists of re...

chilly siloBOT
chilly siloBOT
#

Specifically it's related to all parsers that consume valid JSON only. Java and JavaScript are among languages that cannot consume large numbers as numbers for one reason or another.

Number in JSON is the same as in JS - a 64-bit IEEE754 binary floating-point number. It has a 53-bit mantissa and that's where the precision limit comes from. If you puke large numbers into it as numbers and not strings, you will break compliant parsers.

The limit on numbers in JSON is implementation-...

chilly siloBOT
chilly siloBOT
chilly siloBOT
#

the concept of being in sync is purely a user interface feature. for our api there is no notion of a channel being in sync with another, so i'm not sure it makes sense to document client behavior in an api documentation.

overwrites do not appear to be ignored either. it looks like our client interprets the lack of a channel overwrite for the everyone role as allow 0, deny 0. the result of permissions computation results in them being technically equivalent, which is why we show them as syn...

chilly siloBOT
#

the concept of being in sync is purely a user interface feature. for our api there is no notion of a channel being in sync with another

There are endpoints that have a lock_permissions boolean which is just syncing a channel with the category.

Besides, I see no reason not to documented this since bots are capable of creating channels and have an interest in making them synced with the respective category.

overwrites do not appear to be ignored either

I mean, whether you inte...

chilly siloBOT
chilly siloBOT
chilly siloBOT
#

I did find some suspicious behavior too:

  • When you click sync on a channel that has an empty @everyone overwrite it won't delete that overwrite even when the category doesn't have one
  • The channel doesn't act as synced when it has an empty overwrite but shows as if it was
  • When you remove all allow/deny permissions in the client it won't delete the @everyone overwrite and it will remain existing for eternity (until a bot removes it)
chilly siloBOT
chilly siloBOT
#

I'd like to add on to this maybe the possibility to have a separate toggle for slash command responses (per integration would be nice, but as a general thing would be fine).
It may be desirable to have an integration with application commands where most people do not have a role and external emojis disabled. This would make it a requirement to add the bot to the server just to override its permissions to use external emojis.

chilly siloBOT
#

I have a slash command that doesn't use an interactions URL (only the gateway interactions.create event). It was working as intended, but today I noticed that when I attempt to trigger it, I get an ephemeral message stating "This interaction failed". The gateway event still goes through and triggers my handler behind the scenes, though.

I'm the co-founder of a compute platform (autocode.com) and we likely have other users seeing this - could you help shed some light on what changed here?
...

chilly siloBOT
#

Description
While at least in the user facing interface Giving a user Slash Commands does not allow them to use Slash Commands in a channel where they cannot send messages.

It would be nice for command only channels to be able to restrict users to using Slash Commands but not sending messages. Especially with Ephemeral messages that never really get sent this would be super useful for large communities with roles channels that allow users to self assign roles. It would be signific...

chilly siloBOT
#

Description
Currently, the API can only track used invites for the default generated invite URLs through the server itself, not the edited ones to specify how many days or uses, so invites generated through the DMs are also not tracked.

Why This is Needed
It is essential to fight abusers who raid servers for fun. Since Discord server raids are pretty common, having this addition in the API will contribute greatly to stopping abuse from the core by filtering out the source...

chilly siloBOT
chilly siloBOT
chilly siloBOT
#

Description
Slash commands have the type of 20 rather than 0 on version 6

Steps to Reproduce

  1. Connect to gateway V6
  2. Run a slash command (done with slash commands over http)
  3. The type of the slash command is type 20

Expected Behavior

The type of the message object should be type 0 over V6

Current Behavior

The type of the message object is type 20

Screenshots/Videos
![image](https://user-images.githubusercontent.com/43076116/110948...

chilly siloBOT
#

Description

There is a missing field when a Slash Command is used in DMs (of a bot).

Steps to Reproduce

  1. Use a global Slash Command in the DMs of a bot.
  2. API's response will not contain any User ID.

Expected Behavior

User ID available somewhere, in Members or in a new Author field.

Current Behavior

User ID is not stored in Guild ID, Channel ID and Member field is empty.

Client and System Information

I use DiscordGo. (latest)
https://github....

chilly siloBOT
chilly siloBOT
chilly siloBOT
#

Description

Respecting rate limits on the client side is impossible to do reasonably without a CORS proxy, as X-RateLimit-Reset-After is not exposed to the client and the system clock may be inaccurate.

Steps to Reproduce

Fetch API:

fetch("https://discordapp.com/api/webhooks/id/token?wait=true", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    content: "test message",
  }),
}).then(response => {
  co...
chilly siloBOT
#

Description

When referencing the Discord web application on how it behaves on the gateway connection using the Firefox DevTools network panel, I noticed that the webapp is sending IDENTIFY packets with fields not documented in the Discord dev docs. To be precise, the fields are "capabilities" and "client_state". Even if these fields would not be normally sent by bot libraries, I believe that they should be documented anyway.

Steps to Reproduce

View the websocket payloads bein...

chilly siloBOT
chilly siloBOT
#

Description

Let's say that an integration is connected on a server only through integrations (no bot user).
If you use a Slash Command and put a reaction on this message, the program running the integration will not be aware of this reaction.

Why This is Needed

I uses reactions for updating menus, switching pages in inventory, and all kinds of stuff.

Alternatives Considered

The alternative would be the ability to disallow people from adding an application as an int...

chilly siloBOT
chilly siloBOT
chilly siloBOT
#

Description and Why This is Needed

Currently, there are only two and a half choices regarding to message retention: persistent, persistent with hidden by channel visibility, and ephemeral. Some chats are rapid-fire and we know that issuing many message deletes at once are not really compatible with how Discord back-end works (https://blog.discord.com/how-discord-stores-billions-of-messages-7fa6ec7ee4c7). Therefore, I propose a new feature, channels with limited retention.

**Alternat...

chilly siloBOT
chilly siloBOT
#

Description
Interactions already compute and provide the invoking member's (and provided members') permission values. However, it doesn't include the bot's permissions (if the application has a bot in the server).

Why This is Needed
Bots are expected to check permissions and not try to make requests that will 403. While this is easy in situations where all roles and channels are cached (usually throug...

chilly siloBOT
#

Description

When requesting webhook(s) with .../webhooks/{webhook_id}, .../channels/{channel_id}/webhooks, .../guilds/{guild_id}/webhooks endpoints from a guild, where the application's bot is not in, will yield a wrong error code (and message).

Steps to Reproduce

Request webhook(s) with a bot from a guild, where the bot is not in.

Expected Behavior

The API should send:
Status: 403 Forbidden
Error code: 50001
Message: Missing Access

**Current Behav...

chilly siloBOT
chilly siloBOT
#

I have noticed that your API offset could be very important to following the ratelimits. At the time of writing this I'm somewhere between 1.5-2.5 seconds (exact ms unknown because the precision of the server date header is only to 1 second). I am behind the server date. If you were ahead though, and sent a request at the timestamp provided, the server wouldn't actually be at said timestamp yet, so you'd hit a 429. I'd assume your library does handle calculating api offset, but it is someth...

chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
#

A note for reviewers.

This is a shallow-clone of an existing repository ( https://github.com/MeguminSama/discord-slash-commands/ ), with git history removed, and MIT license modified.

This repository is infringing upon the MIT license and a DMCA notice has been issued.

I request that you do not consider this PR until the repository has implemented the issues requested by the DMCA notice, or the repository has been removed entirely.

chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
#

Current object for GET /users/@me/guilds:

{
  "id": "80351110224678912",
  "name": "1337 Krew",
  "icon": "8342729096ea3675442027381ff50dfe",
  "owner": true,
  "permissions": "36953089",
  "features": ["COMMUNITY", "NEWS"]
}

Requested object for GET/users/@me/guilds:

{
  "id": "80351110224678912",
  "name": "1337 Krew",
  "icon": "8342729096ea3675442027381ff50dfe",
  "owner": true,
  "permissions": "36953089",
  "features": ["COMMUNITY", "NEWS"],
...
chilly siloBOT
chilly siloBOT
#

Description

Currently it is not possible to use slash commands while replying: the command executes independently. It would be nice for Discord to send the messageId of the selected message with the interaction.

Why This is Needed

Various use cases:

  1. Bots that provide message formatting helpers (like the /me built-in command).
  2. It would be really helping for reporting certain messages.
  3. It would help in support guild-specific message management features lik...
chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
#

Description
Currently, when you have two or more required options, after completing the first one the slash commands will automatically move you to the second field. This function is really good but currently doesn't work with optional fields.

I think that slash commands should tab automatically to the next option (if present) when typing in an empty field (I'm pretty sure that this would work with every single type excluding the STRING one, correct me if I'm wrong).
Also, the client...

chilly siloBOT
#

Description
When a guild template is made from a guild with a hidden channel, the corresponding channel in the template object has a type of 0.

Steps to Reproduce

  1. Create a channel, and make it private.
  2. Create a guild template in settings.
  3. Fetch this template over the API.

Expected Behavior
It should be expected that the channel's type is the source channel's type.

Current Behavior
The channel has a type of 0.

Screenshots/Videos

...
chilly siloBOT
chilly siloBOT
#

Not sure if this was asked here before (or if there are particular reasons for this) but does it make much sense to mention the name of the bot in the command message now?
Since the command is now "attached" to the response of the bot does it seem pointless to have with <bot> on it. Just having <user> used /<command> would now be enough to have here.

I'm referring to [this here](https://camo.githubusercontent.com/e397a7df22af267ece8c5b139405e10db37f8d82a81cd00044b6939e08268c2c/6874747...

chilly siloBOT
chilly siloBOT
#

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 NS...

chilly siloBOT
chilly siloBOT
chilly siloBOT
#

I think that they should provide their own hosting

Which is far harder than you might think.

which integrated the best way with their api

There are plenty of community-made bindings to their API already. There's bound to be one that you'll enjoy using. If you don't like the community offerings, Discord also provides documentation to build your own: https://discord.com/developers/docs

but keep the fees nomina...

chilly siloBOT
#

Having the same issue as well. I've been a long-time supporter of Discord (including financially) and really expect more/better at this point. So many of the features we want/need are hidden behind "boosts" or silly requirements like this 500 metric that is not even properly tracked. Just give your users what they want and stop dangling the carrot! VERY disappointed in Discord over the last few years and starting to wish there was a quality alternative.

chilly siloBOT
#

Description
If you use the API and send with PATCH with the custom status blank, a blank will be created in the profile window. If you set it from the client application without using the API normally, the custom status should be deleted if it is blank.

Steps to Reproduce

Send json using API.

{
"custom_status": {
"text": ""
}
}

Expected Behavior
Custom status is reset.

Current Behavior
A blank occurs.

Screenshots/Videos
...

chilly siloBOT
chilly siloBOT
#

Description

An update to date way to grab the latest official discord default emojis.

Why This is Needed

This is will allow users to be able to grab the official default emojis list, thus making it easier to detect valid emojis or wrappers like discord.py can cache them as well if needed.

Alternatives Considered
External emoji libs, outdated user ripped emojis stuff, trying to find the internal list in my inspect element(not found).

Additional Details
I...

#

Twemoji doesn't have Discord's names

Those are Unicode's CLDR short names, which you can find in https://unicode.org/Public/emoji. Twemoji's versioning works by matching those of Unicode's (e.g. Twemoji 12.0 strictly contains Unicode 12.0's emojis).

Discord will not use the latest twejomi and it's not gunatreed that they will use all of the twejomi

You can grab data from specific versions, and Discord announces when they upgrade Unicode, like they did a year ago when they went fr...

chilly siloBOT
#

Discord justs uses twemoji for the emojis, which has a distribution with all the data you need. If anything, documenting which version they use would be nice, since it's hard to find.

If you know the version, you know which file from the aforementioned link to read when validating.

Although this wouldn't cover special cases which are unique to Discord like which emojis Discord's clients append a ๏ธVariation Selector-16 on when using them from the emoji ...

#

There's already an internal emoji list, just make this list work with an api endpoint, that's what I want(with some changes ofc)

It currently does, the problem is that makes it really hard to validate. I think what you suggested would be the optimal way to do it ,or maybe, there could be a section in the docs with the up to date list of all emojis (something like https://www.unicode.org/emoji/charts/emoji-list.html)

chilly siloBOT
chilly siloBOT
#

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 enabl...

chilly siloBOT
#

Description

Command choices are currently a dictionary, defined when a command is created/updated. It would be really helpful, if these dictionaries were separated from the commands, as one such dictionary can be used by multiple commands and options within the application. Application command would then only refer to these pre-created dictionaries.

Why This is Needed

I am currently working on a bot, that hosts a fighting game directly in discord. This game has player...

chilly siloBOT
chilly siloBOT
#

Description

As of now if Slash commands have options with choices, a user can only input one of the choices into the option of the command and not anything of their own. My request is to make some way so that besides the choices, people will be able to give their own input in an option.

Why This is Needed

For example I make an embed command that has an option color. For beginners I can put some of the commonly used colors as choices in the option, but for more experienc...

chilly siloBOT
chilly siloBOT
#

I use something like a schema in my library. Here's an example:

https://github.com/yourWaifu/sleepy-discord/blob/3374e0c1198e85c11d230c88f46336be2e773f1c/include/sleepy_discord/slash_commands.h#L187-L192

There are some issues tho, lazy parsing is required for some of Discord's structures like the gateway payload and slash command values. I don't use any standardized json schema, but to define all the types, there needs to be some generics or placeholder type specifiers.

chilly siloBOT
#

I think this would be solved by auto-complete suggestions as a broader feature of slash commands. The application could stream in suggested queries, such as youtube searches or your example of color choices, which would allow a lot of use-cases to be covered in one feature.

But, I do agree that there should be a way to make choices optional and allow users to set other values as well.

chilly siloBOT
#

I think this would be solved by auto-complete suggestions as a broader feature of slash commands. The application could stream in suggested queries, such as youtube searches or your example of color choices, which would allow a lot of use-cases to be covered in one feature.

But, I do agree that there should be a way to make choices optional and allow users to set other values as well.

I like the idea but like I cannot auto-complete hex codes, can I? (Just for the example, there mi...

chilly siloBOT
#

Description
It would be cool if there was a way to pre-fill slash commands for users. For example, the "Forrest Gump" in the screenshot below could start a pre-filled slash command as shown:

This would be similar to how deep-linking works for iOS apps, or how Google Forms lets you create pre-filled links with some values already filled in for convenience. For example, the "Forrest Gump" in the image above could point to a URL like: `https://discord.com/api/v8/applications/{app i...

chilly siloBOT
#

Description

Please add functionality to the Game SDK for 3D audio. E.g. If a player stays left from my position, I will hear the player on the left side of my headphones.
Maybe there could be a method to send own position to Game SDK with (x, y, z) and the position of the other player and Discord calculates the correct direction of sound.

Why This is Needed

3D audio is necessary for role play games like Arma3, GTA or other. Without 3D audio, players can only be l...

chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
#

This is will allow users to be able to grab the official default emojis list, thus making it easier to detect valid emojis or wrappers like discord.py can cache them as well if needed.

Many wrappers implement the behavior described by you. Since it is really easy to pull out the emoji list from the Discord client, an actual emoji list would not improve any library's quality.

This seems only like a library design issue and not an actual issue towards Discord itself. Before choosing a w...

chilly siloBOT
#

Since it is really easy to pull out the emoji list from the Discord client, an actual emoji list would not improve any library's quality.

The problem is that list includes VARIANT SELECTOR-16, which the API does not enforce, leaving to cases like this: https://github.com/discord/discord-api-docs/issues/2723#issuecomment-804304582, which is better seen here https://github.com/discord/discord-api-docs/issues/2723#issuecomment-804289857

chilly siloBOT
chilly siloBOT
chilly siloBOT
#

Hello there,

Applying to the list was during the 0.6.x life-cycle of Kord. However, Kord isn't in a position where we would like to promote it right now. We don't see that merging this PR at the time being will be beneficial to us, but we would like this PR to remain open until we work our way to a stable release.

@NyCodeGHG made the PR based on our older discussions in public channels. We would have got into writing a PR sooner or later, so thank you for opening the PR.

While we a...

chilly siloBOT
#

Description

Currently when getting data from a slash commands interaction, in the ApplicationCommandOptionType for USER the ID of the user is currently only shown. My proposed idea is providing the user and/or guild member object instead which also includes the ID just like the information provided from the interaction caller.

Why This is Needed

For a fair amount of commands that slash commands to get the user, it would reduce the amount of requests to get further data a...

chilly siloBOT
#

Some of the information on the Gateway page was slightly outdated. I've updated it with these changes:

  • I removed the note โ€œIntents are optionally supported on the v6 gateway but required as of v8โ€ under the Gateway Intents category because v6 was deprecated. (Line 200, Gateway.md)
  • Under Privileged Intents under the Gateway Intents category, I updated the note about October 7th to use past tense. (Line 300, Gateway.md)

Some of th...

#
On **October 7, 2020** the events under the `GUILD_PRESENCES` and `GUILD_MEMBERS` intents were turned **off by default on all gateway versions**. If you were using **Gateway v6**, you would have received those events if you had enabled the flags for those intents in the Developer Portal and had been verified if your bot was in 100 or more guilds. You did not need to use Intents on Gateway v6 to receive these events; you just needed to enable the flags. 
chilly siloBOT
#

@davfsa if you feel like it is needed, I can make a repo or a pr containing all the emojis.

I can get the internal list of emojis from the app if I really needed, but the problem here is no consistency on the API nor the client side, leading to things like what I pointed out here https://github.com/discord/discord-api-docs/issues/2723#issuecomment-805573825. They should enforce some type of consistency to be able to safely use the emojis, and not cause weird bugs

chilly siloBOT
chilly siloBOT
#

Description
Responding to an interaction at POST /interactions/{interaction.id}/{interaction.token}/callback with { type: 5, data: {} } returns status code 500.

Steps to Reproduce

  • Respond to an interaction with { type: 5, data: {} }.

Expected Behavior

  • Status code 204
  • Response created on Discord "[name] is thinking..."

Current Behavior

  • Status code 500
  • Command invocation gets deleted, no response

**Client and System Informati...

chilly siloBOT
#

Description
image

this looks cluttered and the replies are not necessary

Why This is Needed
While replying to the initial followup might be wanted in some cases, in most cases, it just looks cluttered and is an unwanted change.

Alternatives Considered
Instead of just making it not reply at all, maybe add a parameter such as replyToOriginal when sending the followup.

chilly siloBOT
chilly siloBOT
#

Description
After sending a deferred interaction response, editing it to a message with an attachment or sending a followup with an attachment (which replaces the Thinking message) does not show the attachment.

Untouched code which used to show the attachment properly in a followup now does not show the attachment.

Sending a type 4 response and then sending a followup with an attachment does show the attachment.

Steps to Reproduce

  • Send a deferred interaction response
  • u...
chilly siloBOT
chilly siloBOT
#

Description
Currently when doing a PATCH to a ephemeral deferred response without the ephemeral flag the response remains ephemeral, and vice versa.
I am requesting that the flags (for ephemeral) are respected in the first PATCH made to a deferred response.

Why This is Needed
So that bots can do processing, and still be able to send either type of response.
For example I do some processing and based on that processing i send an ephemeral message if it errors and a non...

chilly siloBOT
#

Not to commit the cardinal sin of resurrecting a long-since-passed thread, but, I came to this repository to suggest this exact thing.

I also do not know how the backend is structured, but perhaps something like docusaurus would work? It has versioned documentation, which would resolve the concerns of @JoeStrout (and many other users), provide search functionality (typically through Algolia although I'm sure there are alternatives), et cetera.

chilly siloBOT
#

Couple of key points:

  • Some Discord definitions contain the variation selector 16 codepoint (0xFE0F) suffix on some "early" emotes (single-codepoint ones introduced in early versions of Unicode standard).
  • Discord uses Twemoji 12 or 13 at this point, however not all of it is used. There are definitions in the client that the client can consume, but cannot produce, and some that client can neither consume nor produce (most notably multi-diversity emotes).
  • Discord naming doesn't match...
chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
#

Do you plan to change this soon or is it postponed? I imagine the picker flooded with commands that I can't even use and this makes me disappointed.

It's a difficult problem. I can't promise it'll be soon, but it is top of mind. In a pathologically bad case of a bot having 100 slash commands and they are all disabled, our clients would have to do multiple requests before we had a full list of commands to show a user (and the user would think Discord/your bot is being super slow).

Next...

#

All bots were granted the applications.commands scope today, making slash commands usable in every server.
Servers which do not want regular users to be able to use most commands can not disable specific app's slash commands, even by re-adding an app without the scope, as it will be re-attached a few minutes later.

Steps to Reproduce

  • Have a bot with slash commands in a server
  • Kick the bot
  • Re-add it using only the bot scope
  • Wait some amount of time
  • Observe that sla...
chilly siloBOT
chilly siloBOT
#

Does the @everyone role id not work for permissions?

I set permissions for the everyone role in a guild for a command with default_permission set as false and from looking at the client's logs I can see the permissions are being returned to the client in the GUILD_APPLICATION_COMMANDS_UPDATE event (payload below) but I am still unable to use the command

{
  "application_commands":[
    {
      "application_id":"764995504526327848",
      "default_permission":false,
     ...
chilly siloBOT
#

Setting default_permission: false disables the command in DM's as well. I personally like this, but some commands may want to be overridden for DM's. If this can't be done, it should be noted.

Also, it seems like many bots will end up with a /config or similar to set up moderator roles and / or users (maybe buttons when those are a thing). Is there a plan for a system to allow those with MANAGE_SERVER to set these overwrites in the client? E.g. if default_permission: false and someth...

#

Description
After sending a public deferred response and deleting it with Delete Original Interaction Response, trying to followup returns Unknown Message.

Steps to Reproduce

  1. Send a public deferred response ({ "type": 5 })
  2. DELETE /:appid/:interactiontoken/messages/@original
  3. Send a followup

Expected Behavior
The followup message is sent

Current Behavior
the API returns an Unknown Message error when doing the followup

**Client and System Informatio...

#

Alternatively instead of an option, automatically disable the reply when the follow-ups are directly after the original message with no other messages between them. I do see the benefit of replying if the follow-up is split up from the original message, but if the follow-ups are immediately after the original message it just creates clutter in the chat:

image

chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
#

Will attachments be possible with Edit Original Response (when using deferred response to do processing)? Currently, attachments can't be uploaded when editing messages

Are you sure they aren't already? Maybe you should try this out

interesting; looks like its undocumented but you can upload attachments while editing webhook messages and interaction responses, not for normal messages tho
would anyone happen to know if it also works when creating webhook messages...

chilly siloBOT
#

In addition to the mentioned use cases, this would be wonderful to have in bots offering automagic moderation (such as swearword filtering, deleting invite links, โ€ฆ).

From a usability perspective, it would be nice to be able to inform users that and why their content was deleted or changed. However, sending this in chat clutters it more then it's worth; sending DMs for such things has the danger of being missed if the user disabled notifications or has disabled DMs. (Also, getting a DM eve...

chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
#

A few bugs / issues / discrepancies with the new slash command update + permissions that me and others have encountered today:

  • Limit of 10 permissions (users + roles combined) per command. This simply isn't enough. For example, in my use case, I have advanced users that might have 3/4 support categories, with a separate support team for each category, with multiple roles and users in each team.
    • Obviously users could assign a single staff role to all members. However, this is adding ...
#

Description

When responding to a slash command with a type 5 response with flags: 64 and then a followup with flags: 0, Discord posts a message with flags: 64

Steps to Reproduce

POST /api/v8/interactions/.../.../callback {'type': 5, 'data': {'flags': 64}}
POST /api/v8/webhooks/.../... {'content': 'Some Content Here', 'flags': 0}

Expected Behavior

Ephemeral 'Is thinking' message followed by normal message with content 'Some Content Here'

**Current Behav...

#

If you create a message after sending a deferred ack response (type 5) fast (e.g. ack and then send a message 2ms later), the bot is left in the thinking state forever, since Discord seems to process the message before it's fully acknowledged your ack. Note, I am using slash commands over HTTP, not the gateway.

This issue should only occur very rarely if you implemented everything correctly and are using type 5 only when it's actually needed. You also can't get cloudflare banned for 404 ...

chilly siloBOT
#

Description

TLDR: A security method preventing multiple connections to the bot.

A new option would be added onto the bot menu, 'Double Log-in', where if two or more (or a custom) amount of connections to one bot token is reached, it prevents any connection to the token unless fixed.

Essentially, lets say a token is 'veryrealtoken01'. A guy living in California uses this token. Suddenly, a guy living in Texas uses the same token. Both connections immediately shut off and requ...

#
  • Many users reporting crashes when using / seeing slash commands on iOS, claiming to have latest app version. Can't verify since I don't own an iPhone.

This is because the update isn't actually showing in the app store unless you search for it yourself. The devs are aware. If their changelog version shows 63.0, sometimes they'll crash and sometimes it'll be blank messages. They need to be on 65.0 or later.

chilly siloBOT
chilly siloBOT
chilly siloBOT
#

slash commands or not, bots should be using allowed_mentions when sending any user input... it's disappointing that big bots aren't doing this

The allowed_mentions system is relatively new and things like this weren't always the case -- previously we'd resort to escaping the text. However, in the older bot system this wasn't as big of a problem because the server administrator had control over the permissions of the bot. This means they can turn off the everyone pinging permission for ...

chilly siloBOT
chilly siloBOT
#

With the new way that discord renders commands, this problem appears to have resurfaced.

Node.js / discord.js code to reproduce (need to define interaction.id and interaction.token, I used client.ws.on('INTERACTION_CREATE', interaction => { ... code here ... })

var body = Buffer.from(JSON.stringify({ type: 4, data: { content: '@everyone', allowed_mentions: { parse: [] } } }));

var req = require('https').request({
  hostname: 'discord.com',
  path: `/api/v8/interactions/$...
chilly siloBOT
chilly siloBOT
#

slash commands or not, bots should be using allowed_mentions when sending any user input... it's disappointing that big bots aren't doing this

also I added a warning box in the slash commands page specifically for this

Well Dank Memer apparently was using allowed_mentions but due to an issue on Discord's end.. it wasn't respected causing the bug to be exploited in multiple servers.
[Night's Announcement](#api-announcements message...

chilly siloBOT
#

There was a regression in validation logic which was deployed around 5pm PT that caused allowed_mentions to no longer be respected. We're deploying a fix for this behavior, and it should be out within the next hour.

It would probably also be appropriate to publish a support article regarding this, since quite a few large bots were affected by this and this was also done when [music bots were unable to play music from certain sources](https://support.discord.com/hc/fr/articles/36003501035...

chilly siloBOT
#

one thing to consider is that unless you heavily nest commands, in any moderation focused server the moderation commands will take up way more (screen) space than the non-moderation ones, making it extremely difficult to find a usable command for the vast majority of users.
of course, this isn't an issue with most bots, however quite a lot of general purpose bots do exist, and i believe it'd be a blocker for them to switch to slash commands.

re: not supporting setting it by discord perm...

chilly siloBOT
#

Night has already said this is a wontfix, however, this leaves the response type 5 in a completely broken state. You have 2 choices:

You may have misread something somewhere. Nowhere did I or anyone else state it as a wontfix. It is a bug in our backwards compatible logic, and I suggested an alternative as a quick fix.

๐Ÿ‘ Good to know, assumed it was a wontfix due to the backwards compatible bit.

slash commands or not, bots should be using allowed_mentions when sending any u...

chilly siloBOT
#

I just discovered this implementation of bot commands via slash and it is very interesting but in the case of my bot, it bases some user commands on a level system and the levels are identifiable within Discord by roles. Likewise my moderation commands are linked to a role rather than a permission.
According to me (and because it suits me ^^"), it would be to link the command with one or more roles (either the id of the role, or by the name)

chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
#

Description

Fetching the users for a message's reactions returns an empty list if the emoji is a custom emoji. Fetching users for a reaction with a custom emoji works properly.

Steps to Reproduce

Route: "GET", "/channels/733139375835185264/messages/826296722849792050/reactions/noumenon:796877374099947550"

Expected Behavior

Expected returned response:

[{'id': '462364255128256513', 'username': 'PhenoM4n4n', 'avatar': 'c50f161f797b18e4e040265698637b55', 'di...
chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
#

As somebody1234 says, the best solution will be the roles. When I looked for bots for my server before making mine, many bots were based on the name of a role, a room or a user etc... and very few were on a permission. Basically, it was the rule of : If you install my bot, you abide by my naming requirements.

When it comes to customizable commands with an administration interface to manage them, the problem is less because the id of a role is reusable when the command is created.

I thin...

#

When I looked for bots for my server before making mine, many bots were based on the name of a role, a room or a user etc... and very few were on a permission. Basically, it was the rule of : If you install my bot, you abide by my naming requirements.

I have never come across a bot like this in all of my years in discord. Every moderation/multi-purpose bot I can think of goes off of permissions.

chilly siloBOT
#

sounds like you guys might not be aware that there is already support for setting command permissions by user/role: #2737

however imo setting permissions by Discord permissions is much more user friendly and needed, I'm not sure if I'll integrate the current permission system but I'd definitely use permission-based permissions (currently I just check permissions in the code like for message-based commands)

#

Note that you can simulate setting permissions by Discord permissions by adding a role for each permission. You cannot do the converse (simulating setting permissions by role if you can only set permissions based on Discord permissions).

Again, as I've said above it should not take much time at all to enable commands based on roles, no? The only issue is with older servers with a lot of roles, and even then you only need to do it once (the single time being now, when slash commands have j...

#

Surely it doesn't need to be one or the other? Both approaches have their valid uses - roles and user overrides are more flexible, but discord permissions are more generic and easy to use. Conversely, role and user overrides are difficult - if not impossible - to implement at a global scope, and discord permissions may be too limited (or too broad).

The best of both worlds (and something that would be incredibly useful for future interaction types) would be a way to define and use our own ...

chilly siloBOT
#

Simulating Discord permissions does not work in the general case; only 10 overrides are allowed at most.
Also, keeping this in sync whenever you start up would take tens of thousands of requests even for relatively modestly sized bots. Introducing a single new command would require millions of requests, which even at a higher global rate limit would still take hours.

chilly siloBOT
chilly siloBOT
#

I think that slash command permissions should be as open and flexible (for developers) as possible.
A few things I would like to see
Permissions based on user permissions

An option for permissions for all guilds for that command, ideally in the command object when registering the command. This would support both user permissions and user ids
User ids because there might be some commands you want to enable for certain users regardless of guild. eg dev only commands

A bulk permissions ...

chilly siloBOT
#

Okay I think it's important to differentiate between public and private Discord bots in this conversation.
For private bots is makes sense to have commands tied to roles or users since the bot owner can easily modify those on demand. This is already possible as mentioned by advaith1.
For public bots this is not really practical. There is a reason global slash commands exist and maintaining guild slash commands for every guild is just unreasonable and not practical.

So what I think would ...

chilly siloBOT
#

all moderation roles required someone to go through and enable each individual permission in the first place
Yes, that's usually the case. But don't forget that many inexperienced Discord users get started using server templates and don't actually set this up themselves. Now picture those people adding a bot, would you really think they would figure out why they can't access a command?

it should not be much more effort to configure the additional permissions that a moderation bot woul...

#

An in app way of admins controlling commands is great, however i think that it could very easily become confusing / hard to navigate. (Worst case scenario 500 commands iirc). A parameter for allowing a command to be controlled by admins, and permission grouping would help with that, it should also allow devs to completely disable commands (meaning server admins can't enable them and see them).

For public bots this is not really practical.
I disagree, depending on rate limits, this would o...

chilly siloBOT
#

TL;DR my point: I feel like for the vast majority of cases, the commands you're offering will not have a 1:1 correspondence with existing Discord permissions; at most the bot should enable certain commands based on permissions when it first joins.

Now picture those people adding a bot, would you really think they would figure out why they can't access a command?

Trivially solved by sending the admins/mods a message on join; a large number of bots have on-join messages (for every user)...

chilly siloBOT
chilly siloBOT
#

If this were to be implemented, it would be nice if there was a "stop receiving notifications from this bot" or "stop receiving permissions related notifications from this bot".

Perhaps we could get an interaction token whenever we delete a message ourselves. Or perhaps being able to send permissions requests to any user who is able to grant the permissions we're looking for without any "interaction"

chilly siloBOT
#

Leaving the previous ideas aside for a moment, I'd like to expand a bit on what I mean by custom permissions now that I'm at a proper keyboard.

Generally speaking, the goal of this feature request is to allow creators of slash commands to efficiently hide, block, or otherwise make unavailable certain commands from certain subsets of users - a typical permission functionality. What I believe would be the best way of solving this in the general case is the introduction of distinct, user-crea...

chilly siloBOT
chilly siloBOT
#

Since nobody else has said anything yet, I might as well, I guess (re: the unresolved issues)

How do builtin Discord permissions fit into this?

I think it'd be fine given that this would move visibility completely to permissions rather than individual slash commands. (As others have mentioned, this is especially useful for moderation commands, especially the ones that 1:1 correspond to Discord permissions, e.g. ban/kick-related commands.)

Should permissions be able to depend on t...

chilly siloBOT
chilly siloBOT
#

Description
This proposal suggests the ability to upload one, or potentially more, images as arguments for slash commands

Why This is Needed
Many bots take images and attachments as arguments in their commands, however slash commands cannot, meaning the user would have to link them. as a result many bots would not be able to change over to slash commands due to this

Alternatives Considered

alterntives are:

  1. requesting an image posted after the slash comma...
chilly siloBOT
chilly siloBOT
#

Description
It seems the most recent incident with reactions have broken some messages. Users are unable to see the reaction on a message (including myself) and when I react with the emoji that used to be there, I can see the users that had reacted before the incident but the reaction does not persist. If I open the same channel in the browser version or reload the client, I can't see the reaction anymore

Steps to Reproduce
I personally only have one message where reactions are b...

chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
#

Adding a bit here. In my testing yesterday with this bug while testing to see if it's connected to the long-running bug that affects at least large guilds spread across multiple nodes, it would appear the client renders reactions on a message in some way attached to the reaction's name. After the outage yesterday, many current reactions lost their names, thus when you add an additional reaction to a message, the client hits the reaction endpoint directly, and renders all reactions on the mess...

chilly siloBOT
chilly siloBOT
#

Summary

This PR adds documentation for stage channels. Go wild!

Please note that this feature is still under active development (even though it is launched), and thus there is higher than normal risk of things possibly changing. Nevertheless, we are confident that everything documented in this PR should be "pretty stable", with the exception of the REQUEST_TO_SPEAK permission, which we may (but there is no current plan) remove for alternative options of selective gating.

#

We chose to not set request_to_speak_timestamp, so that bots would effectively "auto speak" when they were invited. The advantage is that most bots (once they are able to join the stage channel), wouldn't have to do anything to support going "onto the stage".

The disadvantage is that maybe there is some unique usecase where a bot would like to accept when they got voluntold up to the stage. But we haven't been able to come up with anything substainally useful. Please note that bots are...

chilly siloBOT
chilly siloBOT
#

This is very annoying to deal with. Guilds that have roles such as Muted or similar don't need, and don't want, these permissions enabled on every role. The muted role in one of my servers has permissions such as "Video" or "Use Slash Commands" enabled for absolutely no reason and discord also has made no effort to communicate to me, as a server moderator/owner, that this has occurred.

There is also no practical use in enabling permissions on every role. The everyone role of a guild is e...

chilly siloBOT
chilly siloBOT
#

A video showing me adding a different reaction, reloading the client and seeing both the reaction I just added and the original reaction appearing but once I remove the new reaction and reload the old one is gone too:
https://user-images.githubusercontent.com/29981918/113143182-c3b71b80-9223-11eb-8856-65e0cff40311.mp4

@GamingGeek This is super interesting. Could you show me what the message payload looks like after you add the extra emoji?
I also noticed that (as the comment above st...

chilly siloBOT
#

After the outage yesterday, many current reactions lost their names, thus when you add an additional reaction to a message, the client hits the reaction endpoint directly, and renders all reactions on the message, but leaves the broken reaction with a name of :null:. Re-adding the broken reaction after adding an additional one seems to correct the null name and count bug, but once you re-add the reaction, it must stay there to properly restore the name, leading me to assume it's only rend...

chilly siloBOT
#

Description

Slash command interactions that take place in a guild can be received by a gateway event, whether that command is guild-scoped or global. However, if a user uses a (global) slash command in a DM with a bot, that interaction is only sent via outgoing webhook (specifically, the ["Interactions Endpoint URL"](https://user-images.githubusercontent.com/1214564/113235213-89677180-9257-11eb-8cbb-3b0efe711a4b...

chilly siloBOT
#

Description
The current table of listed Guild features is a bit messy because the features are in a seemingly random order in the table.
It would be beneficial to have the entries listed in alphabetical order.

Why This is Needed
Better readability. Instead of constantly looking through the table to find feature X in it can you look at where it should be according to the alphabetical ordering, which in the end helps finding the feature much faster.

**Alternatives Considere...

chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
#

Description

If interaction responses and it fails (in my case 400) UI shows Sending command... forever.

Steps to Reproduce

Data:

{
	-- content = "", We are missing this to invoke the error
	embeds = {
		{
			title = "Test Command",
			description = "This message is private. You sent: "
		}
	},
	flags = 64
}

Type: ChannelMessageWithSource

Expected Behavior

This interaction failed

Current Behavior

Stuck at Sending command...
...

chilly siloBOT
chilly siloBOT
#

I see a reaction to my previous message, so I'll try to explain my reaction, and will leave this thread since I've picked another solution to my problem:

  1. The original feature request for this is https://github.com/discord/discord-api-docs/issues/448. It was raised in 2017 and closed for comments (limited to collaborators only. It's not possible to ask questions about the feature status in this thread
  2. I've created a new issue to ask about this, which has been closed as duplicate and ...
chilly siloBOT
chilly siloBOT
chilly siloBOT
#

Is there any way to edit/delete the original message if it's ephemeral?

I can PATCH and DELETE at the /@original endpoint just find if I don't set flags, but if I set "flags": 64 on the InteractionApplicationCommandCallbackData then trying to talk to /@original gives me a 404.

Ephemeral messages are not stored so the API does not know it exists once the message is sent, hence the 404

chilly siloBOT
chilly siloBOT
#

I appreciate the effort put in here, as proofreading these docs is no easy task. Unfortunately, large PRs that focus on rewording docs are a maintainer's nightmare because they are difficult to review, contain many subjective changes, and fall out of date. In cases like these, smaller or more focused PRs are better. It is with a heavy heart that I must close this PR because I do not think it will realistically be merged anytime soon.