we cannot help you, you have to go to the support form which kittens linked
#github-notifications
1 messages ยท Page 24 of 1
the buttons field is weird, documented it but not sure if this is the best way
This is mostly an architectural problem for us right now. Ephemeral messages currently skip a lot of our infrastructure paths that normal message sending goes through--it allowed us to make them super easily and have that "disappearing" behavior we want.
This is a totally understandable reason, but the support article for these Ephemeral messages literally demonstrates the feature using an embed...
The article is probably ...
There's definitely something wrong. I'm getting the same issue. I'm not banned in any of the discords either. In fact, I'm IN some of them. I also tried manually joining a server for which it said "invalid invite", and it worked fine. Please fix this, it's highly annoying!
This would be more useful now because of non-bot slash command applications: if there is no bot user then the application data cannot be fetched (from its id) at all, not even the icon and name.
@jhgg Sorry to bother you, has that PR been merged, I keep seeing this issue pop up
I cannot overstate how useful this would be. I would love to move my moderation commands over to something like this, but I'd really rather not have all the moderation commands just hanging out in the menu for regular users, you know?
I like the idea of this but worry it won't be complete enough to be useful. For example my permissions system allows restricting a command to one channel or a role / user in a channel.
As the documentation states, you should be using guild-specific slash commands for testing, as these are instant.
Say in an update you have edited the arguments a command takes in your bot code, but not in discord. How would you update the bot along with the discord commands? You would either have to be compatible with the old arguments and the new arguments (and then later release an update that removes support for the old arguments), or you would have to wait until the ch...

There is a bug. It says play store even tho Iโm on an Apple device.
| Field | Type | Description |
|-------|--------|----------------------------------------------------|
| label | string | the text shown on the button |
| url | string | 1-32 character url opened when clicking the button |
urls have a limit of 32 characters
@WickedTree You can only send strings instead of actual regular expressions. Discord might allow it but it's unlikely. And pattern validation is just one example, there might be more rules that you want your arguments to follow. The list I have given is not exhaustive. You might even want to check the argument with a record in the database, etc. Think client-side vs server-side validation. The client can only validation so much. It's only for the user experience. The server is where most of ...
Description
After acknowledging a slash command interaction, there appears to be no way to get the channel message id for the interaction source message (if you decide to show it), or the message you reply with in the initial response.
Why This is Needed
I think it's important to be able to link an interaction to the messages it sends in a channel. An example could be deleting messages related to the command run after X amount of time to clean up the channel, or to link react...
Description
On mobile, the arguments required for a slash command are not required.
Steps to Reproduce
ยท Select a slash command that requires arguments. ยท Send the message ยท Discord will not give the "This option is required. Specify a value" message as it does on PC
Expected Behavior
Discord would show the error prompt: "This option is required. Specify a value"
Current Behavior
Discord sends the slash command, thus bots receiving no options and d...
- References the gateway event rather than saying a library will handle it
- No longer presumes that the docs are not also for library devs.
- No longer presumes that every given library has implemented support for this, only indicating that it is possible to support it.
they are 512, but the client validation was set to 32. it will be fixed in next deploy (January)
Description
When creating a command parameter with a mixed-case name (such as camelCase), the casing of the name is not retained in the UI or created interactions.
Generally, it would simplify integration with bots and improve UX if casing was retained - for example, the readability of a name consisting of two or more words degrades significantly if casing is normalized (shouldDoThing vs shoulddothing). It also enforces a less strict matching behaviour on the part of the implement...
Description
Steps to Reproduce
Expected Behavior
Current Behavior
Screenshots/Videos
Client and System Information
It seems that a received activity object actually contains the button URLs, just weirdly placed at activity.metadata.button_urls :eyes:
08de00c Invert pending member description (#2366) - SnowyLuma
df59cef Use concise regex for name matching (#2405) - Daniel-Worrall
Not entirely sure if my library counts here.
It's a slash commands library but it requires SinisterRectus/Discordia.
^ this would be really nice. My bot currently has its own permissions system that lets server owners set what types of commands work where, I'd really love to try out slash commands if they could handle that use case.
@tipsypastels this has been requested in https://github.com/discord/discord-api-docs/issues/2342
I like the idea of this but worry it won't be complete enough to be useful. For example my permissions system allows restricting a command to one channel or a role / user in a channel.
This has been requested in https://github.com/discord/discord-api-docs/issues/2342
I only saw this for guild commands, is it only for guild commands or for global commands too?
Description
on iOS, the bot profile doesn't open when it's username or avatar are tapped in a slash commands response message, like a regular webhook message and unlike a regular bot message
Steps to Reproduce
- find a slash command response message from a bot
- tap its name or icon in the message on iOS
Expected Behavior
The bot's profile opens
Current Behavior
nothing happens, like for normal webhook messages
Client and System Information
Discord iOS TestFlight 54....
When editing form_fields I always get 500 Internal server error, so I asume Discord wont merge it for a while (if they even will).
Description
The Security and Authorization section of the docs on Slash Commands could use some brief mention of caveats of running a public web server to receive webhooks, and maybe brief configuration snippets for apache/nginx for discarding requests that don't have discord's X-Signature-Ed25519/X-Signature-Timestamp headers. e.g for nginx:
server {
listen 80;
server_name botendpoint.example.com;
location / {
# if request i...
While what wicked mentioned is a possibility it's not very user friendly as users shouldn't be having to add the bot to be able to use it in dms imo. I agree we just need a small field on the command for where it's usable, aka a list of channel types or just a simple "guild", "private" or "all" setting.
Just like xSke I have a lot of commands that just can't do their job in dms. like roleplay command such as /hug, theres nobody to hug in dms so no point to show them in dms.
This proposal was more about offering an argument type of "Guild" that'd prompt the user with a guild selector, like the User, Channel and Role type.
Description
When i am trying to authorise myself it gives an error 500 and does not let me in the Minecraft server.
Steps to Reproduce
Expected Behavior
Current Behavior
Screenshots/Videos
Client and System Information
this is unrelated and not filled out, close this please
It'd be nice if this was compatible with the Deno environment.
It'd be nice if this was compatible with the Deno environment.
Deno support is something I'd love to have, however, as I do not use Deno, I don't know what would be required to add support for it :(
If you have any ideas, or want to help out, you can either DM me on Discord (Vladdy#0002) or even submit a PR ๐
87349b2 Change asyncronously to asynchronously (#2418) - Mukundan314
Description
Whenever I attempt to save changes on anything in server settings, I click the "Save Changes" button and it loads then shows the save changes option again. I cannot escape this screen and cannot apply any changes to my server.
Steps to Reproduce
Perhaps Discord can fix it so that it saves the changes and doesn't force the user to be locked in that save changes menu forever.
Expected Behavior
I expected it to save the changes, the menu to go down, ...
This issue tracker is for the Discord API. For client issues, join the Discord Testers server or contact support.
@HuyaneMatsu you're probably sending an array instead of a string (#2395), you need to serialize the array to a string as this PR documents
Description
Get first_message_id snowflake of a text channel.
Why This is Needed
This will be very useful for bot developers to find the first message of a text channel since getting this is a bit difficult.
Alternatives Considered
It's possible by iterating over every messages in the text channel and finally getting the first message. However it's not practical as this would make it a slow operation.
Additional Details
N/A
You can do ?after=channel_id&limit=1 if you wanted the first message.
@advaith1 Didn't see that issue :KoishiDerp:. The issue tracker is spammed with slash commands.
Danny's approach is the way to go.
In order for a web service to accept intent webhooks from Discord, we require that you implement appropriate signature checks for authentication. Among these, we send a few well signed, and improperly signed requests to see if the server is well behaved, and on a regular cadence, as your slash commands operate, we send improperly signed requests. The intent of this is to ensure that people are implementing proper authentication measures. If your server fails these checks, we disable the inter...
Should this not be part of the actual Guild Member object definition itself?
I would like to add to this. My application is running on the oculus quest. Which is also an arm64 arch.
Little update:
It seems I could use the bot's command when I backspace after Discord recommends/selects the command.
For example: When I type /nick does Discord automatically select the nick command, but I can then backspace to append name to the command.
While this is a solution, for now, is it still not really intuitive and a better alternative to select commands and IF you actually want to select those in the first place should be considered.
A library developer for the relevant API of the slash commands did mention that it was incomplete and going to be a rushed implementation. Here's to hoping that the major flaws are resolved soon.
A library developer for the relevant API of the slash commands did mention that it was incomplete and going to be a rushed implementation. Here's to hoping that the major flaws are resolved soon.
My guess would be that you mean MinnDevelopment. He did gave his thoughts about the slash-command and the overall disappointment that it was rushed so much.
This PR adds a link to caddy-discord-interactions-verifier in the community resources. This module is a fully functional, installable extension to the Caddy web server that performs verification of webhook requests at the edge server, requiring a single line of configuration and zero application-level logic related to verification. Given that many endpoints are fronted by a server like Nginx or Caddy to terminate TLS (whi...
59629a7 chore: correct url for integration application ... - vladfrangu
Hey, this is really great. Thanks for building it
eeba53e Add caddy-discord-interactions-verifier to Comm... - CarsonHoffman
Yes, these are all small PRs, and I'm sorry for anyone who has emails turned on for the repo, however they are due to the fact I'm literally going through the entire doc site right now..
Description
Server boost notification can be a random string to thank the booster like we have welcome by the system.
Why This is Needed
This could be a great method to thank all the boosters and appreciate their donations & engagement.
Alternatives Considered
N/A
Additional Details
N/A
what exactly are you requesting? you can already do boost messages with a bot, like for welcome messages
Description
When establishing a POST request to https://discord.com/api/oauth2/token, (as long as I submit grant-type of โauthorization_codeโ), no matter what other params are included, it returns a 500 internal error.
Steps to Reproduce
- POST to https://discord.com/api/oauth2/token, with a grant-type of authorization_code. (Having any other params or none at all doesnโt affect the return)
- Witness the 500
Expected Behavior
Would return the token or a 400 (...
while it should be 4xxing instead of 500ing, looks like your issue is you submitted them as query params instead of a x-www-form-urlencoded body
Ah that does it, just got to now sort an issue with code being rejected. Shall I leave this open since its returning 500 instead 4xx
Why not just wait for discordia to add support for slash commands?
I'm helping discordia, but they will make slash commands only for 3.0 version which won't be released soon.
This is for discordia 2.0.
This would be very useful indeed.
Looking at the GameSDK source code these should be UInt8s:
struct DiscordUserAchievement {
DiscordSnowflake user_id;
DiscordSnowflake achievement_id;
uint8_t percent_complete;
DiscordDateTime unlocked_at;
};
struct IDiscordAchievementManager {
void (*set_user_achievement)(struct IDiscordAchievementManager* manager, DiscordSnowflake achievement_id, uint8_t percent_complete, void* callback_data, void (*callback)(void* callback_data, enum EDiscordResult re...
I do not endorse this an official solution, but I am fine with it existing and being promoted as a community solution for slash commands in Discordia.
Any news if/when this might be implemented?
This looks really cool ๐
I'll definitely be making a project with this soon
This looks really cool ๐
I'll definitely be making a project with this soon
Okay
Description
In order to prevent bot hijacking, it should be possible to know atleast how many devices are connected given a bot token and a way to regenerate the bot token if the above new endpoint detects more than one device.
Why This is Needed
This will prevent lots of cases where the bot token is leaked and no one is aware of the problem
Alternatives Considered
None
Additional Details
No
Description
Discord is unable to reach my server using IPv6 and says that the interactions endpoint is not available. I do not see an incoming request from Discord on my server.
Why This is Needed
Some ISPs enforce CG-NAT, which disallows users to port forward on IPv4. Because of this, I cannot use interactions using incoming webhooks (since I am making a bot, I use the INTERACTION_CREATE event, but I want to outsource the command handling to another server).
**Alternative...
I would recommend dropping in Cloudflare to terminate your TLS connections if you cannot move to an ipv4-supporting provider. Our cloud provider, GCP, does not have much support for ipv6 (only in their global load balancers at this time).
I would recommend dropping in Cloudflare to terminate your TLS connections if you cannot move to an ipv4-supporting provider. Our cloud provider, GCP, does not have much support for ipv6 (only in their global load balancers at this time).
I am currently using ngrok as a fallback solution to tunnel HTTPS to my server without IPv4 port forwarding. I already use Discord for other scenarios, but my bot does not own "a real domain", which is mandatory to use Cloudflare.
When I'm going to add an Asset, it loads, but then it disappears. What can this be?
This PR adds missing links (and the curly brackets) for application.id in the interactions documentation for the following endpoints:
- Edit Original Interaction Response
- Delete Original Interaction Response
- Create Followup Message
- Edit Followup Message
- Delete Followup Message
The API documentation mentions application flags (introduced in https://github.com/discord/discord-api-docs/pull/2295), but there is no documentation for the enumeration.
I could find out the following flags:
| Flag | Name | Description |
|---|---|---|
| 1<<13 | Presence Intent | Denotes that the application has the GUILD_PRESENCES intent enabled on the discord developer page |
| 1<<15 | Server Members Intent | Denotes that the applica... |
This is really needed. Cluttering the commands list with commands that people can't even use is a pretty bad user experience.
Maybe add some sort of categories that we can sort the commands into in the future as well?
Description
Add an option to the VoiceState object that provides information on whether the user is watching a Go Live stream. For example:
{
...
"self_watching": "80351110224678912"
}
Why This is Needed
It would be cool to create some "Twitch" like features for users watching another users stream! (e.g channel points, etc.)
Alternatives Considered
Could be implemented by ...
Can You assign this issue to me so that I can work it ! @henrymxu
You'd need to be apart of the discord team to work on this feature. @imSanko
๐ค it must be somewhere since the client shows the list of people watching, but I can't figure out how it gets that
f3caff1 Fix broken link to Interaction Response model - goodspark
I was reading https://discord.com/developers/docs/interactions/slash-commands#responding-to-an-interaction
And clicked the 'Interaction Response' link and it led nowhere. Looks like the correct fragment to use is interaction-response, not interaction-interaction-response. (https://discord.com/developers/docs/interactions/slash-commands#interaction-response)
Slash commands could have their own per guild settings.
Just like like roles have guild wide and channel specific options, slash commands could be the same.
If a bot has a mute command the owner could enable a mod role access to that command but deny it to other roles. And if the bot has an 8ball command the owner can enable it in a bot commands channel but disable it in a general channel.
Description
Right now all sub command groups and sub commands are returned as part of the options field, this makes them more difficult to separate when there is a mixture between the 3 command groups.
Why This is Needed
Most developers modularize their code as it becomes easier to manage, this will allow for code and organization to be cleaner.
Alternatives Considered
What I propose is that instead of returning this
 w...
Description
After about 24h of the bot running (sometimes more and sometimes less), the connection is randomly closed by Discord with no information. For now, our temp fix is to treat it as a reconnect, but I would rather have a long time solution to this. Is there something that we are doing wrong that is killing the connection or is it a bug on Discord's side that is randomly closing active connections?
Steps to Reproduce
I don't know any concise steps, but the disconnects seem...
its intended to be disconnected and asked to reconnect between every 15 mins and 4 hours; are you experiencing something else? 24 hours sounds too long to be that
its intended to be disconnected and asked to reconnect between every 15 mins and 4 hours; are you experiencing something else? 24 hours sounds too long to be that
We do receive reconnects and reconnect accordingly. This seems to be something else. I have tried my best to debug everything and try to figure out what is going on.
Initially we thought it was the lib we use aiohttp as we just got a message saying that the connection was closed, no further info. After painful debugging I ...
What close code are you getting on the websocket?
What close code are you getting on the websocket?
None, for what I can see
Websockets always provide a close code. Your lib might not be providing it to you though, could check their docs
Websockets always provide a close code. Your lib might not be providing it to you though, could check their docs
During debug I checked the 2 fields that the docs state that give further info on the close, but no luck, they are both empty. I'm going to start another 24h debug to see if I catch it again and get more info
Little update, turns out I had a bug with the uptime command and it wasn't displaying days correctly, so it might not be every 24h. Will keep looking into it tho
Im going to close this and say it was just a weird Discord bug that has been fixed since peoples bots seem to be functioning correctly now. If this happens again, will reopen.
I see what you are getting at, however, there is a way to check given an interaction.
Whether or not the options parameter is present on each level gives you that information
Basically your pseudcode is this:on interaction command = interaction.name subcommandgroup = null subcommand = null options = interaction.options if options?.options subcommand = options.name options = options.options if options?.options subcommandgroup = subco...
Then maybe have a way for the server to reject a command with a custom error message, almost like follow-up messages.
[discord/discord-api-docs] Issue opened: #2440 Support for slash command shortcuts in content/embeds
Description
Similar to the Discord tags, e.g. , it would be nice to be able to do slash command shortcuts. Such as which would resolve to a clickable text and allow the user to "click" it to run that command (or prefill it?). And hovering would of course show them the command, bot, parameters, etc. It would of course ask for confirmation much to how outlinks work, and allow a user to "trust" this bot / user.
The shortcut could specify the parameters as well.
Example:
Say ...
DiscordPHP has returned from the dead and most (all?) of the latest features have been implemented.
The rate-limit system was approved back in 2016 but has been revamped to handle rate-limit buckets which were not present back then. This includes halting all requests on a 429 and attempting to bundle requests together to predict rate-limits.
The current rate-limit handling can be found here:
- https://gith...
A slash command also have to give the bot it wants to use the command on, if there are any slash commands with the same name.
What if
- Bots could only make shortcuts to their own slash commands
- if users could make them, they need a special permission like menage messages or something entirely new
And then the slash command would look something like
<botid/command:param=value>
And maybe the command id and the name are interchangeable
A slash command also have to give the bot it wants to use the command on, if there are any slash commands with the same name.
What if
- Bots could only make shortcuts to their own slash commands
- if users could make them, they need a special permission like menage messages or something entirely new
And then the slash command would look something like
<botid/command:param=value>
And maybe the command id and the name are interchangeable
The bot would ...
This seems to happen for normal bot messages too now
My bot's entire purpose is to create custom per-server re-useable tags that can be called up with its name. This is an exceedingly common use case for slash commands - discord-developer's own Discord DevBot could use it for the official server.
But having a limit of 50 maximum commands doesn't work for me. I have more than that in a few of the 60 guilds I'm in, so right away I know I cannot possibly move to slash commands as the limit in place is too restrictive. "Oh I'm sorry you can onl...
My bot's entire purpose is to create custom per-server re-useable tags that can be called up with its name. This is an exceedingly common use case for slash commands - discord-developer's own Discord DevBot could use it for the official server.
But having a limit of 50 maximum commands doesn't work for me. I have more than that in a few of the 60 guilds I'm in, so right away I know I cannot possibly move to slash commands as the limit in place is too restrictive. "Oh I'm sorry you ca...
why not just have a
/tag <tag_name>?
Most tagbots don't do that. You do /tagname or !tagname or whatever the prefix is. It's the most common UX of all bots that have this sort of feature. It's a workaround, sure, but it's not the best possible solution.
I just want to give an add-on to this issue since it hasn't seen any movement (probably because of holidays). I understand that the reason for this coupling is because the WYSIWYG editor is a completely different system from the legacy textbox, which has various features that slash-commands rely on and wouldn't easily be accomplished using plaintext.
A potential solution I can think of to resolve this would be to consolidate the legacy chat box with the WYSIWYG editor, instead of maintaini...
As of right now, granting the scope applications.commands.update to an application allows the token to update the slash commands of any bot that the user that authorized owns. This scope makes perfect sense when an application is using client_credentials to get the owner's token to update its own commands, but not so much when granted through the regular authentication flow. If I'm authorizing a bot and I see that it requests "Update slash commands" in addition to "Create slash commands i...
Mentions for any member, in any channel.
I believe this is needed for server moderators who frequently use staff channels. Mentions for the user do not show unless they have permission to view this channel
This solves the problem of having to use a public channel where the mentioned user has permissions.
I've considered some alternatives like using a string type.
https://user-images.githubusercontent.com/64027609/103479462-c4165680-4d9b-11eb-952c-c9cf55164c34...
We're told that this is coming in a future update.
It'd be nice if this was compatible with the Deno environment.
@Apacheli as of 0.12.0, it is now deno compatible ๐! Check the readme on the GitHub for more information on how to use it ๐
[discord/discord-api-docs] New comment on issue #2443: Concerns about applications\.commands\.update
Yeah, this scope is confusing. I myself thought that applications.commands.update was needed to allow the application to create/update slash commands when authenticating with a bearer token instead of a bot token.
Now, I think I may have requested by error this scope when doing my first tests with a few friends...
Ciao penso di aver trovato un piccolo bug vi allego la clip
https://cdn.discordapp.com/attachments/544259046333612063/795311867764801536/2021-01-03_16-20-37.mp4
This repository is for API issues only. For support with the client, please contact support. To report bugs, join the Discord Testers server.
Description
When a users posts a message containing a link/url with an embed, the "MESSAGE_CREATE" event that is sent might contain an embed with an embed provider with its url field set to null, even though the documentation (https://discord.com/developers/docs/resources/channel#embed-object-embed-provider-structure) states, that the fields either have a non-null value or are not present. This leads to issues in deserializing a message in a null-aware language like Kotlin...
Description
The interaction for a "Ping" does not have fields that the docs says it should - of course I get why there's no guild_id associated with this, but at least set a note.
Steps to Reproduce
Log the interaction body you get when you add your url as an endpoint.
Expected Behavior
There is a note on the docs that ping interactions are special.
Current Behavior
https://discord.com/developers/docs/interactions/slash-commands#interaction no notes or a...
Description
After 17 characters, any data values in an integer begin to corrupt.
Steps to Reproduce
Simply set up a command that outputs the interger value given.
json = {
"name": "test",
"options": [
{
"name": "interger",
"type": 4,
}
]
}
With the python libraries I used (referenced below), I had the following code:
@slash.slash(
name='test',
guild_ids=guild_ids,
options=[{
...
Description
The request is for the client to allow and/or auto-complete a user's snowflake ID pasted to a mention of the user if that user exists in the guild. It could be something like this:
Does the pasted number resemble a user snowflake in this guild?
If yes, change it to a mention of the user. If no, delete and give a client-side error.
It could also have a "Paste" button that only shows if developer mode is enabled and if the clipboard resembles a user snowflake I...
perhaps an argument could be made to allow member mentions without the member actually existing in the guild, e.g. pre banning someone / people.
ig the id in the title is supposed to be flags?
This behavior is considered working as intended. In JavaScript/JSON there exists a maximum safe integer, which is 2^53 - 1 (9007199254740991). If you expect larger numbers you will need to utilize a string field at this time.
ig the id in the title is supposed to be flags?
Yes, of course. Thanks!
Description
On some servers, the Voice WebSocket connection is closed with 4014 Disconnected when the bot is moved around in voice channels. The discord app also receives the same close code on these servers. I think that we should either document that the close code 4014 Disconnected is used for voic...
I think there should be no reconnect as the voice server remains the same.
If you carefully read the logs you show in your video, you can tell that this is not true. Bigger servers do not use the same voice server for all channels. The connection is closed because the server is changing. Making a new close could would be breaking for existing implementations, such as JDA which rely on the current behavior.
I think there should be no reconnect as the voice server remains the same.
If you carefully read the logs you show in your video, you can tell that this is not true. Bigger servers do not use the same voice server for all channels. The connection is closed because the server is changing. Making a new close code would be breaking for existing implementations, such as JDA which rely on the current behavior.
I have updated my issue then to the previous version, but I did not realiz...
Description
Similar to pending for the membership screening, it'd be nice to have a way to know if someone passed the server verification or having pending cover it as well.
Why This is Needed
To make sure not to give a role to a member that didn't pass the verification; since giving a role makes them bypass it
Alternatives Considered
Checking if the member has sent a message
you can't pass membership screening unless you have passed the server verification level
you can't pass membership screening unless you have passed the server verification level
This is good to know, however not all servers use or probably will use Membership Screening (unless it becomes mandatory.. dunno). It would be useful if the pending boolean was also tied to the level in servers that don't use Screening ๐
Oh you're right, although, I have a verification level of High (email and 10 mins in server) it seems to only be asking for the email, and ignores the wait 10 minutes part
I think a lot of these problems result from the fact that what various Discord API libraries do on their own now needs to be supported by Discord itself. Just comparing the requests in here with what I know discord.py supports:
- (Naive) aliases - 100% possible to map
message.content.startswith(('embrace', 'hug'))to the same function, but no way to do it in slash commands - Hiding inaccessible commands -
discord.py, at least, has a system of checks that removes items from its!help...
That would keep user experience, but still allow for much more advanced argument types
Description
Allowing the server to respond to the post request for the interaction with a http error code (maybe 422/400), having a reason with the response, and then reflect that on the client side (do the red shaky thing with the reason). This could allow for more advanced command validation, like say a parameter should be a string, but should be on the server's database. The server could then process that and either give a 200, saying that everything went ok and the user entered ...
If someone has a verified phone number, they'll always bypass the 10 minute timer.
74d8607 Added DiscordPHP and DiscordPHP-Slash to commun... - davidcole1340
Description
Logging requests for a webhook's avatar URL when executing a webhook, the only request header set is a user agent (and that doesn't even specify Discord as the requester.)

Why This is Needed
Images can change. For my own usage, this is with webhook avatars. Webhooks frequently represent messages from a person, and people are able to change their avatar, say represented at site.com/avatars/username.jpg. T...
I like this idea; however, with the 3 second timeout that currently exists for interaction responses, there's a far greater chance an error code like this might get lost because the backend takes too long to determine whether something is or isn't valid.
Since this also only mentions the http callback interactions, alternative solutions that also include the gateway method should be considered - perhaps not a HTTP error code, but rather a property in the returned response payload?
This is working as intended. We specifically do not obey these headers here, as we require consistent cache performance performance here.
I sort of skimmed through most of this so I'm not sure if this has been mentioned, but why not have a "Increased Slash Commands" system like there is for sharding when at 250,000 servers? Just like intents verification, show proof of your need for more than 50 commands. This could be maybe a few tiers, like going from 50 to 100 to 250 commands. Not sure what other people's thoughts would be on this, but this is just what came to my mind when I read this.
Can we at least get some documentation on the expiry rules of the cache? As of now, it's a guessing game. A header that indicates when the avatar will expire would be nice.
Why not support the Cache-Control header to allow the web server to specify how long to cache the images for? Accepting that header shouldn't cause any hit to performance and everyone wins. That plus a minimum cache age (say, a day) would be amazing.
The only other "solution" to problem is setting a random query pa...
having more commands is not a privacy/security issue
Neither is large bot sharding, which was also mentioned. I think requesting a command limit raise makes some sense, at least for global commands.
I totally agree,
Adding a json schema or some sort of typing system would be great for developers who are looking to interact with discord's API in strongly typed languages
Description
Recently I have been messign around with the new slash commands and came upon an issue where if I type an incorrect option, switch channels, then come back to the original one, I have to press enter twice to get the invalid choice error message.
Steps to Reproduce
- Type a slash command with an option and an invalid choice (my example was
/testhelp category: ffwhen my options are entertainment or minecraft) - Switch to another channel anywhere in Discord
...
I don't believe that having the gateway session hang and crash due to incorrect parameters sent was intended, neither did I see it documented. I can get behind this being low priority and nobody having the time to look into it, but saying it was intended seems plain obnoxious.
The same also occurs when sending an invalid status/presence update payload
If you have the exact conditions on any server it will not be able to mark here or everyone
Steps:
1 - Take any server (that you can execute the bug, permissions: manage jobs, mention all jobs)
2 - Create two positions, one with the name of everyone and the other with the name here (both being mentionable or not (but the bug was discovered being mentionable))
3 - After that try ...
Having the command limit depend on bot scale would make having a staging/test bot environment impossible.
I have a questions?
this features is still working like before.
now a day we can not get list of guilds, channels and messages from oAuth2 bearer token?
accessing channels and messages via OAuth2 was never possible; you can get a user's guild list with the guilds.join scope and Get Current User Guilds
Actually, with messages.read and rpc.notifications.read, you're able to read the contents of DMs (last 50 messages) whenever a notification is received. This includes group DMs
Should probably note that to do the above you need a program running that can connect to the user's local Discord client.
After discussing this with @k9lego earlier, we decided that it would also be a good idea to apply the same concept to CHANNEL and ROLE option types.
Description
When following the client credential flow, only select scopes are permitted for use (identify and applications.commands.update). If another scope -- such as email is specified, an error is thrown. Is this expected behavior?
Steps to Reproduce
- Copy the following code snippet
var id = "";
var secret = "";
var headers = new Headers();
headers.append("Content-Type", "applic...
I like this idea; however, with the 3 second timeout that currently exists for interaction responses, there's a far greater chance an error code like this might get lost because the backend takes too long to determine whether something is or isn't valid.
Yeah, that could be a problem. Although it is possible it could be raised in the future. But 3 seconds is still a pretty long time to just validate arguments.
Since this also only mentions the http callback interactions, alternative...
๐ค I also tested this and it only worked for identify and/or applications.commands/update
Ok guys, thanks, gathering all yours advice , we got this:
- the only way to read channels and messages is by bot's account an this bot has to belong to the server chat. is it right?
- another way is installing discord RPC in linux/windows/mac and use the scopes "messages.read" and "rpc.notifications.read" pointing to Discord RPC endpoint API.
is it ok, what I just said
?
sort of, but RPC doesn't use a HTTP endpoint, it locally connects to the running Discord client
I can reproduce this. I am also not able to use guilds scope.
My curl is curl "https://discordapp.com/api/oauth2/token" -H "Content-Type: application/x-www-form-urlencoded" --data 'client_id=...&client_secret=...&grant_type=client_credentials&scope=identify email'
that doesn't follow the docs? it says to send the id and secret as basic auth, not in the data
got it!,
thanks @advaith1 and all you guys!
Just one last thing, this feature(read channels and msg from HTTP Official API) isn't in API Discord roadmap to be enable or in future developments?
@muddyfish I tried copy pasting your curl and it's still not working
hackintosh:~ spiral$ curl "https://discordapp.com/api/oauth2/token" -H "Content-Type: application/x-www-form-urlencoded" --data "client_id=$client_id&client_secret=$client_secret&grant_type=client_credentials&scope=identify email"
{"error": "invalid_scope", "error_description": "The requested scope is invalid, unknown, or malformed."}
hackintosh:~ spiral$
hackintosh:~ spiral$ curl "https://discordapp.com/api/oauth...
It does? The Python example for oauth looks like this:
API_ENDPOINT = 'https://discord.com/api/v6'
CLIENT_ID = '332269999912132097'
CLIENT_SECRET = '937it3ow87i4ery69876wqire'
REDIRECT_URI = 'https://nicememe.website'
def exchange_code(code):
data = {
'client_id': CLIENT_ID,
'client_secret': CLIENT_SECRET,
'grant_type': 'authorization_code',
'code': code,
'redirect_uri': REDIRECT_URI,
'scope': 'identify email connections'
}
headers = {
'...
Oh, I see. I can get the scopes successfully on an application owned by me, but not one in a team (where I am the owner). @Fyko does this apply to you?
I doubt they will expose that info to OAuth2, as that's what bot accounts are for. Bots also use the "HTTP Official API" but have much more access to the server data because they were explicitly added by a server admin.
Oh yeah, teams behave differently as it's effectively working on the team user itself, and those other scopes don't make sense for teams
It does? The Python example for oauth looks like this:
API_ENDPOINT = 'https://discord.com/api/v6' CLIENT_ID = '332269999912132097' CLIENT_SECRET = '937it3ow87i4ery69876wqire' REDIRECT_URI = 'https://nicememe.website' def exchange_code(code): data = { 'client_id': CLIENT_ID, 'client_secret': CLIENT_SECRET, 'grant_type': 'authorization_code', 'code': code, 'redirect_uri': REDIRECT_URI, 'scope': 'identify ema...
It doesn't make all that much difference; the issue is caused by using a bot on a team
After further investigating, the problem only occurrs when an application is owned by a team. When using the client id and secret of an application owned by the user directly, the error subsides.
Q: if you a bot give you a role can u bypass the membership screening?
5463dec Fix spelling for repair, authorization and mutu... - Mukundan314
b84fcde Fix broken link to Interaction Response model (... - goodspark
(We're just getting back from holiday break so excuse the late response)
If you aren't connecting to the gateway, would it not be simple enough to store the application ID as a constant? Much like you'd need to for a token anyway?
This is a bug. The user autocomplete should show all users in the guild.
As far as supporting users outside the guild, that is definitely more of an edge case, but there may be something creative we can do there with recognizing userids.
This is a super cool idea that unfortunately requires a ton of work. We would basically have to refactor our entire auth system to support it, which is not in scope for any foreseeable future.
I, personally, like the idea a lot. It's on my mind of "cool things we could do" but is not planned nor is it likely to be planned.
This is probably necessary due to commands in DMs. It doesn't make sense in the context of a guild channel, since you already know the guild you're in, but for commands in DMs you may need to specify which guild the user wants (if they and your app share multiple)
@Ratismal you have it mostly correct, yes. This toggle "works" to turn off slash commands because it's actually entirely changing our text editor. The new editor uses the Slate library, which we rely on heavily for slash command implementation.
"Turning off" slash commands is definitely not intended. In fact, the old editor is used by an infinitesimally small percentage of people at this point; I think we had considered just retiring it but decided not to just for scope reasons. Anyway, we...
What if you have two arguments that are optional, but rely on each other, and if one is given, the other must be given too?
That in particular is interesting, thanks for bringing that up.
As far as....idunno how we'll call them, "split" arguments? "Multi-arguments"? Wanting to accept a user or a role, or a role or a string, etc. I think there is actual distinction in the details
For example, if you wanted to allow a user to give you a user mention or a user id, there is a world in ...
As others have brought up enough, development iteration should be done with guild commands, presumably in your own test guild. Mutating global commands for testing and dev iteration is not a great user experience to begin with.
However, you raise a valid point in the state of your commands vs. your code as global commands propagate. If you changed an argument that was a user to a channel, you may be getting payloads from guilds that are valid for those users, but do not match your code...
Yeah, currently intentionally undocumented as we finish up the frontend for ephemeral messages on mobile. The UI isn't quite done!
hm yeah that would probably be better, I'll change it
02b1cda Fix /whooks/app formatting (#2333) - Apacheli
bd1c772 optional info block on command edit endpoints - msciotti
3 seconds is less of a technical number and more of a user experience number. There's been some research done that suggests that 3 seconds is about how long a user will wait and still perceive something as "fast". If you need longer than 3 seconds to do whatever option you need to do, you should considering doing an ACK with an async response.
However--we'll look at those numbers from GCP/AWS/Azure/CF Workers to see if we're in line with the best practices they recommend.
As far as user...
One consideration is the debugging experience, as well. 3 seconds might be more than enough for a release build on a good connection, but if you're stepping through line-by-line, trying to figure out some backend stuff, it's not great to then hit a 404 just because you weren't quick enough.
We will see if we can support multiline stuff (I know there was some real nastiness with the library we use around it). I think this is probably better solved as not a slash command interface, though. I imagine having a form modal with a text box would be much preferred? :p
We talked about this briefly before break and I think this is a bug on our end; our clients are re-sorting options alphabetically. We should instead just be respecting the order in which you send them on command create, which I assume would solve the issue?
Yup ๐ This was an oversight on our part with how we're currently handling subcommands and groups. Those are all at the top level in the UI right now, so default is...doing nothing. When we move them to an autocomplete style instead, default will allow you to use the base command again (which is also currently not working)
So for example, you could have
/tags <-- this is default
/tags add
/tags list
I think this is, in essence, a duplicate of https://github.com/discord/discord-api-docs/issues/2325 yes? This one has more explicit examples but I think both get to the heart of the issue. I'm gonna close this one and dedupe it into that one, feel free to use that issue to add more context if necessary.
This is planned work--didn't finish all the smaller UI bits in time for the dev preview.
Sorry, slightly confused and didn't see it in the video. Does your bot also have a slash command called /nickname that is not showing up in the picker?
Or, are you using message-content bot commands and because your command matches a slash command, it can't be used?
Or, are you using message-content bot commands and because your command matches a slash command, it can't be used?
this
Definitely valid. A little tricky from an API ergonomics perspective--you respond to an interaction by issuing an HTTP response code, so we can't like...respond to your response ๐
We could perhaps allow you to GET /@original much like you can EDIT and DELETE. It would be an extra step but maybe an OK enough short term fix?
I ran into this one myself. Our API is sometimes overzealous in normalizing things like this. It's intentional, but also frustrating. We're discussing!
Maybe if the response is sent to the /callback endpoint you can respond to that with the message ID, and provide that GET /@original endpoint for the REST only applications
There doesn't actually have to be a bot in the guild anymore, so we can't always assume that a bot profile will exist to bring up. This will probably need to replaced with some other kind of info card for the application instead.
on desktop it shows the bot profile if the bot is in the guild
Very cool idea. I think there's some obvious wins for things like buttons in the future--press this button to run this command--but the idea of a built-in markdown syntax to reference them anywhere is pretty neat
I'm gonna hijack this issue and dedupe others into it for this kind of request of "an ID for that data type should be a valid argument for that type"
i.e.--a user id should be valid for USER, role id for ROLE.
Actually going to de-dupe this into https://github.com/discord/discord-api-docs/issues/2449. This issue was created first, but that one is a bit more comprehensive
Appreciate it! Thanks for potentially considering our suggestions!
that issue doesn't mention showing the other users int he autocomplete menu though?
Fair, that is a known bug to be fixed. I'll...unclose this one? Managing issues is fun.
I think this is probably better solved as not a slash command interface, though. I imagine having a form modal with a text box would be much preferred? :p
For my use cases, absolutely, yeah, a full "text area" control would be much better. Although not having either of those options is an adoption blocker for me right now, so I'm not sure what would work in the short term? Are generalized full form modals a planned upcoming feature?
I feel that there are two alternatives to this:
Alternative 1: Keeping Command Limit
Before you guys start yelling at me saying that the whole point of this issue was to raise the limits, let me explain my thinking. So, we are all (at least most of us) developers who are fluent in the ways of the computer, and are all probably powerusers. Unfortunately not everybody in this world is like that. There are many users of discord who instead of typing a command out, use the nice list of co...
- up to 10 command groups with up to 20 commands each
Maybe instead of this, it is 200 total grouped commands where each command group can have up to 50 commands (which if all your groups do, leaves you 4 groups) and you have up to 20 command groups.
Regardless of how its implemented, this will probably be more relevant after subcommand grouping displays are fleshed out.
Description
Fetching a guild template via the API on v6 gives you a serialized_source_guild in v8 payload serialisation and not v6.
Steps to Reproduce
GET /api/v6/guilds/templates/{code}
Expected Behavior
v6 guild data (e.g.permission_overwrites are in their old format)
Current Behavior
v8 guild data
@Rapptz I cannot reproduce.
I have created the following Server Template: https://discord.new/tTDygTUQfCf2
v6 call:
โ discord git:(master) curl https://discord.com/api/v6/guilds/templates/tTDygTUQfCf2
{"code": "tTDygTUQfCf2", "name": "asdf", "description": "asdf", "usage_count": 0, "creator_id": "141065743197405184", "creator": {"id": "141065743197405184", "username": "tpcstld", "avatar": "ea56995ac11b6b9dce6335a3916cefec", "discriminator": "9522", "public_flags": 129}, "creat...
@tpcstld It's right there in your snippet.
"permission_overwrites": [{"id": 0, "type": 0, "allow": 0, "deny": 1040, "allow_new": "0", "deny_new": "1040"}]
The types for permission overwrites used to be 'role' and 'member' in v6.
@tpcstld It's right there in your snippet.
"permission_overwrites": [{"id": 0, "type": 0, "allow": 0, "deny": 1040, "allow_new": "0", "deny_new": "1040"}]
The types for permission overwrites used to be 'role' and 'member' in v6.
they were always integers in the guild templates, actually.
Nevertheless, this is a valid bug and will be fixed.
Description
When a slash command is used in iOS and a custom emoji is used in a string option, it is sent as :name:, not as the custom emoji format.
Steps to Reproduce
- Have a slash command with a string option
- Use it on iOS and include a custom emoji in the value
Expected Behavior
it sends the proper format (``)
Current Behavior
it sends :name:
Screenshots/Videos
 is documented now
Alternatively, could a flag in public_flags be used to indicate a terminated/deleted account?
@msciotti Union types would be nice. It solves the mentioned problem and is more future-proof than just having mentionable types.
@advaith1 So is is_pending is deprecated?
Buttons as another "interaction type" would absolutely be appreciated for me, but that sounds like a slightly-further-future thing. I was thinking about Markdown links but never managed to make an issue for it :)
My bot has a lot of "interconnected" prompts with occasionally opaque IDs that need to be copied/retyped in order to navigate. It's one of the absolute primary pain points for users of it, but so far there's been no clean way for me to improve it. Support for links or link groups,...
If someone has a verified phone number, they'll always bypass the 10 minute timer.
But someone didn't have a verified phone number and they still bypassed it
Also +1-ing here, as this would help with accessibility/usability immensely for my bots. The main one I'd like to implement this for is a form bot that uses both reactions and text to complete actions- while this works fairly well, the footer is enormous and hard to read due to having to explain the emojis/keywords for each action. Being able to link to something to do that action or having a button explicitly for it would be amazing. Definitely hoping something like this will be implemented!
That is precisely the reason for opening this issue, yes.
Couldn't you just split the token by the periods, take the first part and decode it from base64 to get the application id?
The documentation also doesn't make it clear enough what default actually does.
the first
requiredoption for the user to complete--only one option can bedefault
This seems to imply to me that it's an extra attribute on top of (or instead of) required to mark one particular required option as the first one to be filled in. What is the actual purpose?
This would seem to be client side bug. I suggest heading over to https://discord.gg/discord-testers as this repository is for issues with the api.
1f66a45 chore: correct hyperlink for Connection Visibil... - vladfrangu
a417bac Document permissions field on interaction.membe... - advaith1
Yup thank you. Originally intended this page to be more of a walkthrough and less of an API reference, but our structure is just not great for that right now, so as always it ends up being both :p
a90f985 Update the slash commands reference. (#2412) - mikeshardmind
Warn is fine for now. I want to talk internally about this behavior so I was on the fence about documenting it but they're out in the wild now, so may as well.
5155c22 Add warning about interaction response pings (#... - advaith1
f0487a1 Add intent calculator into community resources ... - Larkooo
Merge conflicts are pointing to your master branch, so don't wanna mess that up. Can you resolve the merge conflict + format the table?
4d24484 Document proxy_url on embed video (#2460) - advaith1
The UI has been updated to hide this permission on voice channels, but it is still available in our API. All channels are the same data model on our end. You can set this permission on store channels as well.
Because it's true in the API I would prefer the documentation to be accurate. It's low priority for us to validate these kinds of permissions on the API side since you can't do anything with them.
No need to remove DAPI--definitely still the place to go for library help
Looks cool to me. It's fair to be lenient on feature parity early. Are you planning to support the followup message endpoints?
[also merge conflicts for some reason]
@SinisterRectus what is your timeline on supporting slash commands in Discordia? I don't really want conflicting solutions to the same problem if it's imminent.
Thanks, I do plan on supporting followup message endpoints, I'll probably push a version with support later this weekend.
and yeah, looks like something else was merged after this PR. Fixed the merge conflict.
I don't have a timeline. I do want to support slash commands in Discordia, but I can say that it's not "imminent".
I have (at least) two branches for Discordia: one for the current version 2.x and one for the development of 3.x. Slash commands will go into the latter, but not until after feature parity is reached. I originally hoped to have a mostly complete version before the end of 2020, but for a variety of reasons, that did not happen.
Discordia has a small community, where I find t...
Looks good to us once the merge conflict is fixed. Thanks @Kamilla-K for the review!
This is good to go once that other PR lands. Thank you!
could someone from Discord answer https://github.com/discord/discord-api-docs/pull/2396#issuecomment-749446186? i could mention it in the docs if its clarified
I was aware that Discordia 2.0 won't receive slash commands support that's why this library was made. The library is done and now I want to work with next version of Discordia both with slash commands and overall. But currently there is no stable base to help with.
TLDR:
This is the only library to make slash commands work for Discordia 2.0 users, might be integrated in 3.0 version but not very soon.
added an explanation of screening
in 2fe4e62's desc I saw
true -> member is pending
false -> member becomes no longer pending (i.e., becomes a regular member)
not serialized -> member is not pendingwhich seems to indicate that
pendingshould only befalsein guild member update at the time the user accepts the rules, and it shouldn't be present anytime after; ...
ah, I see; that makes sense although it's unfortunate that bots can't tell if the member update event is being triggered by the member passing screening.
I've added a bit about when pending is included to the pr, I think it's done now.
Maybe also add to the member structure:
The field
pendingwon't be included in the member object attached to events that do not begin withGUILD_
hm, maybe just completely move it there?
yeah, that could work too
Rich presence button URLs are also only accessible with this endpoint; it would be useful for some moderation bots to be able to see a user's presence button URLs, for example, if a server admin wants to blacklist some domains.
- document that
waitis always true in Create Followup Message (always returns a message object) - document that Edit Webhook Message (and by extension, Edit Original Interaction Response and Edit Followup Message) returns a message object
- Documents JSON error code 50027 Invalid Webhook TOken
Couldn't you just split the token by the periods, take the first part and decode it from base64 to get the application id?
doesn't work for client secrets
would it not be simple enough to store the application ID as a constant?
that'd be the alternative, yeah; but it's still one more variable to substring in the URL, instead of a @me which is static
Description
Allow adding a message that is sent when the bot is offline. For example, the gateway could send a message to the user when the HTTP request to the interaction fails (or the callback times out).
Why This is Needed
- If a user wants to issue a command to a bot and the bot cannot handle the command (e.g., offline, technical issues), the user should be informed about that. I think this is better than just sitting there and seeing ... nothing.
- Bots are currently able t...
Possibly a duplicate of #2375 ?
Description
An endpoint to either:
a) delete all slash commands that are on all (!) guilds.
b) list guilds with slash commands.
Why This is Needed
There's no way to know which guilds you have registered slash commands for other than manual book-keeping, and that's error-prone.
Alternatives Considered
- Keeping a detailed log of slash commands
- Not caring about old slash commands possibly showing up on guilds and deleting an unknown slash command on the spot.
**Ad...
I do not agree! Please don't add this!
This is my personal opinion and my attempt to open this viewpoint to others.
Upfront conclusion: Quite unintuitively aliases cause decreased usability and user experience. I think we should see slash commands as a reason to re-think and question our habits from "how bots worked up until now" instead of trying to achieve feature parity by all means necessary.
<details>
<summary>click to show text (to not clutter thread overview)</summary>
Thi...
@almostSouji
As a user, I might even be inclined to believe these do different things! "Why has person A used !delete but person B !prune? Is one just everything and the other messages by a certain user? Maybe the last one who spoke? Maybe person C used !clear because it removes only bot messages? It seemed that way when they cleared the spam in #bot-commands at least!"
Bots can define descriptions for their commands, so if the bot owner, describe their commands concretely, the user c...
Please add the ability for server owners on Android devices to recover deleted channels and roles, this can help if a troll gets to admin and deletes channels or roles in bulk, this has happened to my server and a friend's server before. The server owner can make recovered channels and recovered roles only be able to be edited by the owner
Removed roles are deleted almost immediately and messages posted to removed channels are removed soon after API call. This is a feature.
Removed roles are deleted almost immediately and messages posted to removed channels are removed soon after API call. This is a feature.
What about it creates a copy with no messages?
You can recreate the objects with audit log data. Secondary data would still be lost, though like channel messages or which members had a role.
Aliases for standard emojis have always existed and worked fine (although custom emojis annoyingly cannot have aliases); I don't see why slash command aliases can't be added and work just like emoji aliases.
Could not find similar issue
Description
I have attempted to create a command for my discord bot !error, that would immediately DM me with issue description. I wanted to use ClientApplication.owner.createDM() method, but after adding const clientApp = new Discord.ClientApplication(); an error is given TypeError: Cannot read property 'id' of undefined at discord.js\src\structures\interfaces\Application.js:24:20. I have very recently started learning Js, so I wasn't able to ...
This is a discord.js problem, you should check out their discord and ask for help there, since this repo is for raw API bugs only
This is a discord.js problem, you should check out their discord and ask for help there, since this repo is for raw API bugs only
oh ok, I didn't know that! Sorry
Description
When I add a new global slash command via API, this slash command is only available on the server after a rejoin of the bot.
Steps to Reproduce
- Bot joins server.
- Create Slash Command via API.
- Slash Command is not available.
Expected Behavior
- Bot joins server.
- Create Slash Command via API.
- Slash Command is instant availabe on all server.
Current Behavior
see Steps to Reproduce
Global slash commands are not propagated instantly, you have to wait an hour for them to appear. You should be using guild commands for testing.
Global slash commands are not propagated instantly, you have to wait an hour for them to appear. You should be using guild commands for testing.
I waited more than 24 hours and the commands are not available on the server.
Are you sure you got a successful HTTP response when creating the command?
Are you sure you got a successful HTTP response when creating the command?
Yes and after rejoining the bot, the commands are available.
Do you see APPLICATION_COMMAND_** events in your client/bot console? If so, you may need to press [Ctrl]+[R] in your discord client to reload the window. I am encountering the same when you have many commands to create, delete, or update. And does the issue also occur on other users that are using your bot?
Do you see
APPLICATION_COMMAND_**events in your client/bot console? If so, you may need to press [Ctrl]+[R] in your discord client to reload the window.
No, I see no APPLICATION_COMMAND_** events (if you mean the developer console of discord). My bot is an only webhook based bot.
And does the issue also occur on other users that are using your bot?
Yes, all users on the server with my bot can't see the commands after create until I reconnect the bot.
did the bot have the new commands scope for that guild already? this isn't given retroactively to bots already on servers yet
did the bot have the new commands scope for that guild already? this isn't given retroactively to bots already on servers yet
Thank you. This was the problem. I developed in dev server, where the bot had the correct scope. But the bot was already on my live server and I didn't activate the new scope. Not it works.
I will have to agree with Souji here.
Most of the time aliases are used to achieve ease of use (avoiding issues when people who have seen !clear work for another bot and attempt to use it when your command is !purge).
This was only necessary because people have no way of knowing what commands a bot supports without either trying them out or viewing some sort of documentation. With the commands presented in a UI, this becomes a non-issue.
Agreeing even more as a power user; autocomplete i...
Most of the time aliases are used to achieve ease of use (avoiding issues when people who have seen !clear work for another bot and attempt to use it when your command is !purge). This was only necessary because people have no way of knowing what commands a bot supports without either trying them out or viewing some sort of documentation. With the commands presented in a UI, this becomes a non-issue.
I agree with that, but I also think that "keywords" (see my previous post) could be the ...
After reading your the last comment, maybe there is a compromise here:
Allow aliases, but restrict the number you are allowed to have. I like a similar or other more descriptive tag as that is pretty standard UI across the web
I agree with that; I have seen users that invite few bots that have overlapping (legacy) commands, which - I think this is bad UX, but it was okay for them because they had different prefixes. Now slash commands are enforced to have the '/' prefix, which causes ...
After reading your the last comment, maybe there is a compromise here:
Allow aliases, but restrict the number you are allowed to have (2-3 maybe)
I think it is good to restrict the number, but I think we should not be too limited. In this case, maybe there is a case where more prefixes could be useful (e.g., if you do not find one word to explain your command good enough and have to use words that are not commonly used in the language). It was thought that the 50 commands limit wo...
Description
The apis User object should contain a timezone field, which would be his last used timezone or maybe changable with a setting in the client. It should make it possible to interpret times the user writes.
Why This is Needed
I have a Discord bot which has a remember feature. So if for example a user writes he wants to be remembered at 8:12 pm to go with his dog, the bot currently can just remember the user at 8:12 pm UTC because I dont know the current time...
Exposing user locale or timezone is kind of a security risk since it exposes approximate location, but some sort of timestamp field would be nice.
you know timestamp does that too, right? :P with even higher precision than locale.
Would it not be possible to just have a bot command like ~!timezone` where the user can set their timezone if they wish?
Description
The reaction counts on the reaction objects are reporting incorrect counts.
Steps to Reproduce
GET /api/v6/channels/381965829857738772/messages/796966422877962260
The message history endpoint (i.e. /channels/:channel_id/messages) seems to not have this problem.
Expected Behavior
"reactions": [
{
"emoji": {
"id": "596577438461591562",
"name": "upvote"
},
"count": 2075,
"me": false
}...
Deploying a fix for this now.
You can recreate the objects with audit log data. Secondary data would still be lost though, like channel messages or which members had a role.
Well, I can't rely on the audit log data alone, the troll who got admin deleted nearly all channels, except the rules and community updates channels.
discord-interactions.py is a Python library for using the Discord Interactions API via the outgoing webhook functionality.
It provides multiple abstraction layers, separation between command structure and logic and is currently mainly based on Flask as a web server.
One of the core features is the so called Object-Command Mapper, which lets you create classes for your commands that function both as a generic definition of the command's...
Exposing user locale or timezone is kind of a security risk since it exposes approximate location, but some sort of timestamp field would be nice.
I understand your concern but I think the locale field for language already tells about the location. I think a timezone has a bigger range than a language (if its not english).
Would it not be possible to just have a bot command like ~!timezone` where the user can set their timezone if they wish?
Of course its possible, but as a user I wouldnt like to have to enter my timezone. I would prefer it automated.
Exposing user locale or timezone is kind of a security risk since it exposes approximate location, but some sort of timestamp field would be nice.
I understand your concern but I think the
localefield for language already tells about the location. I think a timezone has a bigger range than a language (if its not english).
i strongly disagree. Locale pins you to any country anywhere in the world. Timezone exactly pinpoints your location. If a user was +5 3/4 H you would be abl...
If you have a bot, you can use the audit log data to recreate the objects. It doesn't matter how many were deleted as long as the logs haven't expired (45 days at last check). If you don't have a bot and you're looking only for Android client support, you're in the wrong place.
What about allowing them but privacy-gating per-user? That way, each user can choose whether to expose that (to nobody else, to friends, to guild members, to friends of friends, or to everyone).
maybe this is something that could be done in slash commands? have a datetime type, the client can then use the users local timezone and just return UTC for bots to use, allows easy time picking without exposing anything to the bot
Description
Document what tense, person, etc. the default slash commands Discord provides are. (and other stuff like starting with a capital letter or whatever)
Why This is Needed
Not having 4 different conventions for 3 different bots + Discord.
Alternatives Considered
- Normalizing description and name in client (this doesn't help with tense / person though)
- Checking manually - I'm not 100% sure that Discord is consistent between locales and I don't care to spend 5 h...
Hey :wave: More on more, I experienced that users are making small pull requests that fix one small change in the documentation. So I've prepared a big PR to fix them all at one slap. Here is my collection of consistency issues, wording issues, grammar issues, spelling mistakes I've encountered while rereading the entire documentation.
I've made the following changes:
- Fix comma placing mistakes
- Fix consistency issues (e.g., writing
URLandurl) - Fix particle issues
- Fix gramm...
` should not have been removed here
pretty much all of the edits in tables mess up the table formatting
pretty much all of the edits in tables mess up the table formatting
Fixed via 178eb5392a50fcc2558fa3244a07609f8f9a1690
looks like this commit actually changed the table formatting? the spaces aren't supposed to be in this line (was switched a while ago)
Fixed via 5c744de1f98c29a6fe0423d8e1a4ba5793844162
i feel this version was more correct.
This is pretty strange wording in general here. Not sure if it would be best to just cut out the redundant second user.
user cancelled the purchase flow is correct. Comma is unnecessary.
@Lachee Could you start a review using suggestions (Ctrl-G on the lines)? That would make applying the changes a lot easier! ๐ And thanks for reviewing this
should be "user canceled the purchase flow"
here the comma acts as a break, to suggest the use case of the count rather than dictate the use case.
Now that we've weeded out the trolls, let's get your server up and running with some fancy new features!
` should not have been changed to '
was better without the comma
Full stop before For Example is correct. Should be
". For example, ...."
user id shouldn't be hyphenated.
There's already punctuation here (the exclamation mark).
Not sure why the change here.
Consider adding a : after "layers" (and not removing the comma after "operations")
"being provided" is correct here
A comma probably works fine here (?)
| 29 | PurchaseCancelled | user canceled the purchase flow |
As you develop your game, you'll constantly be making improvements. You want real-time feedback from players, and there's no better place for that than Discord. In the past, players would need to dig through menus to find out how to unlock test branches, as well as to remember secret passwords _and_ typing them incorrectly. Was that an `I` or an `l`? `O` or `0`?
There's no feeling quite like accomplishing a goal that you've set out to achieve. Is killing 1000 zombies in a game as great an achievement as climbing Mt. Everest? Of course it is, and I didn't even have to leave my house. So get off my back, society.
Returns the count of files, for iteration.
In programming, mostly is pathname a single word, see https://de.pons.com/รผbersetzung/englisch-deutsch/pathname
I'm not big on grammar, but "especially" gives me the impression that we'll be talking about more than what we're "especially" talking about. I think "specifically" actually fits better here.
The single backticks here around bot should not be changed -- single backticks around a word or set of words makes it look like this.
We've added documentation around a brand new feature: [Gateway Intents!](#DOCS_TOPICS_GATEWAY/gateway-intents) Gateway Intents are a great way to specify which events you want to receive from our gateway. Go on, save yourself some bandwidth and CPU usage.
Bots and apps are the lifeblood of the Discord development community. They come in all shapes and sizes, from small hobby projects for your server with friends, to huge projects that live in hundreds of thousands of servers. We love seeing the unique, fun, and sometimes downright strange (in a good way) creations that come from our community.
The HTTP API implements a process for limiting and preventing excessive requests in accordance with [RFC 6585](https://tools.ietf.org/html/rfc6585#section-4). API users that regularly hit and ignore rate limits will have their API keys revoked, and be blocked from the platform. For more information on rate-limiting of requests, please see the [Rate Limits](#DOCS_TOPICS_RATE_LIMITS/rate-limits) section.
Discord's API is based around two core layers: An HTTPS/REST API for general operations, and a persistent secure WebSocket based connection for sending and subscribing to real-time events. The most common use case of the Discord API will be providing a service or access to a platform through the [OAuth2](https://oauth.net/2/) API.
Ensure you use the proper content type (`image/jpeg`, `image/png`, `image/gif`) that matches the image data being provided.
This was one of my tries to fix these incomplete/fragment sentences; I will revert this because this would cause only inconsistency.
Okay, this is funny ๐ Thank you!
Unintended, thanks ๐
Consistency, mostly I capitalized Gateway because it defines a more specific term, but I will revert this - Thanks ๐
Gateways are Discord's form of real-time communication over secure WebSockets. Clients will receive events and data over the gateway they are connected to and send data over the REST API. The API for interacting with Gateways is complex and fairly unforgiving; therefore, it's highly recommended you read _all_ of the following documentation before writing a custom implementation.
See one of my other comments.
I think Handle serialization whichever way works best for you might work well here.
Description
Editing an embed with another embed occasionally edits to the new embed, then edits back to the old one.
Steps to Reproduce
Send a message with an embed:
Edit it to another embed
Occasionally, it'll edit back to the original text.
Expected Behavior
It should always edit to the new embed.
Current Behavior
It edits back to the original embed occasionally
Screenshots/Videos
http://i.fionn.live/e64c25.png
**Client and System In...
Just spent a decent amount of time trying to figure out what the hell "Doesn't look like anything to me" means. Finally found this issue through Google searching. Still not entirely clear on what it means. Can v7 be used or not?
This part of the documentation fails at documenting.
v7 is probably still publicly accessible but there's no reason to use it. Everything that it had can be found in v8.
Regardless if it "fails at documenting", discord's official stance is they don't want to change it.
Description
Editing reply message that doesn't initially ping, pings the user.
Steps to Reproduce
- Create a reply message that doesn't ping the replied user
{
"content": "testing",
"message_reference": {"message_id": "123"},
"allowed_mentions": {"parse": []}
}
- Edit the messages content
{
"content": "testing2"
}
- Observe the message in the client
Expected Behavior
Respects info provided and doesn't ping
**Current Behavior...
Agreed. It's bad enough that, for my little "no cloud service needed" image pastebin tool for the privacy-conscious (UPnP and "what is my external IP address?" support planned before I make my first release), I feel the need to set up:
robots.txt(Which you ignore.)X-Robots-Tagfor a second chance at getting bots to understand how to handle direct image links<meta name="robots">for bots written by people who don't know aboutX-Robots-Tag- A middleware to blacklist User...
In its current form, the documentation for POST /channels/{channel.id}/messages is confusing and messy.
Disregarding the formatting issues, here are my core problems with it
-
The two content types are documented simultaneously, using just one table for all fields
- This is understandable in terms of keeping the section brief, but without expanding the table with additional columns or more detailed descriptions, you need to read a lot of extra information in order to understand...
0555e44 update permission note - catherinettt
[discord-api-docs] Branch cat\-update\-permission\-note was force-pushed to `dd91231`
Hello,
When trying to invite Discord bot, Ticket Tool#4843 (557628352828014614 ) we receive this 500 Internal Server Error. This error only seems to be for this bot as we have no problem inviting any other bot.
The invite link to bot is here
The website for bot is here
I do not need the bot, but I checked it out and for me the exact same error.
I am also to reproduce, it seems like that the issue only appears when using the bot OAuth2 scope.
When using applications.commands only, you are able to select a server:
https://discord.com/oauth2/authorize?client_id=557628352828014614&scope=applications.commands
When using bot the site loads for a short while and then fails with a 500 Server Error (error code 0).
When using both, still the same as when only using the bot scope: https://discord.com/oauth2/authorize?client...
There is an internal service outage which is causing this behavior. Impact started around 13:00 PT, and our infrastructure team is already working on it.
-
People often think that this section is talking about the HTTP API rate limits so I added an info block to clarify that it is not
-
The current documentation says it limits "sending events" but that is inconsistent with the descriptions later in the page:
Commands are requests made to the gateway socket by a client.
Events are payloads sent over the socket to a client that correspond to events in Discord.This clarifies that it is about sending gateway commands.
Description
Roles given to members by integrations (especially those completely managed by an integration) should not allow a member to bypass membership screening.
Why This is Needed
Some community servers are centered around a creator on twitch or youtube. Often times these servers have a integration set up so that subscribers will have a role. Because having a role bypasses membership screening, any members that would be granted these roles never see the membership gating ...
I'd agree with a datetime type in slash commands, as well as some kind of "rich text" equivalent of strftime? Throw the client a unix timestamp and a format string, and it gets rendered as appropriate. I think that would solve most of the problems on its own without the privacy concerns. Plus, I'd just love to see more rich text options in general ;)
Sending localized times is already possible, in embeds. See https://discord.com/developers/docs/resources/channel#embed-object-embed-structure for that ability.
It is, but that only gets you one per embed, though. Wouldn't allow for eg. a list of things where each has an associated local timestamp, including it as part of a sentence (eg. "this user was last seen at XX:YY pm").
Is this still a planned feature? This issue is over a year old now...
Description
Steps to Reproduce
Expected Behavior
Current Behavior
Screenshots/Videos

Client and System Information
guild_hashes:

threads are of course not released yet
This doesn't look like intended to me, only just an overlook and I will explain why:
First starting with an rhetorical question to prove what night said is actually false:
If this is the intended behavior, then all bit-wise flag is also limited to 52 bits. The docs contradict it at Permission.md. So what is the Truth?
By checking the client source code, found, that Discord uses BigInt class for fl...
They changed permission values to strings so they can add more bits; JSON does not have BigInts so the numbers must be strings in the JSON and later parsed to BigInts by the client if needed (which is how permissions work).
Then why not send the integer values as string, like at the case of ids in general.
if you want it to be a number then use integer, if you want it to be a string then use a string...
most people using an integer option will want it to actually be an integer, and there is a string option type for a reason
most people using an integer option will want it to actually be an integer
- You can get invalid user, role and channel id-s. Who wants a valid id anyways.
- Integer choice values over 52 bits are broken too. Nice to get a 3rd value back if you have 2 choices.
- You get Internal Server Error (500) when creating an application command with choice value over 64 bit integer.
I assume all of these is also intended.
yes? it is very well-known that there is a maximum limit for the number type and you should store bigger numbers as strings, like for discord ids; there is nothing unusual or unexpected about this
however, the error 500 is a bug and there should be a separate issue opened for that
Integer choice values over 52 bits are broken too. Nice to get a 3rd value back if you have 2 choices.
Thank IEEE 754 for that limitation, and RFC 8259 for adopting said limitation to be fully compatible with JavaScript, which the JS Object Notation derived from.
That being said, it's not something Discord can fix, they can't just ignore many web standards that have been set in stone for almost 8 years.
For all intents and purposes, you shoul...
ARM64 is now a lot more important with Macs now going ARM64. There are already a few games that run on native ARM64 Mac. You might as well also support Windows ARM64 while you're at it, since it's probably not hard for the Discord SDK.
Every time I close Discord usually I open a game or something and when I close whatever I'm doing
I see Discord in the background and I can't see anything nor do anything until I open Discord then
close it again. It's pretty damn annoying sometimes
This repository is for API issues only. For support with the client, please contact support ( https://dis.gd/support ). To report bugs, join the Discord Testers server. ( https://discord.gg/discord-testers )
I am not able to reproduce this behavior. The API appears to successfully return a 400 Bad Request upon receiving a
- missing
data - missing
contentorembedsindata
when type is 3 or 4
Unless I'm mistaken this appears to be due to an issue in your library or code. Inputs provided to Discord's API for choices are validated to be a string or integer dependent upon the type of option that exists. We do not perform validation upon the number which is passed in, so 0 is a valid input. Upon testing I was able to configure a 0 as an option value.
I still have that issue, I just discoverd this thread and I thought I was the only one but I was wrong.
It is actually annoying that you have to restart the bot with a command or via cmd to get the presence back.
Description
Slash Commands need a longer timeout then 3 seconds.
Why This is Needed
When running on Serverless setups many of the cloud providers give, if the Server Less hasn't been used, there can 1-2 second warm up time. If your command takes longer by retrieving data, you could exceed the timeout. While there are methods to keep functions warm, they increase the cost.
While you can always ACK and come back, most serverless see sending of response as "Function job is co...
Discord staff have said they would not be doing this. You can see the response here: https://github.com/discord/discord-api-docs/issues/2389#issuecomment-749228224
If you need more than 3 seconds to do whatever, then what you can do is have a separate service that proxies the requests to a backend (or a serverless provider) after automatically responding to the request with an ACK, from there you can use followup messages in order to continue as normal. Not sure what serverless provider yo...
Sending localized times is already possible, in embeds. See https://discord.com/developers/docs/resources/channel#embed-object-embed-structure for that ability.
its not about sending timestamps, its about receiving them from a user
Sending localized times is already possible, in embeds. See https://discord.com/developers/docs/resources/channel#embed-object-embed-structure for that ability.
note that embeds don't allow you to show a date time more than like 24h away while preserving the time.
If it's Monday and I set an embed time to Thursday at 7pm EST, users will just see "Thursday" until Thursday rolls around, at which point they'll see "Today at 7pm" (assuming they're in EST, etc)
Point is if you're schedu...
Description
Adding a new InteractionResponseType that would respond with a message and show the user's input only for the user.
Why This is Needed
This would be useful for showing users that their command was received while keeping the anonymity that hiding the slash command input message gives. In showing the message only for the user who ran the command, it shows them that their command did indeed get sent even if the bot response takes a few seconds.
**Alternati...
Slashy is a simple NodeJS wrapper for slash commands. It provides send/edit/delete methods for handling responses/follow up messages, as well as express middleware (and a helper function for other web frameworks) for handling webhook request validation.
maybe as a third alternative is having a new permission for roles for bypassing the membership screening.
this could be implemented as:
- "bypass screening": When true if a member has the role they will bypass membership screening. (probably true by default)
- "require screening": When true even if a member has this role the membership screening will still be required.
Ah yes, I had that thought as well, I guess I didn't write at as an alternative. I think that would be the most viable alternative (and possibly even just the better overall solution)
Description
When a member joins via the Add Guild Member endpoint they don't get a welcome screen and also bypasses the membership screening by having GuildMember.pending by default set to false.
Steps to Reproduce
- have a discord account that you can test with.
- have a server that has welcome screen and membership screening enabled (if wanted my server can be used for testing this)
- join the serv...
Description
In a bit of a relation to https://github.com/discord/discord-api-docs/issues/2483, it would be awesome if bots can send ephemeral messages without depending on interactions (think bots that need to migrate, or bots that want to show just the author a result without sending them a DM message). This can be achieved hypothetically by including a context of sorts to which user the message is for (example "original_author_id": "139836912335716352" which would send the ephemera...
new table formatting
|------------------|--------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------|
| welcome_channels | array of [welcome screen channel])(#DOCS_RESOURCES_GUILD/welcome-screen-object-welcome-screen-channel-structure) objects | channels linked in the welcome screen and their display options |
> All parameters to this endpoint are optional and nullable
remove extra )
| Field | Type | Description |
|------------------|-------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------|
| enabled | boolean ...
Description
Rules and public updates channels can't be edited with a bot through API
Steps to Reproduce
Call PATCH /channels/{channel.id} endpoint on a rules or public updates channel (the ID from guild.rules_channel_id or guild.public_updates_channel_id)
{
"name": "some-new-cool-name"
}
Expected Behavior
I expected the channel to be edited successfully.
Current Behavior
I get an error response (Cloudflare headers snapped):
...
Yup got the same problem here. This is a new one
I saw someone report this issue with the Android client a few days ago but I could reproduce it with my desktop client or a bot.
This issue was just pushed to phab from dtesters: https://bugs.discord.com/T2308
Description
Although applications can use any oauth2 scope the certain user has authorized for, currently there is no way for the application to get that list. When getting here access token, a list of scopes is given but it's only the scopes that the user has authorized for this time, while the application can actually use more.
Why This is Needed
Currently we ask for all used scopes on the standard login, but some scopes will not be used for most users. If this is added, we can ju...
Description
When a webhook slash command is used and the application has an application icon but not a bot user, the application icon is shown in the type 20 messages but the avatar of the response message is the default Discord logo avatar.
Steps to Reproduce
- Have a webhook slash command application which has an icon but not a bot user
- Use one of its slash commands
Expected Behavior
The response message avatar is the application icon, just like the message author name is...
After some internal discussion, we agree that localization in responses is super important. We will support this in the future, but can't in this first iteration of Slash Commands.
Why:
- Returning you the locale of the user is currently deemed a privacy issue, as stated earlier
- If you send us a dictionary of localized strings, we don't have a way to correctly pipe that through our API
- We don't have support for pre-registering localized strings
The third option on the list is pro...
Thank you all for all the responses and feedback you've given us about Slash Commands during this beta period. GitHub is great for tracking issues, but can sometimes be hard at a glance to understand the status of them without digging through tons of comments and swapping between open/closed.
This issue will serve as a "master list" that shows:
- What we have committed to doing
- What is still in discussion/decision mode
- What we are not doing right now, and why
This issue will be l...
We are planning to support a permission system for Slash Commands. After talking to developers and some community folks, it seems like being able to set permissions on roles/users is more beneficial for end-users than defining specific permissions on commands. For example, two roles in your server may both have Manage Message, but you only want one of them to be able to use a /delete command.
Our current thinking is:
- We will support "overrides" for commands, like we do in channels
...
The article is probably the easier fix
This is what I get for using old screenshots :)
After some internal discussion, we cannot support this right now without some major refactoring of our internal workers. We actually are planning to do that refactor, but it will be sometime mid this year in line with some other planned work.
This feature is on our internal tracker so that it is not lost ๐
This approach does not solve the case for some developers--"I only want people with Manage Server to see this command"--but creating it like our existing permission overrides is more in line with how servers define their permission structure, and has the added benefit of allowing "Only this user can use an admin command in the bot".
Will we be able to define 'sensible defaults' for commands? Say we have a 'nuke entire server' command, it would be pretty bad if anyone could use it. The ...
So you expect users to setup the permissions for every command of a bot? What if the bot adds a new ban command and all servers now have that command available to all users in the server?
We will support attachments on non-ephemeral responses. Currently scoping the backend work required to do so.
We can't support attachments on ephemeral responses right now due to architecture problems similar to embeds: https://github.com/discord/discord-api-docs/issues/2318#issuecomment-761132524
This feature request appears to be asking for users to be able to send attachments to the bot in slash commands, not vice versa (though that should be added to)
Yes, this issue is about invoking commands and including attachments as arguments one way another.
Something similar to this flow with "standard" bot commands;

After some internal discussion and discussion with other developers, we will not be supporting aliases for command names.
I think @almostSouji really hit the nail on the head (like, really, words out of my mouth). Aliases were added to fill a need that Slash Commands either circumvent or can support in different wants.
Many bots aliased command commands because it's how other bots were built, and it was easier for users to remember just one thing, even if their code said something else....
This will be supported through our proposed permission and overwrite system (https://github.com/discord/discord-api-docs/issues/2315#issuecomment-761131184).
For those looking to turn off all slash commands (other than built-ins), we will also be creating a Use Slash Commands permission. Going to close this issue not because it's invalid, but because it will be solved by other open issues.
If you do not have permission to use a command...
Will these overrides use a whitelist/allowlist or blacklist/denylist mechanism?
OK, we've talked about this a lot internally. I am in favor of returning objects, but to an extent, and I'd like to hear more use cases.
It is unlikely that for every object, we would return a full object. The most obvious example is channel or a guild type in the future. Returning the full object would mean returning all role objects as well (either on the guild itself, or channel overwrites).
I'm going to do some thinking and propose what scoped down objects I believe we should su...
We'll be lowering/removing this minimum length requirement (obviously, still has to be > 0 :) )
This will be supported by our proposed permissions and overwrite system. Disabling a command for a guild can be achieved by denying the permission on that command to @everyone (and can also be done on a channel basis).
Would it be possible for us to specify a list of fields we need per object type? I foresee that everyone will need every field in between every bot out there.
Even something like how jq works would be pretty neat:
curl .../api/v7/guilds/600705737584279583/emojis | jq -c '.[] | .id, .name, .animated'
We will not be supporting /@me for command endpoints.
We talked about this architecture internally. Historically, /@me endpoints have been stood up for when you do not have the ID of your application handy, like:
- Library developers who need application information and only have a token
- Getting a user object (
/users/@me) when you only have a bearer token
We're not super keen on these kind of "duplicate" endpoints that mirror /<id> routes, but have done so out of necessity...
We will not be supporting this right now.
Bots cannot use each others commands, so pulling a list for that use case is unnecessary. I'm not sure I understand why support bots would need to fetch descriptions, considering a user can see descriptions themselves by typing /.
For bot lists, it's an interesting thought, but supporting that particular use case is not within scope of the project right now.
Personally, I think it's weird to not support setting it by Discord permissions; I assume most bots' checks are by Discord permissions (for example, checking Kick Members for a /kick command). While user/role overrides would be useful, it doesn't fix the main issue imo.
We'll be fixing this as follows:
- The
USERautocomplete type will show all users within the guild - IDs will be valid inputs (a user id can be used for a user, channel id for a channel, etc)
I'm going to de-dupe this into this: https://github.com/discord/discord-api-docs/issues/2315
Restricting visibility will inherently come with restricted usability.
We will be supporting global commands within the scope of a DM. So, if you DM a bot, you can use that bot's global commands within the DM.
We may be able to support guild commands in the future, but that's a much more complicated endeavour (getting all matching guilds, pulling all commands from up to 100 guilds, deduping?), so for now it will just be global commands.
OK, talked about this internally and here's where we're at:
- We still believe that for development iteration, guild commands should be used and will continue to update instantly
- Global commands will still take up to one hour to roll out, due to what night said
- We will be creating a read/repair mechanism on using global commands to significantly minimize the chance that a user sends you stale data
What that means is
- You update your
/bancommand globally to take aUSERins...
Talked internally. Supporting a multiline argument type is, apparently, damn-near impossible with our current editor. We will not be able to support this, and will instead leave this as a requirement for when we build UI-based interactions to support text areas (which, frankly, is a better user experience).
Closing this issue, and we'll fix the bug ๐
Makes sense, thank you. Do you happen to have a rough order-of-magnitude timeframe of when something like that would make it in, at least in a form that'd solve these problems?
We have decided to move forward with supporting server-side validation for arguments. That means that it won't be possible to send malformed data in a command through our API (you still should be signature checking to ensure the command is actually coming from us).
For example:
USERwill have to be a valid user id (a channel id, for example, would fail)- An
INTEGERwill have to be an integer - etc.
Is this request still required if we support server-side validation? My hunch i...
Yeah, the documentation is wrong because I misunderstood default.
For the next iteration of slash commands, we are not going to support moving subcommands and groups into an autocomplete type, but we will support "base" commands still being accessible. I'm not sure where that leaves the necessity of this default argument. Will mark this issue as needs more info and find out more.
This is a bug, but going to mark as low priority/won't fix for now. Fixing the behavior for when a bot exists would still cause weird user behavior for when a bot doesn't exist.
In the future, we'll add support for application information popups instead.
I'd want to have at least:
- Permissions for the guild member in the relevant channel (I see a
permissionsfield in the docs, but is that guild-level or channel-level?) - Permissions for the bot itself in the relevant channel (this + member permissions would eliminate the need for caching channels/roles in most cases)
- The entire user and guild member object (which is already present, according to docs)
- Channel ID, name, and type (currently only have ID)
- Guild ID and name (cur...
We'll be fixing this. Arguments will accept IDs, and we'll enforce server-side validation to ensure it's the right kind of id (e.g. a user id will not be valid for a channel).
- Permissions for the guild member in the relevant channel (I see a
permissionsfield in the docs, but is that guild-level or channel-level?)- Permissions for the bot itself in the relevant channel (to avoid 403ing tons; this + member permissions would eliminate the need for caching channels/roles in most cases)
If we include a channel parameter, it would be useful to have these fields present in the objects returned for them
Permissions for the guild member in the relevant channel (I see a permissions field in the docs, but is that guild-level or channel-level?)
it is channel-level, as I wrote in the docs:
total permissions of the member in the channel, including overrides, returned when in the interaction object
We're going to support this by making the GET /@original endpoint. It definitely is less ergonomic for gateway connections--which sucks, I apologize--but it's an easy way to support both methods with the same code.
I work on discord-api-types and I would really benefit from the type being returned as well, as it would let us have a stricter return type that you can check in your code
Here's a barebones example: say the type for the value property is a APIUser | APIPartialChannel | string | number | boolean union (this assumes we get full data in the future, at this time it'd be string | number | boolean) in the returned data. We don't know what ...
The main use of this is for libraries to be able to parse the option correctly by knowing what type it is (for example, showing a library user object if it is a USER type); adding validation is very useful and would make adding this more useful but does not replace this.
GraphQL style of requesting the data we specifically need per command would be nice.
{
user: {
username,
discriminator,
avatar
},
guild: {
name,
icon
}
}
The format itself is irrelvant just the ability to specifically request the information you need per command. Sorta like Intents, you choose what you want to get.
Description
Due to the fact that global slash commands take up to an hour to roll out everywhere, I would like to propose a field being added when you receive the interaction that contains a user specified version (which can be set when creating/updating the command). Maybe adding something like a command_version value in the payload?
Why This is Needed
Slash commands can take awhile to roll out, this would allow both new and old versions of the slash commands that were upd...
Yeah, I saw that after I submitted this. Still leaving this open for now as it is a suggestion/alternative to what was said there.
@msciotti As a simple solution, could you not send the guilds locale? I don't think that's a privacy concern and that would meet I believe a vast majority of the use case. I've never personally needed the exact user's locale. If they are on a server with a XXX language locale, more than likely they will speak that locale.
Bots can already see the guild's locale at preferred_locale in the guild object (but that's currently only a setting for community guilds).
Bots can already see the guild's locale at
preferred_localein the guild object (but that's currently only a setting for community guilds).
@advaith1 That only works for bot accounts. For serverless Slash commands, gateway stuff isn't necessarily available. So yes although bots have it that doesn't mean slash commands do as well.
@msciotti Have you considering the workaround of directly encoding media into the ephemeral response without creating an attachment?
Our cloud provider, GCP, does not have much support for ipv6
Need for having own data centres manifests itself again.
Going to close this as duplicate yeah. Not in exact feature request but in practice of "Tell users something failed".
This request is a bit out of scope and doesn't quite fit into the model of interactions, so we won't be doing it. Here's why:
From a technical perspective, you are responding to an event sent by Discord, not the user. We plan man in the middle here. So, if you are returning non-200 error codes, we can't differentiate whether or not it's a user issue or a Discord issue (and we should retry). Especially considering we do explicitly want 4XX error codes for other things like signature val...
We're currently evaluating some design changes to commands that would include this, so putting it on the "Still in discussion" list.
Interactions actually do have a version on them, but they're an internal version for if we need to make breaking changes ๐
We won't support this method of versioning because the read/repair system makes it unnecessary.
@msciotti what about making a failure response type so it still gets sent to Discord as a normal response but it has the better failure UI for the user?
did you add an icon to your application before or after its first interaction?
This already exists .. but perhaps we didn't document it? You can GET /api/v8/oauth2/@me with the bearer token to get info on the current authorization (application, scopes, expiration time, and current user if identify was requested)
yeah that isn't documented, I didn't know about it
I see. Perhaps there is a bug in the icon change logic. Are you able to reproduce this if you set an icon before the interaction?
just tested; it shows the original icon as the message avatar, even after later changing it and using the command again.

(it also still shows the original icon in the command selector, even after reloading, but I assume that'll update later)
This will be fixed in the next API deploy. Thanks for reporting.
I apologize in advance that this is not really about the API โย but when Iโve contacted Discord support, they have asked me to report the issue here instead. My Discord issue ID is 10056282 titled Discord OAuth Screen: query to disable animation? sent from email sml@royaleapi.com
Description
Our site uses Discord OAuth as login to authenticate user access to certain web-based features. One such feature is our stream overlay intended for streamers to broadcast esports events for...
Sorry I'm a bit confused here but this sounds like an OBS issue and not a Discord one.
If I had to guess, Streamlabs does not have hardware acceleration enabled in Chromium or something. You'd need to reach out to their support. You could also try the real OBS: https://obsproject.com (it does use hardware acceleration according to their lead developer).
Hardware acceleration on macOS was only just added a week ago. If you have not tried 26.1.2, I would recommend trying it.
As far as I'm aware, the Access Token Response has a scope field that you can use to find what scopes you have. Would that be enough? Or are we attempting to avoid having to use up a refresh token to figure this out?
@LikeLakers2
When getting here access token, a list of scopes is given but it's only the scopes that the user has authorized for this time, while the application can actually use more.
I assume that holds true for the refresh token as well.
I would recommend testing it out, because I'm not sure whether RFC 6749 specifies it either way -- meaning it might be up to how Discord has implemented it. Skimming through, the only relevant bit of the RFC I've found is in Section 5.1:
scope
OPTIONAL, if identical to the scope requested by the client;
otherwise, REQUIRED. The scope of the access token ...
I want to get it when the user authorizes; the token endpoint response only has the scope requested now but the /oauth/@me endpoint has all the scopes, which resolves my issue.
@jp9000 thanks โ I have checked it out and it does seem faster.
@jhgg Sure you can say that it is related to OBS โ but it doesnโt change the fact that if I use the OAuth login with Twitter or Google, I can type on the keyboard, while the OAuth login with Discord is too slow to type.
And there is nothing wrong with the page except that the animation is slowing things down.
While I agree that the animation is nice from a brand perspective for UX, it is currently breaking the UX on slo...
If the GET ../@original returns the full message object, that sounds great.
As a workaround, it does not animate if the width is 485 or less.
We will not be supporting
/@mefor command endpoints.We talked about this architecture internally. Historically,
/@meendpoints have been stood up for when you do not have the ID of your application handy, like:* Library developers who need application information and only have a token * Getting a user object (`/users/@me`) when you only have a bearer tokenWe're not super keen on these kind of "duplicate" endpoints that mirror
/<id>routes, b...
If the server boost raises the server level to allow all members to upload larger files, are bots also allowed to upload larger files in that specific server?
The system property in the user object and the SYSTEM user flag seem to be the same. Does user.system only exist because flags weren't always included before, or is there a different reason for both to exist? Is one better to use / should one be considered deprecated?
As a workaround, it does not animate if the width is 485 or less.
Interesting. This works โ thanks so much for this hack!
Description
The Client ID's Discord distributes are fully numerical but over JavaScript integer limit which causes the ID to be changed when it is stored as a Number
Steps to Reproduce
const CLIENT_ID = 800356270543470622; // The ID of my application
const ID_STRING = '800356270543470622';
const LIMIT_INT = 800356270543470600; // What JS/Node thinks it is
const LIMIT_STR = '800356270543470600'; // LIMIT_STR but stringified
// will return True, while obviously its...
The OAuth2 examples in the docs handle the Client ID as a string (https://discord.com/developers/docs/topics/oauth2#authorization-code-grant).
It is also listed as a "snowflake", which should always be handled as a string (https://discord.com/developers/docs/topics/oauth2#get-current-application-information)
Currently to get the name of a subcommand inside a group you have to do this
Command: ${interaction.data.name} SubCommandGroup: ${interaction.data.options[0].name} SubCommand: ${interaction.data.options[0].options[0].name}However not all commands have subcommands or groups, if you have a command and subcommand with an argument the structure is still the same, however the same code will return the name of the argument as what "SubCommand" is.
There...
Yeah, I agree with @advaith1 here - while the issue can, on its face, be closed, the request for a way to return an error response remains. The "shakey screen" UX is pretty good, and it'd be nice to have the ability to leverage it ourselves.
That sounds like a good middle-of-the-road solution. Thanks!
Description
After either PATCH or POST (with same name) /applications/{}/guilds/{}/commands(/{}) to completely empty the options list, those changes are not reflected in the GET requests to the same endpoint. This is purely an API bug and the Discord client correctly sees the command with no options. I haven't tested this with the global command endpoint.
Steps to Reproduce
- Create a command with at least one option by `POST /applications/{}/guilds/{}/comman...
Description
Deleting a command causes the Discord client's built-in command list to fail to load.
Steps to Reproduce
- Register a command
- Delete it
- Type / in a place where you would have been able to access that command
- Scroll down to the built-in commands
- Observe (see screenshot below)
Expected Behavior
The deleted command should just be uneventfully removed from the list
Current Behavior
The deleted command takes the built-in command...
Not sure if this is API related, but since it does at least involve it in some way I thought I'd report it here.
[discord/discord-api-docs] Issue opened: #2498 Interaction responses don't respect allowed\_mentions
Description
Sending allowed_mentions in the interaction response has no effect. I know the docs say not all message fields are currently supported; this is the issue tracking support for allowed_mentions
Steps to Reproduce
Send an interaction response, with a message containing a ping, with allowed_mentions set to none.
Expected Behavior
No ping
Current Behavior
Ping
Screenshots/Videos

Description
Steps to Reproduce
Expected Behavior
Current Behavior
Screenshots/Videos
Client and System Information
You need to actually fill out the form. With no information, there is nothing to do.
You need to actually fill out the form. With no information, there is nothing to do.
Okay I will do that
Description
Can't connect to gateway. Looks like cloudflare denies the connection.
Steps to Reproduce
Install reactor-netty
Use this (sample and dummy) connection code
HttpClient client = HttpClient
.create()
.secure();
client
// For instance
.headers((headers) -> headers.add("user-agent", "DiscordBot (https://www.google.com, 1.0)"))
.websocket()
.uri(client.get...
the crosspost route was added below this box while it should be above the box
I think it would be much better if the HTTPS requests registered only the signatures (name, argument list, and description) of the slash commands, and then have the bot handle auto-completion and argument descriptions. This would make a limit completely unnecessary, as each bot privately stores its own argument list and sends it only when needed, and it would give developers much more freedom in customizing their commands.
The autocomplete information doesn't necessarily have to be updated...
Description
When a slash command is registered to Discord, it is sent along with all the data needed for the Discord client to display, describe, and validate the arguments of the command. This data includes things like the argument names, argument descriptions, values for multiple-choice arguments, etc.
I propose moving this responsibility over to the bots so that they themselves store the information about the argument list, rather than Discord. When registering a slash command to...
@NewDefectus That would break some of the design assumptions and block some future expansions.
-- @NewDefectus
I think this would be great to have and would provide a new way for bots to interact with the user.
But I think this would be hard to implement, as this would cause way too much traffic: Imagine having a guild with, for example, 30 bots (this is realistic, I have seen servers with much more bots), and a user types in a slash command.
The REQUEST_COMMAND_INFO would be sent to all bots, and the gateway had to wait for all bots to respond, to combine that data, and send ...
@angelobreuer REQUEST_COMMAND_INFO is only sent once the user has already chosen a specific command from a specific application. It wouldn't need to send the request to all the bots, only to the bot that owns said command. The command list would be stored the same as before (by Discord, registered through HTTPS), it's just that now, further information about the command is sent from the bot itself, and only when necessary.
About existing implementations, I think having the possibility to c...
-- @NewDefectus
Sorry, I have completely misunderstood you. Now my updated thoughts:
I think your idea is good in general and it would be a big improvement as it has a lot of use cases as you previously mentioned and I can think of a lot that would also fit as a use case.
In my personal opinion, I think that having a flag to indicate whether discord should request the argument list from the bot would add unnecessary inconsistency, and I feel some kind of uncomfortable about this alth...
The documentation says that the prune days count can be any value greater than or equal to 1, which does not reflect the API behavior. The maximum prune day count is 30.
As a simple solution, could you not send the guilds locale?
We talked about this, yes, but that field is only set-able if you are a community so that we can help filter results in server discovery. So most guilds would not be able to choose. It also wouldn't make sense for smaller guilds to be able to enable this setting, since nothing is actually done with it.
Doing significant refactors to our message processing when we intend to fix it later is unfortunately out of scope right now.
What about adding an option in the oauth settings? Similar to other dropdown menus the application could offer a choice of available locales
Oh I apologize. I guess I was caught up in the title wording + another use case. That's...tricky. I'm not sure if we can support this in this version (and may want to instead support future versions having an attachment type argument)
It should. You can technically mock this behavior today by sending an empty PATCH ../@original :p
Yeah, an attachment argument type would solve it too. Any way of providing a relevant file/image when executing a command would work, "slash commands in the attachment box" is just what most closely mirrors current solutions.
Description
Why This is Needed
Alternatives Considered
Additional Details
Modify attributes of a [guild member](#DOCS_RESOURCES_GUILD/guild-member-object). Returns a [guild member](#DOCS_RESOURCES_GUILD/guild-member-object) object. Fires a [Guild Member Update](#DOCS_TOPICS_GATEWAY/guild-member-update) Gateway event. If the `channel_id` is set to null, this will force the target user to be disconnected from voice.
consistency; v6 behavior is generally not documented
Description
Add a COLOR type for slash commands.
Why This is Needed
Bots can use colors to generate images and do other things.
Alternatives Considered
Using a string type for colors and manually separate them between hex and color names.
Additional Details
The color string should also be able to take specific colors (defined by the bot).
Yeah, an attachment argument type would solve it too. Any way of providing a relevant file/image when executing a command would work, "slash commands in the attachment box" is just what most closely mirrors current solutions.
#2504 could work as a stopgap solution until then?
Yeah I think an attachment argument would be best IMO, it could accept a URL or pop-up a drop-box or something similar like that.
Better yet, some kind of Regular Expression or "fake" Regular Expression (to prevent users from killing Discord's servers) would be nice
I support this, it would especially be useful for changing role color
Description
When i host a discord bot in Europe we get really high api ping like 140-160ms and when it's hosted in USA we get like 20-30ms
Steps to Reproduce
Start a discord bot in Europe & USA and test the api ping.
Expected Behavior
Roughly the same ping
Current Behavior
Extremly high ping when bot is hosted in Europe
Screenshots/Videos
*Client and System Information...
140-160 isn't high... obviously, if you are farther away from Discord (us-east) then it will be slower, I don't see anything unexpected here
140-160 isn't high... obviously, if you are farther away from Discord (us-east) then it will be slower, I don't see anything unexpected here
Well we are hosting around 200 discord bots. And a lot of people are complaining about it.
And it sounds very stupid that all api traffic are routed to us-east.
f21d1fa Document "Modify Guild Member" now returns the ... - davfsa
Well we are hosting around 200 discord bots. And a lot of people are complaining about it.
well if you want it to be fast it should be physically close to the destination, that's simple logic and how the internet works
And it sounds very stupid that all api traffic is routed to us-east.
discord's servers are in us-east... again, that's just how the internet works
well if you want it to be fast it should be physically close to the destination, that's simple logic and how the internet works
I understand how the internet works, But it's really weird that a big company like discord doesn't have api servers distributed around the world.
discord's servers are in us-east... again, that's just how the internet works
I understand that but i don't want to buy servers in the us just to solve a stupid problem that discord is causing.
9b765ca Add dispike to community resources for slash co... - ms7m
We are homed in us-east for now and the foreseeable future. If you want lower latency, there are 2 possibilities you can try:
- Move your servers closer to us-east.
- Figure out a way to circumvent the speed of light.
I don't think not showing the options box at all is a UI polish thing?
We are homed in us-east for now and the foreseeable future. If you want lower latency, there are 2 possibilities you can try:
- Move your servers closer to us-east.
- Figure out a way to circumvent the speed of light.
Well then i guess you dont care about people using discord who are living in Europe.
We are homed in us-east for now and the foreseeable future. If you want lower latency, there are 2 possibilities you can try:
- Move your servers closer to us-east.
- Figure out a way to circumvent the speed of light.
Well then i guess you don't care about people using discord who are living in Europe.
As a developer who uses Discord API frequently, and lives in a former EU member state, I can say that I have no issues with the API Ping. Literally none....
We are homed in us-east for now and the foreseeable future. If you want lower latency, there are 2 possibilities you can try:
- Move your servers closer to us-east.
- Figure out a way to circumvent the speed of light.
Well then i guess you don't care about people using discord who are living in Europe.
As a developer who uses Discord API frequently, and lives in a former EU member state, I can say that I have no issues with the API Ping. L...
Hmm okay, but are you running over 200 discord bots?
200 Discord? No
Mix of Discord, Twitch and Telegram totalling almost 600 connections
It's still actively very desired
Hmm okay, but are you running over 200 discord bots?
200 Discord? No
Mix of Discord, Twitch and Telegram totalling almost 600 connections
Okay, but we are hosting 200 bots and they are probably in over 50-70k servers in total. I guess that would be maybe 500-700k users.
This issue doesn't warrant further discussion. Nothing said here will change our plans for geographic distribution. In-fact, most services have their APIs homed in us-east due to the incredibly complexity of running a geographically distributed service, and also the fact that us-east is within acceptable latency for most of the users we service.
For regular humans, the difference between 30 and 130 milliseconds is negligible. For applications that perhaps want to reply as quickly as po...
If you want Discord to have lower latency in the Europe region, figure out how to make a globally distributed system that needs real time messaging at low latencies. Adding servers in Europe won't solve it, it would still need to communicate with the other regions if they did that to propagate the new events. Yes, the latency to Discord would be lower, but it would make the time to send the message all the same, if not longer due to round trip times and extra time to send the events everywher...
figure out how to make a globally distributed system that needs real time messaging at low latencies.
Cloudflare does that...
And discord is using cloudflare
You seem to be forgetting every server Discord runs on behind Cloudflare. Discord isn't 100% serverless.
Guys, please keep the discussion relevant.
Yes we want this feature, everyone here wants, and that's why lots of us are subscribed to this thread.
Thank you
figure out how to make a globally distributed system that needs real time messaging at low latencies.
Cloudflare does that...
And discord is using cloudflare

Description
Why This is Needed
Alternatives Considered
Additional Details
It will now create a new type of confusion trying to remember which of the 300 features is in fact using the / prefix and which is using the other prefix.
Your bot does not have three HUNDRED "features" -- it is bloated. Full stop.
Slash commands are available for all bots on all guilds... do you realize how much this will pollute the global scope? Even with the 50 limit (which I think is more than enough), typing "/" will vomit out a list of hundreds of commands for the typical user....
Documents the cover_image property on the guild application integration structure.
Got the description from https://github.com/discord/discord-api-docs/blob/6164ed3565f11dc7df7216749ef0014c18c72939/docs/topics/OAuth2.md#application-object
Description
Hi there! I wanna to respond to an Interaction that nadled with gateway ws connection. But, when I call api ("/interaction/id/token/callback"), it is returns 404. I respond in max 1 sec, also i tried to ack before responding, but result the same for ack, 404.
Steps to Reproduce
- Open gateway connection
- Register a slash command
- Listen to events
- If event is interaction create, get inter. data
- Call api for interaction
- Get response ...
Looks like you are adding the base API URL twice, once on line 32, and once on line 71
Looks like you are adding the base API URL twice, once on line 32, and once on line 71
OOO yeah thx worked!
The prejudice against multi-purpose bots really isn't necessary! This is like the fifth time, someone has mentioned this in this issue. Multi-purpose bots have valid use cases just as single-purpose use bots have their use cases. As someone who has both single-purpose and multi-purpose bots, I can tell you that there are users who just prefer the single-purpose bots but a lot more prefer the multi-purpose bots. There are various reasons behind it.
For those that prefer a single purpose, i...
Yes, user experience is everything, but that false equivalence you just made is disingenuous @Skillz4Killz
Bots cannot be compared to full scale applications. Your bot, multipurpose or not, is not bound to the same guildelines marketplace apps like Discord are, and to suggest otherwise is minimizes the effort put in by the Discord dev team.
I don't know why you think I'm exhibiting prejudice (we're talking about Discord bots after all...), but the problem isn't with Discord's decision t...
Slash commands should be used for the handful, if not only one to three, key selling points your bot has.
I have no idea where you got this from but I haven't seen anything indicating this is the intention; this would just lead to a bad user experience. Slash commands are intended to eventually fully replace the concept of message commands, not just be a way where users can access a few of them.
Description
Add FLOAT Application Command Option type.
Why This is Needed
Just like there is INTEGER (4) Option type, we need Float.
Example use case would be convert currency, slow mode command like /slowmode time: 1.5 unit: minute, and maybe some math.
Definitely more use cases out there.
Alternatives Considered
Use String option type and parse & validate it on our side.
Additional Details
Nothing really.
I'm think same, v6 currently recognize inline replies as 0 type, don't support interactions and slash commands - it is old and deprecated officially. So, v8 should be default and documented in example
while v6 is deprecated, it does support interactions and slash commands, it just also says type 0 for type 20 messages.
Yeah, an attachment argument type would solve it too. Any way of providing a relevant file/image when executing a command would work, "slash commands in the attachment box" is just what most closely mirrors current solutions.
#2504 could work as a stopgap solution until then?
Yeah I think an attachment argument would be best IMO, it could accept a URL or pop-up a drop-box or something similar like that.
For URLs it should be a different type then, bc URLs aren't attachments...
What about adding an option in the oauth settings? Similar to other dropdown menus the application could offer a choice of available locales
That doesn't sound good. Whoever adds the bot then basically chooses the language for everyone else in the guild.
093ea60 Document GET .../command/:id and error 10063 (#... - advaith1
edb570c fix position of reaction route infobox (#2501) - advaith1
1e938d6 Document /oauth/@me route (#2493) - advaith1
Description
Slash commands Message input would be very useful for a system that users report a message to the moderators. It would function something like this:
You would either reply to a message and do a slash command, and if one of the arguments was a Message, it would populate that with the message ID. Note that this should also accept a Message ID (though it might only search that channel for the specific message ID for simplicity).
Why This is Needed
I would say this...
Just joining in to express my support for such a feature to be added. I think it would greatly expand the possibilities that Discord bots currently have, especially when it comes to user interaction. I'm currently having to use a normal Discord account for video output which is video controlled by a separate bot. Just hoping something good can be done with it at some point.
As you can see from the referenced conversations with staff, they currently have no plans and do not believe that others will be able to properly implement it presently.
There is no need to come in here and voice your support of the feature. They know people want it.
Description
The choices array on ApplicationCommandOption is statically assigned at creation time. There are some use cases where it provide much better UX by allowing choices to be dynamically fetched from the server, e.g. as the in-built /giphy does.
Why This is Needed
While many commands function very well with statically defined choices for options, some commands would greatly benefit both on the server side and from a UX perspective if these option could be dynamically u...
Description
The endpoint GET/guilds/{guild.id}/widget.json only has an example of how a response could look like. Is it possible to provide more descriptive types?
Apparently, on Discord, you can't leave notes on other people anymore. You used to be able to right click their pfp, then click "Add Note". Now the actual note adding menu is gone, but the "Notes" section is still there on their profile. If it isn't too much to ask, could y'all add the notes section back? Thx.
Apparently, on Discord, you can't leave notes on other people anymore. You used to be able to right click their pfp, then click "Add Note". Now the actual note adding menu is gone, but the "Notes" section is still there on their profile.
The "note adding" menu is still present on both Discord and Discord Canary, on desktop and mobile. ANd this repository is not a place to submit bugs or feature requests, use http://dis.gd/contact instead :wink:
27b81c8 Remove default because it's not supported - typpo
just removed from docs for now, since it doesn't do anything yet
Description
When setting over 16 (the limit) rules in membership screening, the error response is formatted wrong.
Steps to Reproduce
PATCH https://discord.com/api/v8/guilds/:id/member-verification with
{
"form_fields": "[{\"field_type\":\"TERMS\",\"label\":\"hello world\",\"values\":[\"test\",\"test\",\"test\",\"test\",\"test\",\"test\",\"test\",\"test\",\"test\",\"test\",\"test\",\"test\",\"test\",\"test\",\"test\",\"test\",\"test\"],\"required\":true}]"
}
``...
Description
This started at about 4AM UTC on 2021-01-23. My bot can no longer create voice channels with certain permissions.
I suspect it is "deny 'manage permissions'" which is causing the problem, because it is fine without it. Giving this bot the permission in the category doesn't fix the issue.
Steps to Reproduce
- Set up a bot ready to fire off a channel creation request, with permissions specified up-front like:
@everyone: deny "manage permissions"- ...
f37f1b0 document permission overwrite changes - night
move above the ## Slash Commands and Interactions header
This evening we deployed a breaking change to the Create Guild Channel to address a permission escalation issue brought to our attention.
Permission overwrites in the guild channel creation endpoint are now validated against the permissions your bot has in the guild. Permission overwrites specified in the request body when creating guild channels will now require your bot to also have the permissions being applied.
Setting MANAGE_ROLES permission in channel overwrites is only possible...
I apologize for the random breaking change tonight. Our security team deployed an API change to address a security issue reported to our team. I've posted an announcement about this over at https://github.com/discord/discord-api-docs/issues/2522
What about the fact that no permission short of admin is enough to create the channel? (see step 2) I am pretty sure it's a bug
you in DAPI that you're creating the channel with a MANAGE_ROLES overwrite; that requires admin as #2521 documents
Setting
MANAGE_ROLESpermission in channel overwrites is only possible for guild administrators or users withMANAGE_ROLESas a permission overwrite in the channel.
This surely implies that if you have the MANAGE_ROLES override in the channel category, you should still be allowed to create the channel? (Otherwise I'm not sure in what context you could have the MANAGE_ROLES permission on a channel when creating a channel)
the "has manage_roles in the channel" text is not there in the create channel section; however it would be a good idea to check the category permissions for that
I'm not sure what you're referring to. I quoted from the issue you linked and I have tested with all non-admin permissions enabled on the bot's roles and on the category in which the channel is created.

you were probably looking at the edit channel docs instead of the create channel docs
Sorry, I meant issue #2522
But if MANAGE_ROLES is just a broken permission now, I guess that's something I'll have to live with going forwards. I'll put an exception in my bot for it, though JDA is not ready for this by the looks of things
I have a somewhat old application with a bot account (created in 2017ish) that I tried to register slash commands for yesterday via the gateway (using Discordeno). However, the request constantly returned a 404 when trying to register a slash command. It took me well over an hour of debugging to find the application was at fault - a newly created application using exactly the same code ran as expected. I was under the impression that all applications, old and new, should be able to register a...
[discord/discord-api-docs] New comment on issue #2523: Application unable to register slash commands
that doesn't make sense; you're sure the url is exactly the same? no trailing slash with either?
[discord/discord-api-docs] New comment on issue #2523: Application unable to register slash commands
Correct. The only thing I subbed out was the token of the bot I was logging in with. The older one 404d, and the newer one worked without issue.
[discord/discord-api-docs] New comment on issue #2523: Application unable to register slash commands
URL must be:
base_api_url/applications/app_id/commands
Request POST to this URL, with auth headers, like:
{
"Authorization": "Bot BOT TOKEN"
}
[discord/discord-api-docs] New comment on issue #2523: Application unable to register slash commands
I've gone a little deeper into this and it seems that it's Discordeno that sets the client ID of the bot incorrectly. I'll take it up with them.
I see what you are getting at, however, there is a way to check given an interaction.
Whether or not the options parameter is present on each level gives you that information
Basically your pseudcode is this:on interaction command = interaction.name subcommandgroup = null subcommand = null options = interaction.options if options?.options subcommand = options.name options = options.options if options?.options ...
Description
When creating a new channel with permission overwrites, there is some strange behaviour after that latest fix when applying a permission to yourself. If you have this permission at guild-level (server settings), the channel is created. If you don't have the permission at guild-level, but do have it on the category that the channel is to be created in, you get a Missing Permissions error.
Steps to Reproduce
- Apply a permission overwrite to yourself on a category, but...
I'm wondering how any company can't think about it when publishing an public API. This is a basic :/
Description
When attempting to edit a guild command with a PATCH request while including an unchanged name, the API now returns {"message": "An application command with that name already exists", "code": 40041}, where previously it would edit the command and respond with the full command JSON.
Steps to Reproduce
Get all the commands that exist for the guild:
curl -H "Authorization: Bearer [SNIP]" https://discord.com/api/v8/applications/790187789797949441/guilds/61...
Setting
MANAGE_ROLESpermission in channels is only possible for guild administrators
This doesn't seem to be the case in my testing. The bot has MANAGE_ROLES in the category and then can also create channels with that permission.
Bot Permissions (in category): [MANAGE_CHANNEL, MESSAGE_ADD_REACTION, VIEW_CHANNEL, MESSAGE_READ, MESSAGE_WRITE, MESSAGE_TTS, MESSAGE_EXT_EMOJI, VOICE_STREAM, MANAGE_ROLES]
Override(420321485757087746): allow=[MANAGE_CHANNEL, MANAGE_ROLES] deny=[]
O...
Description
when I try to make a request to /api/oauth2/token
I receive a bad answer, i make sure the request is correct and take as a reference the one in https://discordjs.guide/oauth2/#oauth2-flows
Screenshots/Videos

i'm using express & typescript
Alternatively, could a flag in
public_flagsbe used to indicate a terminated/deleted account?
no, the flags are the badges
Alternatively, could a flag in
public_flagsbe used to indicate a terminated/deleted account?no, the flags are the badges
Some of the flags aren't actually badges, e.g., team user and system, and I don't think the intention for flags was that they are exclusively only for badges.
Alternatively, could a flag in
public_flagsbe used to indicate a terminated/deleted account?no, the flags are the badges
Some of the flags aren't actually badges, e.g., team user and system, and I don't think the intention for flags was that they are exclusively only for badges.
i don't know about the team, but the system i think is used to tell you that the message is an official message from discord
There's some nuances not documented to power channel cloning in guilds (as a tempfix), and I suspect that may be the reason you see this behavior. Are there other channels in your test guild which share identical permissions that you have permission in?
if the code is invalid, perhaps it already expired or was consumed. codes are one time use and expire 100 seconds after creation.
I have a lot of channels, so that is very possible indeed. Would it make sense to also allow users/bots to sync permissions to the category without having administrator permissions? It seems illogical to require administrator just to be able to create sync'd channels. Maybe that would make the rules too complex though, unless a simpler way to created sync channels is implemented like lock_permissions in #1776.
I'd love to see a more nuanced permission in the future since administrator se...
Description
The API allows and stores duplicate bits when overriding channel permissions
allow will always take priority over deny in duplicate bits - this can cause some confusion if (let's say) a user has set a permission to allow, but a bot only adds the relevant same bit to deny - the permission does not get changed
obviously the developer is expected to implement this correctly, but life is not that simple
The audit log entry is correct but misleading (as it i...
(just a note i am really bad at explaining stuff so if this makes no sense whatsoever, sorry!!)
Description
This is definitely one of the more "out there" requests, but I think it'd be incredibly awesome if there was a concept of a service account/guild added for testing.
The service account would be a restricted user account, locked to a single guild hidden in the void, that could be automated via the API to send messages etc., simulating a real user using a bot.
The service guild would be the guild that this service account resides in. I'd envision it being incredibly loc...
Description
Missing validation for the "form_fields" field on PATCH guilds member verification (PATCH /guilds/{guild.id}/member-verification) leads to 500s being returned with a generic "internal server error" message in scenarios where a 400 with error message would be expected with more details on how the payload was malformed on V8 REST. The cases I've seen for this happen for cases including when an invalid serialized JSON string is passed for the form_fields field and when...
GET /guilds/{guild.id}/member-verification and GET /guilds/{guild.id}/welcome-screen both return 204s (with no payload) when targetting a guild where the relevant resources has never been set before.
This behaviour is inconsistent when compared with how these endpoints return a 200 with a payload when they've been patched then disabled, is inconsistent compared to endpoints such as GET /guilds/{guild.id}/widget which return a 200 with a "empty" or disabled representation rather than a ...
This should probably be closed as this has been documented as of #2505
Description
When using slash commands, the response message will often be marked in the client as a new message, with the red NEW line and the "1 new message" blurple banner at the top. This does not happen for responses to normal commands.
Steps to Reproduce
Use a slash command many times. The exact times it happens seems to be random but if you use commands enough times you will probably see it.
Expected Behavior
It is not marked as NEW, just like when bots respond ...
Whilst we can already do limited forms of testing with two/three bots and allowlisting our main bot to listen to another bot giving commands, this does not work for weird cases such as:
- A server getting a boost
- Unusual file upload size
- Any server features, such as partnered/discoverable
- Emojis from Twitch
- Emojis that are not usable because of lost boosts
- Any flags from the target user - a bit out there but we might want to treat people from various hype squads differently
...
Hey,
first sry for my bad english.
idk if this is a bug or something, but my discord account is always online.
my pc is off, and my discord account is online, my status is empty.
hope you can fix this "bug" or help my to get my discord acc invisible.
As a note, I'm not sure that application_id field is optional as opposed to nullable on INTEGRATION_DELETE so any insight on that would be welcomed.
Closes #2121
Hi! This is not the correct location for Discord account issues. I would recommend contacting Discord Support about your account issues: https://dis.gd/support
I've been prototyping something similar to this with DiscordPHP but still waiting on some of ReactPHP filesystem's dependencies to get updated to support PHP 8. It should be possible to do it directly within a bot without going through discord's API, which is the best possible scenario right now until Discord decides that this is something they wish to pursue. https://sergeyzhuk.me/2017/07/17/reatcphp-http-server/ has a nice tutorial for how to do this already, so on a Linux system it would b...
the order is typically create, update, delete
There is now a client bug report open on this: https://bugs.discord.com/T2402
Sooo about that GUILD_INTEGRATIONS_UPDATE payload? What is the difference and when should that be used? Since these new events have guild ids i imagine it is also for guilds.
As of v1.0.0, Harmony supports all documented REST API and Sharding.
I'm not sure but this could potentially be intended as the channel could be moved to another category after creation.
Audio support would be really nice @night
Need this for member.pending as it is bad to have to cache millions of members just to know when a member has passed especially after intents changes made us remove all those members from cache and not rely on cached data. Currently, member.pending is quite useless without this imo and makes it incredibly difficult to deal with
Need this for
member.pendingas it is bad to have to cache millions of members just to know when a member has passed especially after intents changes made us remove all those members from cache and not rely on cached data. Currently,member.pendingis quite useless without this imo and makes it incredibly difficult to deal with especially when this was announced and sent to users as a solution that bot devs should implement

As noted in multiple places, (Github issues and Developers Discord) the timeout has zero plans for changing. Therefore, closing this issue.
Yeah quick note--the current behavior of all subcommands and groups being at the top-level of the explorer means that default doesn't do anything.
Once we change that, default allows you pick a default subcommand. So for example, if you have
/tags list <---- this is default
/tags add
/tags remove
Invoking /tags alone would be the same as doing /tags list
762da29 Document slash command list gateway events (#2367) - advaith1
0b28b9d Clarify the Gateway Rate Limiting section (#2478) - advaith1
d400d0b Document Member nick being optional (#2209) - BartArys
Description
When a bot is already part of a guild and a bot scoped oauth request is received, the permissions requested should be ORed with the permissions already present on the bot role, not replace them.
Why This is Needed
If I detect that I'm missing permissions in general, I can send a url to add those permissions. Currently I need to keep track of the bot's integration role such that I won't lose permissions when asking for new ones if I don't want to request the ...
9ace7e2 "then this tool" ->ย "then these tools" since th... - Larkooo
@msciotti Just to clarify: a call to /tags will show up in the INTERACTION_CREATE event as a call to /tags list? Will there be any way of differentiating between calling a subcommand explicitly vs by default?
Also, what happens with nested layers? If /tags list is also a group:
/tags list all <-- default
/tags list admin
/tags list user
Does it resolve all the way from /tags โ /tags list โ /tags list all? Will there be any difference between invoking each of those three?
What's going on this week? (OK, it was last week)
We've been hard at work responding to developer feedback on slash commands. A number of slash command related fixes and small improvements have gone out in the last week, with more significant improvements planned. All of these changes have been completed and merged, but may not yet be deployed on all platforms yet.
- Feature: Bulk update commands via PUT
- Improvement: Ordering of options is now preserved https://github.com/discord/d...
This has been merged and deployed. Should be all good on desktop, and shortly on mobile if not yet.
This should now be fixed! It should be deployed on desktop canary, and if it's not yet on mobile, will be over the course of the week.
This has been fixed and will be out in the next iOS deploy.
The gift codes category is a bit unclear because non approved games cannot generate gift codes so it can be confusing for developers
Description
Slash commands with a string/integer choices that contain an standard emoji in the name fail to pass the client validation.
Steps to Reproduce
Have a command with a choices option, and an emoji in the name.
discord.interactions.commands.register(
{
name: 'roll',
description: 'Rolls a die.',
options: (opt) => ({
type: opt.integer({
description: 'The number of sides the die has.',
choices: [
{
...
I'm not sure but this could potentially be intended as the channel could be moved to another category after creation.
That's true, however I think there could be a better solution than telling the user the permission is applied, but not granting the permission - it breaks the entire concept of permission overwrites on categories
Is this request still required if we support server-side validation? My hunch is no, but wanted to know if I was missing anything.
Yes! This is more so a request from a library POV. Not so much the validation, rather than resolving types from cache (since you don't really send the user/role/channel data in the request - which would be amazing, but still require us to know what you are sending to properly handle it as a library)
That's actually quite terrible UX. The bot invite screen is the same simplified oauth2 flow regardless if the bot is already on the server or not. It'd be majorly confusing for a user to discern if the permissions are being added or set. Setting (replacing) them is definitely the better choice for consistency's sake. You can still auto-fill permission requests with the ?permissions=n query parameter.
Fixes footnotes 1 & 2 being out of order in Reference.md.
Using URL's is what I've done as a workaround.
People upload images/files first, and then they have to copy the Discord's CDN url and provide it as an argument.
I think it would be good to have this listed in #2490 as a suggestion to change the current navigation in Slash-command.
Instead of just typing the command and the Client automatically splitting at one point should be changed to where you f.e. use tab to "select" the command to then go to adding any arguments - if available.
e.g.
Instead of typing /nickname and the client automatically splitting after typing nick resulting in /nick name would you press tab to select the /nick com...
Update: This feature has been implemented, but it has one minor issue as of right now:
It still automatically fills-in a @ symbol, which then forces you to hit backspace then paste for a snowflake.


Musta got lost in the shuffle. We plan to remove the @ and # characters from automatically appearing. Our original thought was that people were typing those characters anyway, so we should insert it for them! But...turns out they type it anyway and you end up with @@ which resolves to nothing :)
Gonna close this issue since it does work and we'll fix that UI bug :)
This PR was merged and should be out in a close-future API deploy.
@Kenny2github I'll clarify when I make the docs but:
- It would show up as a call to
/tags list - Groups cannot be called on their own, they're basically just folders. Only actual subcommands can have
defaulton them
Another reason why this might be useful - the person visiting the URL might not have all the permissions the bot already has, but they do have manage guilds and whatever extra stuff you need.
@msciotti i am gonna re-open this, we need to document the option to send.
there is only 1 mention of "revoke" on page
yes, and that one mention links to the RFC you should have read? I don't see the issue
(links to https://tools.ietf.org/html/rfc7009)
for new users/users inexperienced with OAuth2 the RFC spec is quite confusing. A small section (or any other info container) with the parameters and method to send would help.
In platforms osx is not valid anymore. dispatch wants macos
platformsare the platforms for which the manifest is valid. Most simple configs, like our example, will use the same manifest forwin32andwin64, and then make other manifests forosxandlinux. However, some older games may need specific configurations for 32bit and 64bit systems, and therefore need separate manifests.
Since when?! In the past I could generate for unapproved games .-.
Read the many-months-ago announcement in discord devs:

Hey! My classic Nitro Was supposed to Expire the 25th of February and it expired today... also happened to someone else too it was really weird here is my discord username !!Marvin!!#2784
this is not discord support, go to https://dis.gd/billing
Description
Steps to Reproduce
Expected Behavior
Current Behavior
Screenshots/Videos
Client and System Information
Hello, I'm trying to port my new discord library to the browser, after compiling everything to make it work in the browser, I noticed a issue...
I was using fetch to send messages, (via POST) to discord and kept getting this error

I am 100% sure that this isn't a problem with my own library because the same code works fine outside of the browser, after doing some research on th...
Discord doesn't allow connecting to the API as a bot from a browser. You have to run your bot on your server (or use a CORS proxy).
FYI, the websocket does not have CORS, take that as you will (by that I mean: websockets just don't have CORS iirc)... I believe. (I haven't actually tested this).
The reason why that's a thing is because the browser wants to stop a malicious site from possibly reusing cookies. (Legit site sets cookies for requests to itself, hijacker gets user to visit their site which executes fetch('legit site'), using said set cookies).
I'm not quite sure why I started rambling :/
Description
In platforms osx is not valid anymore. dispatch wants macos
platformsare the platforms for which the manifest is valid. Most simple configs, like our example, will use the same manifest forwin32andwin64, and then make other manifests forosxandlinux. However, some older games may need specific configurations for 32bit and 64bit systems, and therefore need separate manifests.
Steps to Reproduce
Expected Behavior
The Variable for osx ...
Ok then, is there any way I can send messages via WebSocket instead of http? I poked around in the inspector while on discord and noticed that they used some type of encrypted websocket messages to send messages
3c8690e infobox - only approved games can generate gift... - Larkooo
364e7fb Make guildmember premium_since not optional (#2... - crowlKats
websockets are only for receiving messaages, not sending them. the thing that's sent to discord via the websocket are pings, or keepalive packets
(btw it's not encrypted, it's just compressed)
so theres no way i can send messages to discord in the browser?
I'm sure discords stance on browser builds is to discourage them.
This started with their domain change to discord.com, it is/was working fine on discordapp.com.
It's one of the reasons discord.js decided to completely drop browser support.
Night only made one statement about it here:
https://github.com/discord/discord-api-docs/issues/2078#issuecomment-697829305
https://github.com/discord/discord-api-docs/issues/1873#issuecomment-671008501
So your changes of successfully conti...
decd634 remove documentation from membership screening ... - rickling
Hey everyone, a couple of weeks ago we released Membership Screening, a feature that allows servers to require members to agree to rules before they can talk. As part of this, we also introduced new API support & docs (thx @advaith1 ).
This is an announcement that **we intend to make significant changes to the API specifically related to [getting and editing Membership Screening and the Membership Screening object](https://discord.com/developers/docs/resources/guild#membership-screening-...
should probably remove the routes at the bottom of the file too
also looks like your table formatting setting is different from Mason's (has spaces around the pipes in the divider line, which was the old formatting)
should probably remove the routes at the bottom of the file too
also looks like your table formatting setting is different from Mason's (has spaces around the pipes in the divider line, which was the old formatting)
woops good catch, I'll fix those.
I assume #2530 will be fixed in the next iteration of the API design?
We ARE NOT making changes to
pendingmembers and how that ties into GuildMemberAdd and GuildMemberUpdated. You can continue to use pending=true to add roles or w/e after someone passes the screening.
I'd like to request that changes SHOULD be made to this as well. pending is one of if not the most confusing things to use in the entire discord API right now. The current implementation is also hard on devs as it essentially requires us to cache every single member just to know when...
Hey everyone, a couple of weeks ago we released Membership Screening, a feature that allows servers to require members to agree to rules before they can talk. As part of this, we also introduced new API support & docs (thx @advaith1 ).
This is an announcement that **we intend to make significant changes to the API specifically related to [getting and editing Membership Screening and the Membership Screening object](https://discord.com/developers/docs/resources/guild#membership-screen...
Hey I was wondering if u can add like an anti alt feature or something so we can easily prevent alts and ban evasion
I believe the scope was specified at the top. This is not in said scope...
Idk how but like ik people use vpn to bypass the ipban but if u can make an alt detector which scans every members ip every 5hours or some
They can stay on their VPN
if 2 people in a server has a same ip they get auto banned but it ignores admins and owners.
So I should get banned for visiting...
So, from what I understand the problem of join roles persists. You still need to cache the members with pending=true until either a member remove or member update happens because you otherwise have no way to tell that they pass screening? This is very unfortunate.
I don't see why you'd need to cache for join roles, just check if (!member.pending && !member.roles.includes('roleid')
We ARE NOT making changes to
pendingmembers and how that ties into GuildMemberAdd and GuildMemberUpdated. You can continue to use pending=true to add roles or w/e after someone passes the screening.I'd like to request that changes SHOULD be made to this as well.
pendingis one of if not the most confusing things to use in the entire discord API right now. The current implementation is also hard on devs as it essentially requires us to cache every single member just to kno...
I don't see why you'd need to cache for join roles (in most cases), just check
if (!member.pending && !member.roles.includes('roleid')
Because what if I want to unverify a member for whatever reason?
feaf002 bye prettier - rickling
was removing the optional marker from premium_since intentional here?
c48fb0f this is why PMs dont make prs - rickling
Doesn't take too long to get guild member update events without premiums_since though ๐
8aeba1b Changes to Membership Screening API (#2547) - rickling
An example I saw while testing of when these aren't included are events where the member's roles are being updated
This seems to still be unsupported since #1324
A better design could use an event such as SCREENING_PASSED to prevent the pending member caching requirement on the bot side.
Are there any news on this?
Has there been an internal discussion, and with what result did it end up with?
This shouldn't be a big issue in general, since official Discord Clients are indeed receiving that information (but maybe using reserved/private endpoints). Exposing it to the API can't be so crititical - like already mentioned, you are able to fetch certain information...
- how many users are boosting a server (Guild ->
premium_subscription_count,premium_tier) - how long a u...
Are there any news on this?
Has there been an internal discussion, and with what result did it end up with?This shouldn't be a big issue in general, since official Discord Clients are indeed receiving that information (but maybe using reserved/private endpoints). Exposing it to the API can't be so crititical - like already mentioned, you are able to fetch certain information...
- how many users are boosting a server (Guild ->
premium_subscription_count,premium_tier)- how l...
When trying to use Slash Commands on iOS Discord App the slash commands is just sent to channel as a regular message and no INTERACTION_CREATE is sent to the bot.
Steps to Reproduce
- Register guild slash command
- Start typing the command in iOS app
- Select the command from the suggestions list and send it
Expected Behavior
Selected commands should trigger INTERACTION_CREATE message sent to the bot.
Current Behavior
The command is sent like a regular me...
this is only for subcommands in groups
Description
Limit OAuth guilds.join scope to ask for permission via /oauth2/authorize for each guild.
Otherwise, an application can ask for whitelisting to request guilds.join without specifying a guild.
Why This is Needed
There have been way too many "giveaway" bots tricking users into granting them guilds.join and then adding users to guilds without their express consent. Many of said users are confused and often scared, and don't know what's happening or how to st...
Hey @ckohen . Thanks for the link. However, the bug you have provided says "you cannot use options". I don't believe that's a case with as no one was trying to use options (but there were there). But, looks like it's a known bug anyway
Yeah, there was another bug that mentioned all subcommands within subcommand groups, but that doesn't get pushed to phabricator as its actually the same thing.
Description
On Android client, even if the command with a subgroups has a description it's shown as "No Description."
Steps to Reproduce
- Create a command with a subcommand with a description.
- Open suggestions for a command
Expected Behavior
The specified description should be shown.
Current Behavior
"No description." text is shown instead of the actual description.
Screenshots/Videos
Android client:

yeah, whitelisting is annoying, but privileged intents are already a thing so ยฏ_(ใ)_/ยฏ
I think this is a good idea
An idea for how to implement asking per guild:
A new scope guild.join, or something like that where you specify the guild's id, a parameter named join_guild_id which then displays the guild information (like when you view an invite somewhere in the oauth flow.
This would then either add the user to that guild, or allow you to add the user to the guild as normal.
The main problem i can see with this is when the guild doesn't exist at the time of authorisation....
Perhaps this could be avoided by introducing something client side.
Eg. A nagbar when you are viewing a guild you were added to, saying something like:
You were added to this guild by X. Click here to unauthorize this application.
Maybe even being able to report the application via said nagbar if the join wasn't authorized by the user. Ideally this would stay till the user dismisses it manually.
Another alternative could be some sort of authorization system built into the client...
Description
Steps to Reproduce
Expected Behavior
Current Behavior
Screenshots/Videos
Client and System Information
I'm trying to login with OAuth using the following return urls. I have them typed exactly like this in the portal, even after reloading the page.
https://127.0.0.1:44380
https://localhost:44381
https://192.168.0.117:44382
Only the local host version is working correctly. I've also noticed that the url doesn't match the url that the portal suggests to use:
https://discord.com/api/v8/oauth2/authorize network tab (I think I'm being forwarded here, this url is not in my project)
`ht...
the issue is probably because you're using https locally without certificates
/api/oauth2 and /api/v8/oauth2 should both redirect to /oauth2 so that looks fine
can you be more specific on what happens when they are not "working correctly"?
They say invalid OAuth2 redirect url.
If I use the url that the portal provides it tries to work. Of course, there is no state in that case, so my program refuses it, but that is expected.
I see what's wrong. The ClientId is being changed to an unknown value. Somehow this is not an issue for the localhost url. The url the portal gives uses the correct ClientId.
seems to be fixed on 59.0 (23701)
max_agemust be a number between 0 and 604,800max_usesmust be a number between 0 and 100
is it possible to set an invite that expires in an arbitrary amount of seconds? if not, that should be clarified
Description Limit channel choose to few types like, text and news or only voice.
Why This is Needed Users are confused, when there're choosing (for example) counting channel and them can choose category.
Alternatives Considered Check every time type of channel
[
Description
Why This is Needed
Alternatives Considered
Additional Details
That has nothing to do with slash commands.
To report general client bugs go to Discord Testers or the form.
Description
The activities field in the documentation for the gateway status update structure has its type marked as nullable, and has a description of "null, or the user's activities". It seems to me that this field is not nullable.
Steps to Reproduce
Send a status update with a value of null for the activities field.
Expected Behavior
I suppose tha...
I strongly disagree with this suggestion. Limiting to text channels can significantly limit the functionality of some commands, or completely break them.
E.g. a command that lets you choose a voice channel to join the bot into.
I do agree there is a UX improvement that can be made here that would benefit developers too however.
And this is my proposed alternatives
- Provide 3 different types of channel selections (more types)
- Allow
text,voice, andcategoryin the choices a...
From my testing any integer works for that field
I have looked but hopefully this isn't a duplicate
Description
I think there should be a way to "bulk add" reactions to a message, with a set order.
Why This is Needed
Many bots use reactions as a method of choosing options, polling, setup, page traversal.
They run into rate limits on the API by adding each reaction one at a time. This means bot user interaction is made much slower and more frustrating for the user.
Alternatives Considered
Another consideration ma...
Buttons will be added this year, which will remove the need for bots to use reactions for this (which was a hacky workaround in the first place)
#182 (comment) #618
Basically this. Closing as dupe.
Description
Attempting to add a bot with the webhook.incoming scope, whether or not it is with other scopes claims to complete successfully and generates the code. However, upon inspection in the client, there is no webhook for the selected channel, adn the integration does not appear in server settings.
Steps to Reproduce
- Generate a test application
- Go to the Oauth page with any combination of scopes that includes
webhook.incoming - Complete the flow
- Go into the...
When i try to get the roles postion he give me: [screen_guild_bug.png] but my roles are positionned like this:[screen_guild_bug(1).png]
But, in another guild it work [screen_guild.png] [screen_guild(1).png]


 => x.position - y.position )) and it give me the same
iirc this is normal, multiple roles can have the same position and they are sorted by id
I sort by position and not id
you need to sort by position AND id
sometimes roles will have the same position. this is normal
Thx it's working now ^^

Are there any news on this?
Has there been an internal discussion, and with what result did it end up with?
This shouldn't be a big issue in general, since official Discord Clients are indeed receiving that information (but maybe using reserved/private endpoints). Exposing it to the API can't be so crititical - like already mentioned, you are able to fetch certain information...
- how many users are boosting a server (Guild ->
premium_subscription_count, `pr...
Description
When joining a user to a guild via a PUT request to /guilds/:guild/members/:uid, the result is a blank 204 every time, even where the user was not previously a member of the guild.
Returns a 201 Created with the guild member as the body, or 204 No Content if the user is already a member of the guild.
Steps to Reproduce
- Obtain OAuth2 access token (with `guilds.join...
Good Morning to all Discord Employees,
I recently found a bug in your platform. In my opinion it's not a huge deal. However when you are setting your custom status and you opt for Donยดt Clean, after one or two days of use it disappears. I found this bug when I was watching a livestream of a friend of mine and in my display I had the custom status but on his i didnยดt. That already happened to me quite some times, and it is a bit annoying.
Another bug: When you open discord on your Phone ...
Sounds like something you should report to https://discord.gg/discord-testers instead. This repository is exclusively about the API and SDKs.
Description
When going to an OAuth2 authorize URL with the applications.commands.update scope, it returns an "Invalid scope" error and does not allow the user to authorize the application.
Steps to Reproduce
Go to an OAuth2 authorize URL that includes the scope, for example, https://discord.com/api/v8/oauth2/authorize?client_id=159799960412356608&scope=applications.commands.update
Expected Behavior
It redirects to the authorize page where the user can authorize the appl...
405d0a3 Fix welcome screen channel id description (#2548) - advaith1
ddca46a Added ranges for max_age and max_uses when ... - davidcole1340
0345b9f Update followup and webhook endpoint docs, and ... - advaith1
f004257 Overhaul create message documentation (#2475) - trinitrotoluene
Description
GitHub issues with long titles (over 256 characters) are not posted with a webhook.
Steps to Reproduce
- Make a webhook and copy its URL
- Add the webhook to a GitHub repository
- Make an issue on that repository with a title that is longer than 256 characters.
- See the issue
Expected Behavior
I expected the issue to be posted with a webhook, with the issue title cut so that I can still know that the issue was made on the repository.
**Current...
Description
Some GUILD_MEMBER_UPDATE events do not seem to include the pending field.
Steps to reproduce
The pending field is missing when any user changes their avatar/profile picture (from my debugging at least)
Expected Behavior
The pending field should be included as per https://github.com/discord/discord-api-docs/pull/2396#issuecomment-756429781
Current Behavior
The pending field doesn't get included
Log received from the gateway:
`{"t":"GU...
The documentation for GUILD_MEMBER_UPDATE says that pending is an optional field.
pretty sure it should be required; that's my fault
In
GUILD_events,pendingwill always be included as true or false. In nonGUILD_events which can only be triggered by non-pending users,pendingwill not be included.
this seems to be an actual bug
These changes are not yet deployed, so this PR is intended as a heads up!
Soon we'll be adding the ability for users to invoke your bot's global slash commands within a DM. Due to that change, some of the fields on the interaction object have been made optional. For example, guild_id is optional because you would not receive one in a DM interaction.
However, the behavior of slash commands within guilds today remains unchanged.
We've also added a user object to the interaction pay...
Should the version be bumped to 2 cause this is a breaking change (guild_id no longer has to always be there)? At the same time it's a beta so this is too be expected...
We currently aren't planning on bumping this to 2 because it's....breaking ish? It is a breaking change specifically for commands that happen in DMs, but commands in DMs is not something that is supported until we roll out this code. And this behavior does not change for guild commands (the interaction payload you receive from a guild today will still have all the same data).
We are still in a beta so we can make breaking changes, but we also will coordinate with developers and maintai...
Any reason the user isn't just... always present?
In what case(s) is channel_id going to not be included,?
In all existing use cases, you will get a channel ID. This is more of a future-proofing thing. For example, if we allowed bots to add options to context menus, you may be able to add an interaction by right clicking on a guild or a user, in which case that might not include a channel ID.
I say might not because none of that stuff exists yet, so again this is more future-proofing. In both guild commands and DM commands, you will get a channel id.
It may end up being that way, which is why I stated don't assume architecturally that they are mutually exclusive but you can logically think of them that way.
It's double the data right now if you have a member, since user is present within the member, and we try and save lookups where we can.
Can't repro this. What are you using to register commands?
@typpo I just tested on 59.10 and the issue still persists. I'm using some library that performs the following PUT HTTP request to https://discord.com/api/v8/applications/804524262266372116/guilds/802722086203949086/commands with the following body: https://gist.github.com/mike1808/f479f7c8a8110adfd9e1a7ccc7f14861
Looks like that library puts No Description. to subgroups and the client shows the subgroup description rather than the subcommand description.
should add a ## title above this for this one and the Jan 22 one to be consistent with all the others
breaking ish
if not for the beta, this would absolutely warrant a bump. if people's code has to change (be updated to tolerate guild_id not being present), it is breaking. that it has to do with a new functionality (DMs) is irrelevant.
probably should eventually move it out of member and only put it in interaction.user, like in messages (ofc, this would be a very breaking change and shouldn't happen until v2)
Chiming in with a +1. The endpoints should be defined in some structured manner that the docs are then generated out of.
This would make producing new language bindings easy and zero-effort -- write an importer for whatever spec json exists and rerun it every time the API changes.
Description
Add an API for mass moderation of any kind of group chat on Discord: guilds, lobbies and group channels.
Why This is Needed
Automoderation bots on Discord currently relying on subscribing to messages and reading them as posted. This causes a trust issue for those bots. In addition, developers of some bots, such as MEE6, refrain from transistioning to new interaction API as they need to read messages anyway.
Alternatives Considered
A specific user or bot...
I feel like this would be more a burden rather than a nice feature. Any filter system would rely on message events either way and your proposal could potentially cause extra latency when sending messages. The only thing I like about what youโre suggesting is the ability to subscribe to a user specific event, however even this is already doable with the current system with some simple checking.
Any filter system would rely on message events either way and your proposal could potentially cause extra latency when sending messages. The only thing I like about what youโre suggesting is the ability to subscribe to a user specific event
You misunderstood my proposal. In my proposal, the filtering would be applied server-side before the event gets propagated to any other users. So, it would appear perfectly transparent to users, no remove/edit message events will be generated out of ...
@night this is not about the bot sending itself a message.
It is about the bot getting notified that he sent a message.
I for example use this in a bot to add a wastebasket reaction to any message that was sent by the bot.
It is a perfectly valid use-case to listen to own messages.
Also think about a bot that is implemented in microservices style where there are multiple instances of the bot running and each instance cares about a specific task only.
My idea of a possible design from such an API:
-Moderation rule create
--Moderation word and context add (per guild/lobby/group chat, but shareable)
--Moderation pretrained corpus add (per lobby/guild/group chat, but shareable)
--Moderation blacklisted work add (global)
--Premoderator add/update/remove (per guild/channel)
-List moderation rules
-Retrieve moderation rule
-Moderation rule enable/disable (pretrained corpus/word filter only, work filters are append only)
-Add/update/remo...
It seems #2568 makes all the fields that aren't in the PING payload optional, solving this issue. Dunno if I just missed something though.
This PR documents missing audit log change keys, and adds an info block related to keys that get reset
There's also supposedly a reset one, however I've been unable to get it in REST results. It should come from resetting an overwrite's permission to neutral, however the API seems to just send allow/deny instead
I'd like some feedback on the info block, as the wording may be inaccurate
I believe libraries are already able to resolve type information using generics, no? I think Pylon, for example, does this already. I'm curious why a union type would be preferred when its type is based upon the configuration of the command. If you define the command expects a string, its input type will be a string.
I believe libraries are already able to resolve type information using generics, no? I think Pylon, for example, does this already. I'm curious why a union type would be preferred when its type is based upon the configuration of the command. If you define the command expects a string, its input type will be a string.
Because you cannot guarantee the same type strictness in the reply, or the payload you get via WS or webhook, without having some common property. We cannot just say `oh y...
this is not about the bot sending itself a message.
It is about the bot getting notified that he sent a message.
I don't see the difference here. If (as in your example) different parts of a microservices bot need to know when it sent a message to add a reaction, i'd suggest using an internal message broker or something similar
Description
Using a slash command with parameters returns a 400 error
Steps to Reproduce
- Use a slash command with params (example:
/command thing: string param)
Expected Behavior
The client should successfully POST to /interactions
Current Behavior
The API returns a 400 "Invalid Form Body" error
{
"code": 50035,
"message": "Invalid Form Body",
"errors": {
"...code": "BASE_TYPE_REQUIRED",
"...message": "This field is required"
...
A fix is rolling out for this now, and will be completed within the next half hour. It's due to some slash commands internal updates that shipped earlier tonight (we're working to bring validation to inputs).
You could also have different instances running on different hosts for sharding and whatnot.
And it is an unnecessary effort to require to make them speak to each other if it is not present anyway just to distribute information Discord is already distributing by sending the event.
#184 also suggested that in the MESSAGE_CREATE_EVENT the channel information will be included in the future.
resolves #2290
got the field name from Melmsie
8410402 Document fail_if_not_exists field (#2572) - advaith1
This would be incredibly useful. Currently there's no way to know what guilds have slash commands regestered to them and this could end up in old, unusable, commands existing.
And I don't think that keeping a internal log of what guilds is going to work either.
I also help out with an extension for slash commands and it's something we're trying to figure it how to do (keep all guilds up to date) and we can't do that without an endpoint to get all guilds with slash commands.
very useful
Those who want to know more : Doc
What is a Slash Command
A Slash Command is a command that you register for your application. They're made up of a name, description, and a block of options, which you can think of like arguments to a function. The name and description help users find your command among many others, and the o...
Hey hey hey! Sorry for the late update. Here is what we've accomplished last week and this week in the world of Slash Commands. Last week was mostly bug fixes because there's some big stuff coming soon ๐
- Feature: Support for global commands in DMs - docs & client changes coming soon
- Improvement: Android displays full command used
- Improvement: Arguments are validated on server side
- Fix: Choices named like channels/mentions are invalid (https://github.com/discord/discord-api-docs...
We decided to do this work as part of the work involved in server side validation ๐ It'll be coming in a larger set of API improvements that should land early next week! Maybe sooner!
A request for the ability to get an integer representing the total number of messages sent either in a channel or by a user.
This seems necessary as the only current method to do this is incredibly inefficient and slow, as you have to loop through each message separately. Talking with other developers has revealed that they are also annoyed with this system.
Personally, I've created a progress bar which increases with each message iterated through for a member. However for this progress...
Description
The restriction of the applications.commands.update scope to the client credentials grant broke a feature I made that displayed a list of bots' slash commands on a webpage. Since my use case only involved reading and not editing, it would be useful to have a read-only command scope that is available in standard OAuth. I don't think read-only access would be a security risk since it is info accessible by any user.
Why This is Needed
Applications using the update sc...
Is there any update to this feature. Like are the devs gonna do it in the future or just not at all. Just would be helpful to know
editing webhook messages has been added [docs], they haven't said whether setting name color will be added
editing webhook messages has been added [docs], they haven't said whether setting name color will be added
Thanks for the fast response. Im mainly focused on the name color part. Hopefully they'll add it in the future as pretty much everything else is customizable
Description
When providing embeds for the webhook to be sent through a POST request, if you provide up to 10 embeds that all have lower than 6k character limits for the fields listed here but if all of the embeds you send add up to 6k characters total it errors out..
Steps to Reproduce
Make a POST request to send a webhook, then create up to 7-8 embeds that are just under the 6k embed-character limi...
Description
it would be nice to allow users to specify a Date or time delta. Discord already has a date picker (though possibly not a date & time picker) would be fantastic if we could use that.
Why This is Needed
Lots of commands schedule things it'd be very useful for those. For example I have a command to create events for a specific date. Right now users have to type out the time zone, which is super unfriendly.
Alternatives Considered
Right now we can allow...
Description
I experienced some strange garbage collection errors using the Discord Game SDK through the C# (non-Unity) bindings.

Looking into the Core.cs bindings class, indeed GC (Garbage collection) measures are taken when passing a callback to unmanaged code. A GCHandle to prevent garbage collection is alloc...
Description
When using option type 4 with Slash Commands, a user inputting a very large integer will find that the number entered does not match the number processed by Discord. Sometimes this results in off-by-one errors, although I have seen larger differences between in and output.
Steps to Reproduce
- Create a Slash Command that takes in an integer.
- Run the command with a large number, e.g. /test 11111111111111111
- Observe the result returned
**Expected Behav...
Possible duplicate of #2448
Must have missed that one, closing this.
1bf244c chore: document missing audit log change keys (... - vladfrangu
6052b6a Update invalid manifest variable "osx" to "maco... - Lulalaby
For me, the main obvious benefit here is that Discord can (presumably) determine the user's timezone and could do a conversion and send a UTC timestamp to the bot, which would be a great improvement in usability. We've definitely struggled with timezones in our commands (and displayed messages) before.
My memory isn't nearly filled up now, and I can relatively consistently reproduce the problem. It appears the garbage collection happens deeper in the code. It is really like the error message said a problem with FFIMethods. I don't know exactly what though. Might be the problem lies on the unmanaged side, so the DDL, and then I can't fix it. Does anyone have a clue?
If I really keep getting trouble, I guess I could try switching to C++/CLI, but I would prefer if I can make it work with ju...
https://github.com/discord/gamesdk-and-dispatch/issues or https://discord.gg/discord-developers might be better places for this.
Ah, I wasn't aware of those places. Thank you!
If anyone with the same problem finds this thread, take a look at this issue:
https://github.com/discord/gamesdk-and-dispatch/issues/36
I'll try it out and close the issue here if it works. It's a bit misplaced that the Bugs issue tracker linked on https://discord.com/developers/docs/intro doesn't go to https://github.com/discord/gamesdk-and-dispatch/issues...
Description
When people are joining your discord server i only get information about the user
as it says here
https://discord.com/developers/docs/resources/guild#add-guild-member
It should have the invitation code here as well when they join
access_token
nick
roles
mute
deaf
invite_code
Why This is Needed
I want to know more easily who joined on which invitation code
Because now every invite is deleted when the user joins when only ...
It is similar i am sorry for reposting same issue i searched for this and had no luck. didn't knew it was track invite code
I just want to know when a user joins the guild who was the inviter.
Is this already a planned feature ? I am very eager for it to be spawned :D
Yes it is, but as they said it's "low priority" https://github.com/discord/discord-api-docs/issues/448#issuecomment-392301936
Description
The guild features specification does not list ENABLED_DISCOVERABLE_BEFORE as a possible value that could be returned from the API. I received this value within the following partial guild object from the https://discord.com/api/v8/users/@me/guilds endpoint today:
{
"id":"143867839282020352",
"name":"C#",
"icon":"a_9792ff4af564d609736e178cd374de62",
"owner"...
Description
Steps to Reproduce
Expected Behavior
Current Behavior
Screenshots/Videos
Client and System Information
@JackHelpe please fill in the bug report. Dont file empty bug reports as it clogs up the issues
Description
The fail_if_not_exists parameter does not error as expected when not passing a boolean.
Steps to Reproduce
- Send a message with message_reference to a valid message_id.
- Set fail_if_not_exists in this message_reference to a string, such as 'test'
- Send the message again
- Set fail_if_not_exists to a snowflake string
- Send the message a third time
Expected Behavior
The API errors with: Value 'test' is not boolean.
Current Behavior
The AP...
Description
I think there should be a possibility to add an option for all subcommand of a command or a whole group. This would clean up the JSON for commands with a lot of subcommands which all have a common option.
Why This is Needed
It would clean up the JSON for subcommands.
Alternatives Considered
Pasting the option into every subcommand.
Description
As it stands, the current limit on multiple-choice arguments is 10 strings. I suggest that this limit be raised higher, to allow up to around 50 or perhaps 100 choices.
Why This is Needed
While I understand the UX motivation behind limiting the choice list, there are some use cases where this limit does more harm than good.
As an example, imagine you want to add a slash command that translates a given text to another language. You've got a really good system that can tr...
Description
When a slash command is selected in the client when text is typed it will automatically select and input to the first option, but when pasting text with over 2 characters, the option is not selected and the text is ignored when the command is sent.
Steps to Reproduce
- Select a command with options in the client
- Make sure the option is not selected
- Paste text
Expected Behavior
It automatically goes into the first option, like when typing:
 or the guild has over 75k members, members and presences returned in this event will only contain your bot and users in voice channels.

