<code>Unlike webhooks, external emojis will only be rendered if the bot is a member of that server.</code>
#github-notifications
1 messages ยท Page 35 of 1
Description
Emojis in (autocomplete) choices break the input field if the corresponding option requires type NUMBER. Works fine if the required type is STRING. It's also doesn't seem to be caused by colons, no matter the amount.
Steps to Reproduce
Create a command with an option requiring a number and return an autocomplete option with an emoji in the name. Selecting the choice with the emoji works, but the command cannot be executed and the input field remains soft-locked.
...
Hi, as mentioned the ability to delete messages exists by right-clicking or hold tapping the message. However, this repository is for bug reports and feature requests for bots and applications. If there is a product client feature that does not exist that you would like I would suggest making the request at https://feedback.discord.com
Hi, as mentioned the ability to delete messages exists by right-clicking or hold tapping the message. However, this repository is for bug reports and feature requests for bots and applications. If there is a product client feature that does not exist that you would like I would suggest making the request at https://feedback.discord.com
Description
When a component is disabled, VoiceOver does not state it is disabled. This gives the impression that the component can still be interacted with.
Steps to Reproduce
- Find a disabled component
- Traverse to it
Expected Behavior
The component would state it is disabled.
Current Behavior
The component reads as if it were enabled.
Screenshots/Videos
No response
Client and System Information
Discord iOS 99.0 (28755)
Implemented the correct rate limit handling (I think).
Thanks: Minn#6688 swarley#0001
Is there a reason why this was closed without being merged?
This feels like it would be better as a footnote? Floating around in the member table seems weird.
i had started to write it like that but then i saw it was consistant with 2 other sections of the member object.. mute and deaf
The recent outage highlighted to a couple of users that it is possible to receive a GUILD_CREATE with an unavailable guild object as its payload. It is unclear to me what scenario this would indicate but from a brief conversation in ddevs it seems that it can occur if you were added to a guild during / shortly before an outage, and similar cases where the guild was not in the ready payload initially.
[This section of the docs](https://discord.com/developers/docs/topics/gateway#guild-create...
It shows up specially in small servers like 10 members, where the owner didn't make any roles. I think it should be available for every server, regardless there's any roles or not.
Why?
It clears the doubt for new joiners that who's the real owner, and can share sensitive information/discussion with them, rather than any admin/mod who's online.
Also show the badge on the owners client as well, ie. show them that they're the owner of the server, so it may clear more people's doubts on this.
Current behavior: owner badge displays on the owner of no other guild member has the Administrator permission node.
There are specific conditions for the owner crown to be shown.
There should not be a hoisted role with administrator permissions in the server. It's weird behavior and I wish discord would just make a button to toggle the crown
Oh I see, honestly I saw crown on small non customised servers with no roles, that's why I wrote that ๐ . Thanks for letting me know that I was wrong though.
There is no need for bloat in the docs...
This was added for discoverability as the old slash commands docs used to belong here, which have seen been moved to the application commands page.
@NovaFox161 Yes, but the majority of developers and hobbyists refer to slash commands as application commands already anyways... they go hand in hand.
For the first year and a half, they were called "slash commands" and in fact, the end user facing education still refers to them as Slash Commands. So, really, you should be arguing this should stay for all the hobbyists that don't know what the API naming convention is.
This is gonna get closed, but just putting in my 2 cents as to why this isn't achieving what you intend for it to be.
If you wanted to r...
I feel at the very least the link reference link should be changed, as it does not work...
[Application Commands](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/)
The link does not work if you are viewing through github, that is why you should be viewing the docs through https://discord.dev
@NovaFox161 I don't want to bring up an argument, but why is the SDK cosidered bloat and not meaningless things like an empty markdown file lol? Discord Game SDK would be awesome to bring back, I dont get it...
Despite this PR being marked as closed, I think the author brings up a valid point. Slash and application commands as titles of the same feature implementation go hand-in-hand together already. My assumption was that the existence of Slash_Commands.md after migrating the details over to the application commands equivalent was so that current documentation in various projects wouldn't simply break, plus, it would serve as a redirect for people to look at. I disagree with the use of the term ...
Description
Basically my discord started saying try again and couldnโt get it to work.
Steps to Reproduce
Probably fixing this bug.
Expected Behavior
Probably my account being blocked forever
Current Behavior
It says the same thing
Screenshots/Videos
Client and System Information
Discord app and Discord on a laptop
Despite this PR being marked as closed, I think the author brings up a valid point. Slash and application commands as titles of the same feature implementation go hand-in-hand together already. My assumption was that the existence of
Slash_Commands.mdafter migrating the details over to the application commands equivalent was so that current documentation in various projects wouldn't simply break, plus, it would serve as a redirect for people to look at. I disagree with the use of the ter...
At the end of the day though, it really makes no real difference. I honestly have no real preference. The docs are pretty well built in this area already.
I disagree with the use of the term "bloat" here, but I will admit that it currently serves as nothing more than a markdown redirect.
And yes, bloat was a bit harsh, I apologize.
there are probably still external sites linking to the old docs url, which is probably why this page still exists; would be useful to remove it from navigation though (or do an actual redirect somehow)
also, the GameSDK is not being killed, only game store functionality is.
this is a temporary IP ban, it typically lasts an hour or a day.
But technically speaking, without the game store, the SDK is meaningless... right?
no. you can use the sdk without having a game listed on the store
I firmly believe that an integrated game store would be awesome in discord. I first stumbled on a page for Into the breach, and couldn't understand what I was looking at and why it wasn't a steam redirect lol. I understand monetary issues and adoption rates are probably the main driving factors, but still... Its a dream I think a lot of people would love to live in.
no. you can use the sdk without having a game listed on the store
Ah understood.
Will there be any audit log event when the cover is changed?
we haven't made the change to capture image changes in the audit log yet, but we intend to
Expanding on this, "move message" would be great.
Too often a topic starts and dominates a low-traffic channel that should have been started as a thread. There will even be a reply of "Well it's too late now", and then continue to dominate even more in that channel.
The decision to not thread when it does feel "too late" stems from not knowing how long the conversation will continue from there on, and not wanting to waste a thread on a topic that will only have 1 or 2 more messages.
At lea...
Any idea when nested slash commands will be implemented?
For example: /config channels set #channel , /config channels show #channel, /config channels reset #channel
All in one command.
Thanks
These already exists and are called Subcommands and Subcommand groups.
See: https://discord.dev/interactions/application-commands#subcommands-and-subcommand-groups
| communication_disabled_until | ?ISO8601 timestamp | when the user's [timeout](https://support.discord.com/hc/en-us/articles/4413305239191-Time-Out-FAQ) will expire and the user will be able to communicate in the guild again (up to 28 days in the future), set to null to remove timeout; it will throw a 403 error if the user has administrator permisson | MODERATE_MEMBERS |
Again, as i said above this just makes it inconsistent with the rest of the table
i see, are you saying about the ;?
because it's not all that i suggested, for example, what is a "403"? i think it doesn't make sense to some people without the word "error"
as had been noted in the above thread, this serves as a redirect. not the most elegant but it gets the job done.
Ok, so discord already has a helpful feature which allows us to mark viewed all pending unviewed messages and dms, but what about pending friend requests?
I like to meet new people, and people like to talk with me, but in the mid of new people, they're are trollers with lots of self bots. They will send a lot of dms with lot of accounts, and send a lot of friend requests. We can deal with marking all dms as read, but idk what about the pending friend requests. So I would love to hear what di...
This should be on https://feedback.discord.com not on the API docs repo
What I meant is a nested subcommand group, for example
/config starboard required-star-count set ...
/config starboard required-star-count show
/config starboard required-star-count reset
Currently, there is no way, other than basic string input, to accept @here as a command interaction option. My suggestion would be to include this in the Mentionable option as it seems to fit best here. @everyone already fits and although that is technically a role, the @here "group" is a mentionable input just like roles and users.
Why do you re-create it.
Discord has closed it before.
It was closed without any comment or hint as to why, not good practice since it was a legitimate pr.
Why do you re-create it. Discord has closed it before.
There was no response or reasoning as to why the PR was closed. I assumed it was done so by mistake.
It was closed because this documentation is for the API. We don't document client behavior.
You guys are removing the message content intent, which is gonna be a huge problem for beginner developers and also us devs.
we will need to get our bot verified, and we will have to use slash commands. we already had a massive setback when danny stepped down from the discord.py api developement, and now when you guys disable the intent, we bot devs are screwed cuz text based commands will be gone and the only way to view those is by watching videos and it will be history to see text...
If you aren't able to implement slash commands, you can have your users @-mention the bot in command messages to continue using message content based commands (e.g. @Bot ping).
In addition to that, there will be new tutorials and new documentation that will show application commands and they'll hopefully overtake the older, now broken, tutorials in time - some libraries are already using Application Commands in their Getting Started documentation, and as the Message Content Privileged In...
@msciotti Why not allow all URI schemes?
checked on this and sounds like we're not currently planning on returning an error here. Like you mentioned, setting a timestamp in the past shouldn't functionally timeout the user, and we currently we do have communication_disabled_until values set to values in the past since they never get cleared once the timeout expires. so it's currently not invalid for the property to hold past timestamp values. But an argument can be made to still validate against past timestamps when setting the v...
Description
If i try to remove or add a user a role it will give a 405 error
Steps to Reproduce
Resposen whit a 204 status
Expected Behavior
405 error
Current Behavior
405 error
Screenshots/Videos

Client and System Information
Postman api system
and try php api
Are you sending your request with HTTP instead of HTTPS?
Description
Try to create dm will response whit a empty array
Steps to Reproduce
Respone whit chat id or add it on the user api
Expected Behavior
Response of the channel id whit user name
Current Behavior
a empty array
Screenshots/Videos

Client and System Information
Postman api system
and php api
Just like #4403 you are using HTTP and not HTTPS

nope now i get a json error
Are you sending your request with HTTP instead of HTTPS?
Thanks for helping
That would be correct, because you are not sending json
https://discord.com/developers/docs/resources/user#create-dm
I'm guessing you aren't sending a JSON request: https://learning.postman.com/docs/sending-requests/requests/#raw-data
Additional things that would be helpful to document for RPC, if possible.
- Timeline for the RPC API to be publicly available
- Process for an application to formally request being added to the allow list
Reattempt of #3094
Document that allow and deny can be omitted/be null as they default to 0 in
- create channel
- modify channel
- edit channel permissions
The overwrites in the partial channels in the create guild endpoint can also be partial, but I don't know if I need to document that as the channel is already specified as partial.
Not released, in testing
DDevs info: #event-info message
Documentation created during the beta test.
I would close this due to 78265c0c3b88be69ba3c78f07c027a356ffe593e
Discord staff literally said not to doc the beta... you dont need to pr every new feature before it comes out
Extending off of what @quinchs said, Discord staff advise against documenting unreleased features in general. I believe it would be best to let Discord document this themselves, or to re-open the PR when there's a final design of the feature.
It looks its not whitelisted only, so where's the docs for it?
https://discord.com/developers/docs/topics/oauth2
Some scopes here need approval, how can someone apply for it?
is this a footnote for all the table? because there isn't a * in the table
HTTPS interactions actually can't load all guilds from gateway and sync this with cache, also When you add only application commands to the server bot can't load /guilds/:ID to check this (event when it would be able to do that, spamming api with 80 - 200 requests per user is stupid)
Suggestion how to fix this:
- Create custom endpoint to get only mutal guild
- Add to
/users/@me/guildsmutal field
This is a duplicate of #3251
Right now, we have the user type for options, which lets you select an user, however, this user can be any user, even if they're not in the server. This leads to custom checks on the dev side to know if the user selected is really in the guild, otherwise causing issues on commands where you need a member such as timeout. The member option type would require you to select a member of the server, so there's no need to have custom error messages when the user you selected is not in the guild. Is...
If you're curious about the Discord team's opinion on this matter, you can reach them at https://dis.gd/contact here. (So it is possible to ask discord's opinion on this issue via ticket)
But I'm talking about oauth2 and https interactions cases
While it may be for a different use-case, it's the same feature request either way.
This would be quite useful, is there any update on this?
In the December stage the staff indicated that variadic arguments is a very low priority feature, so don't expect it to ship anytime soon.
I believe you should contact the developer support for that: https://support.discord.com/hc/en-us/requests/new?ticket_form_id=360005592534
Description
When changing the guild's preferred language (aka guild locale), App tab disappears and thus user and message commands too. Slash commands still work fine.
This issue appears in all the members of a guild, making an entire guild not possible to use context menus.
The only way (I have found) to fix this, is reloading the client.
Steps to Reproduce
- Register any context menu command.
- Change the guild's locale.
- Try to use the context menu command.
Expe...
@InvalidLenni Looks like the pull bot nuked your PR
pretty sure you can't apply for these
If you have a good reason to use them, I don't see why you can't apply for these scopes.
the scopes are not open to further approval
\* In each overwrite object, the `allow` and `deny` keys can be omitted or set to `null`, which both default to `"0"`.
\* In each overwrite object, the `allow` and `deny` keys can be omitted or set to `null`, which both default to `"0"`.
there simply isn't an application process
That's why I opened up a discussion here. I want to know how to apply for approval, or is it even possible? If not, the docs should get updated then.
@advaith1 The limits seem to be more aggressive than before, I can reproduce the rate limiting from a residential CGNAT IP, using the web client within normal human usage pattern.
This repo is just for api docs. Contacting support would be more appropriate: https://dis.gd/contact
| communication_disabled_until | ?ISO8601 timestamp | when the user's [timeout](https://support.discord.com/hc/en-us/articles/4413305239191-Time-Out-FAQ) will expire and the user will be able to communicate in the guild again (up to 28 days in the future), set to null to remove timeout. Will throw a 403 error if the user has `ADMINISTRATOR` permission | MODERATE_MEMBERS |
i specifically didnt do this as its not 100% accurate, youll get a 403 if you attempt to timeout a server owner, and they might not have the "ADMINISTRATOR permission", while i think its pretty widly understood that owners have "administrator permissions"
Description
There doesnt seem to be any documentation/clarification on the rates of this in:
ops and status codes
edit channel message
ratelimits
Couldnt find them in the headers of requests either.
Any sources on the hard limit or where they are being sent at? or if they are bei...
Description
I have started creating a feature that use ephemeral follow up and I am editing the message successfully.
But when it comes to deleting it, I am receiving a Unknow Message error.
The API documentation says that ephemeral follow ups are not manageable Does not support ephemeral followups..
It would be nice to support deletion for ephemeral messages since editing works, and updating documentation about it.
Steps to Reproduce
- Create a follow up message to an int...
Sorry the typo fixes are split into 2 commits. I didn't realise the GitHub iOS app wouldn't bundle together code review suggestions like on the website.
Server owners always have Administrator (ADMINISTRATOR) permission.
I don't see the difference between "ADMINISTRATOR permission" and your so-called "administrator permissions", except the latter is not consistent with rest of documentation which describes permissions LIKE_THIS, and even if there is another difference, it's very hard to see it since it's not intuitive, and [no other part of documentation has used the latter](https://github.com/discord/discord-api-docs/search?q=ad...
Enhanced-discord.py is a maintained fork of discord.py, which of course is no longer maintained. This library adds an incredibly easy transition over to slash commands, along with some other QOL changes.
I've searched the documentation and didn't find any clear answer to whether requests to interaction endpoints should use the Global Rate Limit bucket shared with other endpoints or not. This is especially important for large bots considering that Discord can theoretically send you dozens of interactions per second.
According to the information I've gathered, the Global Rate Limit doesn't apply to these e...
[discord/discord-api-docs] New comment on discussion #3210: API Feature Request: Track invite used\.
Is there any update on this?
@zoddo Alright, I updated it again. Thanks for the info! :)
this should be sorted in an alphabetical order
| [disnake](https://github.com/DisnakeDev/disnake) | Python |
| [enhanced-dpy](https://github.com/iDevision/enhanced-discord.py)| Python |
Description
ThreadMetadata#create_timestamp is documented as optional, non-nullable in the docs. With REST, it apparantly follows this documentation. However for gateway, it is sent as null in GUILD_CREATE's threads attribute.
(Am I surprised that this happens? No. But I'm not making a PR because I am unsure if this is intentional.)
Steps to Reproduce
- Have a guild with an active thread that was made before 1/9/2022.
- Connect to the gateway.
- Look at the `GUILD_C...
Something similar to this happened to me, but, I was unable to reproduce the problem
If you aren't able to implement slash commands, you can have your users @-mention the bot in command messages to continue using message content based commands (e.g. @Bot ping).
In addition to that, there will be new tutorials and new documentation that will show application commands and they'll hopefully overtake the older, now broken, tutorials in time - some libraries are already using Application Commands in their Getting Started documentation, and as the Message Content Privileged In...
You guys are removing the message content intent, which is gonna be a huge problem for beginner developers and also us devs.
we will need to get our bot verified, and we will have to use slash commands. we already had a massive setback when danny stepped down from the discord.py api developement, and now when you guys disable the intent, we bot devs are screwed cuz text based commands will be gone and the only way to view those is by watching videos and it will be history to see text...
well, i still prefer the message content intent not being removed
nothing is being removed; the message content intent is being created and made privileged. you can learn about it at https://dis.gd/mcfaq, but your preference is not really relevant. bots should already be using slash commands anyway, and learning based on watching videos is typically a bad idea since they're typically outdated anyway
Agreed^^
I don't think slash commands are so hard to set to buffle about it. Most of the libraries has well-written docs about it's usage and functions.
You can and should read the docs and try to learn from them rather than searching for videos on them.
we will need to get our bot verified, and we will have to use slash commands.
I believe there's a misunderstanding between your interpretation of how the message content intent will impact bots starting April 2022 and onward. This link here should and will go over most of the commonly asked questions surrounding the existence of this privileged intent, which I highly recommend reading.
[...] and now when you guys disable the intent, we bot devs are screwed cu...
The edit guild member endpoint was recently changed to send a 403 error when you timeout a user that has administrator permissions (it previously allowed you as long as you have the permission and higher role) This change went live randomly last week without any notice to developers. 403s cause API bans and having previously done our permission checks, this came out of the blues as a surprise. A ping or api changelog documenting the change would be nice. (as of today 01/30/2022, the docs sti...
Cross-referencing.
PR for recent change for timeout: #4390
This kind of requests were made in the past as well: #3708, #3912
Hello all,
I would like to take your advise on discord bot. I want to make a campaign on discord that users interact of my tweets by rt, fav and comment ( could be changed depends on campaign). And I want to take a report for user basis at the end of the campaign (how many rt,like and comment did by users).
For that, do you have a solution or for which step which solution could be implemented?
Thanks in advance,
I believe you'll want to get access to the Twitter API as well, which from the last time I used it, requires you to describe in detail your app to Twitter to give you a token. Other than that, I'm not sure where Discord comes into the picture.
Currently, when replying to an interaction, discord checks for everyone permissions and not bot permissions. Ik it's because non-bot application can also reply to an interaction. But it's causing a simple problem in my bot. I send external emoji in my reply which need use external emoji permission. My bot have the permission but still it's showing :name:. All the servers won't give use external emoji permissions to everyone role, but they'll give to bots. So at least for these permiss...
Description
Same payload as #4213 :
{
'type': 8,
'data': {
'choices': [
{'name': 'number', 'value': 22335}
]
}
}
Autocomplete options never show up on mobile for integer and similar options
Steps to Reproduce
- post a type 8 with a choices field on the interaction autocomplete request on an integer option
- go to your mobile device
- notice no matter what you type, no options show up or fail
Expected Behavior
...
Was not able to reproduce this, are you sure this is not an issue with the way you deserialize the event?
The JSON I got:
{
"t": "GUILD_CREATE",
"s": 2,
"op": 0,
"d": {
...
"threads": [
{
"type": 11,
"thread_metadata": {
"locked": false,
"auto_archive_duration": 1440,
"archived": false,
"archive_timestamp": "2022-01...
It was closed because this documentation is for the API. We don't document client behavior.
Where then, should this be documented? There is precious little information about this, and no logical place where it should exist.
If you don't document client behavior, why do you document the format for sending emojis? In fact, plenty of documentation exists on the api documentation for things such as this, and the line is pretty grey. Where else should this be documented?
The fact is that...
it is supported in slate 2 (which is not out yet)
Any ETA or place that I can follow the progress of this?
There is no known ETA. and there is not place (yet) to track upcoming changes, you just have to hope they provide some sort of general picture of what's going on and checkout the monthly ddevs stage events
When responding to an interaction with /callback, currently the API returns No Content (204).
This means if you want to later reference the sent message, such as to to handle components, add reactions, store the message ID etc. it will require an extra API call to /@original to get the message data.
In a Discord API wrapper, it would help to have the send method able to return a...
"if the user has the
ADMINISTRATORpermission or is the owner of the guild"
๐ went with this, should be good to merge now
so has the v2 behavior been decided and will it be non-breaking? currently v2 has a major breaking change to these endpoints, and there seemed to be internal disagreement as to whether it will launch with the current breaking change or not; if it will be launched in the coming months with the breaking change then the endpoints should be documented as deprecated asap
What about Attachments Context Menu Commands? I remind you that they have their own separate context menu. And unlike channels, it does not cause such problems with implementation by the API
not sure what problems you're talking about, but you should make a new discussing for attachment commands
Note it's also hit and miss on string options too but that's not as consistent as integer
Can recreate it here too. Have a command with string names and integer values on autocomplete and autocomplete is just not functional on mobile whatsoever.
The only aspect of autocomplete that works on mobile is my initial autocomplete payload when there is no input is displayed to the user.
Android Build 113.3 Alpha 113203
It would be great to be able to create context menu commands for attachments.
Developers have the ability to create context menu Message commands to somehow process attachments, however, this approach has a few problems.
Firstly, if the message has more than one attachment, then the bot will not be able to determine which attachment a user meant.
Secondly, the bot can have message context menu commands both for processing attachments and for processing the text content of the message. T...
Yes, I still recieve null in my threads parameter. Here's the trimmed (raw) json I got, thrown into a prettifier:
{
"threads": [
{
"type": 11,
"thread_metadata": {
"locked": false,
"invitable": true,
"create_timestamp": null,
"auto_archive_duration": 10080,
"archived": false,
"archive_timestamp": "2021-12-21T04:03:10.474000+00:00"
},
"rate_limit_per_user": 0,
"parent_id": "xxxxxxx",
...
Changelog is desperately needed, just a small aside here:
If you are worried about API bans, you should track the number of invalid requests that you make and do something when you are seeing unusually high numbers of invalid requests.
djs/rest actually has a dedicated event that can be configured for just this purpose, I hope some other libraries have it to, and if not I'd love to see that in more libraries to combat this.
The inconsistent toggle was actually probably fixed yesterday with an API rollout (also it should show in audit log)
786d24a Update Special_Channels.md (#4387) - InvalidLenni
0a96bce added missing style around id (#4417) - PhoenixmitX
7c0249a Clarify that permission_overwrites can omit `... - cherryblossom000
This should have been fixed a while ago.
d6fb2e8 Clarify communication disabled behavior (#4390) - Jupith
c144941 Fix welcome screen required permissions (#4382) - Jupith
I think we dont need this, if you get a disconnect, try to resume, otherwise reconnect
Older threads won't have the create timestamp set for them, there's nothing I can really do about that. It'll never be null or missing for newly created threads though, if you have a newly created thread that has it missing/null, feel free to reopen though!
5a0b9f6 Adds nsfw_level field to invite example (#4334) - Jupith
closing because this was already committed (cleaning up)
Interaction payloads transmit snowflakes as strings instead of integers ๐ฑ Docs need updating
We dont put rate limit details in our documentation
Feel free to update the docs, but the general suggestion here is to not implement older versions.
bac2f40 Interaction events can send string snowflakes o... - typpo
95994a9 Clarify documentation on threads (#3836) - Davi-the-Mudkip
I'm unable to reproduce this, so it's likely since been fixed. Please let us know if you're continuing to run into this.
547dc13 Update ephemeral support for response endpoints... - FasterSpeeding
1875d80 Document newly_created on the THREAD_CREATE d... - ajpalkovic
@ajpalkovic the issue is that according to the documentation it can't be null (only absent)
It's actually not even "gateway behavior", i bet something like thread_update would not set it to null, it's probably only guild_create and thread_list_sync that do, too bad. I could fix it, but caches, you know, so probably best just to say it can be null then if it's a problem for y'all?
1a8ea79 Unrevert bac2f4020275df5644d7d3f3f89b7f6bf087b50c - ajpalkovic
While acceptable that caches may cache the invalid value for some time, it would be even better if the API was consistent in when it sends which fields with what values.
Remove the table of error codes mapped to their messages from the JSON section of the "Opcodes and Status Codes" page. This table was originally created when the message for an error code was not returned in the response, but now that this is the case with API version 8 and up we are removing the table of explicitly documented mappings.
8f91fa1 remove json error code table (#4427) - zeylahellyer
So we are just casually removing clarifying information now? I'm sorry, but this seems a little backward. Sure, the message is provided in the response, but this is just purposefully hiding useful information, especially for libraries that want to map these errors to constants.
Might as well just remove the HTTP status codes table since that information is searchable online
Continuing on NovaFox's message, I use the error codes quite often to discriminate specific errors (e.g. if an API error is an UnknownMessage, UnknownChannel, or simply MissingPermissions) and do one thing or another, I can't be the only one doing this.
With the removal of the table, we won't be able to have a reliable source for those codes, and they'll eventually fall outdated, meaning that in the future we won't be able to tell if an operation failed due to one specific thing or another.
Might as well just remove the HTTP status codes table since that information is searchable online
Gateway events don't need to be documented either, you can log what your bot receives and the payload and figure it out from there.
We're needing the error codes for clarify errors in the libraries etc
For me it's more that: it's fixed for newly created threads and consistent for them, and all the old threads will eventually auto-archive anyway, so by the time that data is evicted from the "cache" they'll probably be archived anyway and it would be a moot point. And if I do fix this issue, it's just one line, it means that things would become more inconsistent because you cannot know if a given old thread will have null or have the field omitted.
So that's why I was leaning towards "do...
Making us have to purposefully cause errors against the API just to add contextual error handling to our applications sounds... counterintuitive.
I really think this should've been passed by the community before merging this?
This reverts commit 8f91fa13da0104eebbdf09af6bf55ad928311c12.
See #4427 for context
NovaFox is everyone's bestie โค๏ธ
But this issue is simply prompted by the incorrect documentation. In my library that's statically typed this causes a deserialization error. If you intend to keep the behavior that doesn't match the docs that's fine, but don't close the issue until the documentation is amended. The issue was never about whether this behavior should change or not.
Description
ThreadMetadata#create_timestampis documented as optional, non-nullable in the docs. With REST, it apparantly follows this...
Thanks to those of you who left constructive feedback. We're thinking about how to improve the error codes section of the documentation.
63c72a7 Revert "remove json error code table (#4427)" (... - NovaFox161
This is now documented: https://github.com/discord/discord-api-docs/commit/547dc1362c5e128df1f431dbf0004fb01df0a9e2
But deleting is still unsupported I presume.
7307405 this should not be set for dev dependency requi... - devsnek
693ad38 Revert "Update ephemeral support for response e... - devsnek
Reverts discord/discord-api-docs#3866
611180a Revert "Update ephemeral support for response e... - devsnek
Description
For some reason the bytearray does not end with b"\x00\x00\xff\xff" so it waits to receive the next data, the problem is that it takes too long to send so much that it ends up sending code 1000 because it was not sent a hearbeat because the "READY" event is expected. Now it happens that if it is decompressed without finishing the suffix, the object appears successfully.
Steps to Reproduce
- Connect to discord gateway
- Send identify
- Wait message
Expected B...
Description
When sending an interaction or webhook message, it is currently possible to add any emoji by its identifier (eg. `` even if the bot is not in a server containing that emoji.

However, when editing a Webhook or Interaction message sent with a custom emoji, unless the bot shares a server with the emoji, the emoji will not show up properly and will appear ...
are you sending an authorization header in the edit request?
When I remove the Authorization header, I'm seeing 401 Unauthorized.
The request is to PATCH https://discord.com/api/v9/channels/.../messages/...
ah, you're using the wrong endpoint; you should use Edit Original Interaction Response without an authorization header
I'm aware of that endpoint and it does actually keep the emojis if I use that, however I'm trying to make it so that when someone replies to the message, it will edit it.
I'm not sure if I'm able to get the interaction data necessary for using the endpoint if I just have a listener for new channel messages.
this behaviour makes sense. if you're editing the message as a webhook, you get webhook checks applied, and if you're editing the message as a bot, you get bot checks applied.
I'd assume other webhook-only formatting such as masked links would also break when editing the message as a bot
Ok thanks. I suppose it makes sense.
One more thing though, I assume it is impossible to get an interaction token given its message id, even if the application id and authorization is known?
that's correct - you'd need to store it in your own database, though keep in mind interaction tokens are only valid for 15 minutes. you can create a webhook yourself if you need to be able to edit the message longer than that
Bypassing welcome screen phone number veryfication by boosting server be like
@Squidtoon99 We did an update where invalid data format should cause now a 4xx error with better error message, not 5xx. Let me know if you still see 500.
How does it falls under discord API discussions? You could have asked this question in like any discord bot lib server, bot list server, or discord developers server, or a programming hangout server. Why would you ask about how to make a discord bot here?
It seems that discord doesn't approves bots which are in multiple guilds by the same user. So this can become an advantage for a end user, who wants to ruin the bot developer's life. Reaching 75 servers, that too without dm advertising or any bad way of advertising, can be considered like a very big achievement. But just because someone hated a bot, they added the bot to multiple testing servers, which made discord team unapprove their bot verification. If discord team wants to stop these bad...
Motivation
Many popular libraries, such as discord.py, have support for group commands, in which the route of a group can be invoked by the user. Let's take a look at a simple example of this in dpy.
# !foo
@bot.group(invoke_without_command=True)
async def foo(ctx):
if ctx.invoked_subcommand:
return
return await ctx.send("foo!")
# !foo cas
@foo.command()
async def cas(ctx):
return await ctx.send('foo...
Someone did this to me, but it flagged up the inorganic growth on the page before I was even able to fill out the form.
in this case do not apply - instead you should list out the guild id and owner of of each guild your bot is on and then look for patterns. in my case some one person had made 50 test guilds.
you can then make a one off command that forces the bot to leave all these guilds and then wait before trying again to verify.
moral of the story if the form you fill in flags u...
if it shows the inorganic growth error it isn't possible to apply until fixing it
If you get denied for inorganic growth, it's not due to shared ownership because that is checked before you actually apply. Manual denials are based on much more factors we don't know about because it is an anti-abuse measure to fight bots with bad intention to grow past 100 servers
Not only someone adding your bot to tens of servers won't get you denied, but it is also easily fixable with a quick eval (hi ian) that leaves servers owned by the same set of users
This post has been updated to reflect the status of each item as well as new items that have been publicly discussed in Dev Events
5 business day SLA for intents requests
5 business day SLA for verification requests
these 2 can be unticked
Context menu commands
unticked & imo should be split up, as they're not out for iOS or Android
Bit sad to see that stuff such as age-gated commands isn't even beta yet... Should imo be also of a higher priority because let's face it: People like the naughty and sure will try using those commands in SFW too.
Age gated commands and hidden commands require some architecture work on the backend that will enable better UX (besides just blurring/disabled). That work is happening right now, but yeah, not in beta.
[discord/discord-api-docs] New comment on discussion #3210: API Feature Request: Track invite used\.
That has different semantics though. Does not replace mass invite use tracking, and also cannot be satisfied by user-specific invites.
No it isn't - this is asking for a context menu command, not a slash command argument type
[discord/discord-api-docs] New comment on discussion #3210: API Feature Request: Track invite used\.
@jhgg I think this could easily be solved by user-specific invites.
@Stalruth I cannot think of an environment that can access discord.com within current ToS (third party clients in lower-memory devices could, though, if allowed), but cannot download and reupload an attachment to reuse the attachment content in another context.
[discord/discord-api-docs] New comment on discussion #3210: API Feature Request: Track invite used\.
This conversation ended 3 years ago, please stop necroposting.
It's just a suggestion for a new type of application command applied to context menus. What does TOS have anything to do with suggesting it?
will the amount of options permitted in slash commands be increased ever?
We've updated the API in preparation for slash command attachments, and as part of this work we added attachment removal support to this path. Thanks for filing the suggestion and verifying Minn ๐
We've updated the API in preparation for slash command attachments, and as part of this work we added attachment removal support to this path. Thanks for filing the suggestion and verifying Minn ๐
Returns a partial [invite](#DOCS_RESOURCES_INVITE/invite-object) object for guilds with that feature enabled. Requires the `MANAGE_GUILD` permission. `code` will be null if a vanity url for the guild is not set or if the guild has no public text channels.
In MESSAGE_DELETE and GUILD_BAN_ADD, also add an option to remove messages that mention that user/message.
This could be abused by mentioning someone & deleting the message with this feature. The user gets a notification sound, but will likely have no idea from where it is coming from.
Ghost pings cannot be prevented, hence I tend to ignore them. This could be abused to rewrite history? Yes, but there are use cases you want to pretend that user never joined in the first place.
This isn't feasible with the way we store messages. A message is only singly linked to its reply. So we can't go from message -> the messages that replied to it easily, only message -> the message that was replied to.
This isn't feasible with the way we store messages. A message is only singly linked to its reply. So we can't go from message -> the messages that replied to it easily, only message -> the message that was replied to.
The current API documentation of the manage server permission is somewhat vague, and doesn't actually describe the specific actions someone could take when granted that role. In addition, manage messages fails to mention pinning messages in it's current form, which could be confusing to beginning bot developers
This change fixes both issues, making things a little bit more clear on both permissions
@jhgg I think that could be solved by adding double links in the backend while still serving single-links in the API side to prevent abuse by non mods.
And yes, this feature request has been a response to a real abuse scenario I have experienced while moderating a real Discord guild. I had to manually go and delete 2k+ messages of the offending user. It took more than seven hours to manually identify and delete all them one by one, as no existing bots had that functionality and making and testing a new bot with that functionality would have taken something like a week.
server region doesn't exist anymore, and manage server does a lot more than what is listed here.
| MANAGE_MESSAGES \* | `0x0000000000002000` `(1 << 13)` | Allows for deletion of other users' messages and pinning messages | T |
it also allows bypassing slowmode and publishing all messages in news channels
| MANAGE_GUILD \* | `0x0000000000000020` `(1 << 5)` | Allows editing guild's settings and welcome screen, managing guild template, integrations and widget and deleting invites | |
| MANAGE_GUILD \* | `0x0000000000000020` `(1 << 5)` | Allows deleting invites, editing guild settings and welcome screen and managing guild template, integrations and widget | |
| MANAGE_MESSAGES \* | `0x0000000000002000` `(1 << 13)` | Allows crossposting and deleting other users' messages, pinning messages and removing other users' reactions | T |
Description
Of course, I understand that the case below is very unlikely to happen in real conditions. However, it seemed to me that this behavior was not intended
Steps to Reproduce
- Timeout a user
- Give the user administrator permission.
- Observe
Expected Behavior
The timeout will be removed from the user
Current Behavior
The timeout was not removed from the user. At the same time, it is now impossible to remove it since the corresponding button is not display...
A contradiction has been spinning in my head for a long time. The text input interaction will be available only in modals. And it was explained by the fact that text fields going up are bad UX. I agree with that, however what about the UX of the message editing?. It's literally the same moving text field
I also would like a REST endpoint to get a list of all voice states at a particular point. It wouldn't matter to me if it isn't 100% accurate as it is the only way that my serverless bot can get this information.
Description
Bulk Overwriting guild commands while an android device is locked causes the command picker model to fail when opened.
Steps to Reproduce
- Close and reopen the android client. (not required, increases consistency)
- Go to a guild with a single bot and multiple commands.
- Type
/and scroll threw the command list. - Lock your device.
- Bulk Overwrite guild commands without making changes (in the aforementioned guild).
- Unlock your device and click in the text bo...
"editing guild settings" includes welc screen, template, widget and integrations, i think its just easier to leave it as Allows management and editing of the guild
I pointed this out a couple times in the chat for the last stage event. I tried to edit a few messages there and pretty immediately decided it was never going to happen because it really is terrible UX.
I guess the justification is this: if you are editing a message in a fast moving chat, its probably best to send a new one because no one will even see the edit, for an interaction, that is supposed to be way more common and having that difficulty is a lot less justifiable
if you just scroll up it turns off auto scrolling, they could make it automatically stop auto scrolling if you open edit or click in a component but tbh it's easy to already just scroll if you need the chat to stop moving; I don't see this as a good justification for not adding a text input message component which would be super useful
Editing guild settings and welcome screen and managing guild template, integrations and widget are all di...
yeah... maybe this should just say "managing messages"
it's also ignoring the fact that not every interaction will be in a fast-moving chat or one that gets messages often in general, and it should really be on the bot devs to consider the best use cases for their implementation of components. for example, i have a form bot that DMs you each question one after another in order to fill out a form. this isn't necessarily bad, but it'd be nice to be able to turn 10 or so messages into a single one that gets updated when a user submits the text box...
Fair. I'm updating that in my latest commit involving most of the suggestions made here
I'm manually adding this since it conflicted with another suggestion.
You should use "guild", not "server".
I totally agree, Sorry for missing that. I will fix that in my latest commit, and fix it in a couple other spots on this page as well
I would rather err on the side of being more specific then more vague, let me know if there is anything still missing from manage server in the latest commit.
yeah... maybe this should just say "managing messages"
I would rather be more specific then that, since someone may be looking in these documents for specific permissions to request for a specific task (such as deleting reactions) and I would like that to be supported as fully as is reasonably possible in the documentation.
| MANAGE_GUILD \* | `0x0000000000000020` `(1 << 5)` | Allows management and editing of the guild | |
I don't know if this has already been requested, but ...
Can a switching setting called something like "Enable auto-mention on reply" and when you deactivate it and reply to a message, the mention will be automatically set to "off"
Why is this necessary?
It will be a great relief, at the moment we have to constantly press the button to exclude the mention
Editing guild settings and welcome screen and managing guild template, integrations and widget are all ...
Hi, this repository is for bug reports and feature requests for the API, bots, and application commands. Because this is a general product client feature request I would suggest making the request at https://feedback.discord.com/. Thanks
Hi, this repository is for bug reports and feature requests for the API, bots, and application commands. Because this is a general product client feature request I would suggest making the request at https://feedback.discord.com/. Thanks
since editing an management of the guild isn't terribly helpful for someone who doesn't already know what that means, I feel that something more descriptive would be more beneficial. Unless there is an issue with formatting, is there a good reason I'm missing for shortening the description?
There could be a section describing what each extended permissions do (by that i mean the ones that give access to a lot of things, like manage server) so the table doesn't become too big
Normal users and bots can send stickers that are in the current guild by sending the sticker_ids field. However, webhooks cannot send stickers, as the Execute Webhook endpoint does not have a sticker_ids field. This seems like an oversight since sticker_ids and message_reference are the only fields present in the Create Message endpoint but not the Execute Webhook endpoint, and there doesn't seem to be a reason to explicitly block webhooks from sending stickers. Webhooks are often use...
Description
I have been working on a bot that can suppress embeds for messages with specific URL's. An intermittent issue that I have been running into has been a message with a suppressed embed showing that embed anyway. This seems to be happening when the call to suppress embeds resolves before the server can discover what it would embed.
Steps to Reproduce
Create a bot that will immediately suppress the embeds of a message. With discord.js, it'd be something like
im...
@Suspense4615 What if it were changed to Allows managing invites, settings, welcome screen, template, integrations (bots, webhooks, and app integrations), and the widget of a guild? Then its about the same length as the description in the moderate members permission. It seems like getting up to three lines isn't a huge deal, and the added clarity would be a big improvement, without having to create a new section.
Alternatively, if we used @PlavorSeol 's suggestion from above, (quoted below) and had each of his categories link to the relevant endpoint information, then that would shorten things and ensure detailed descriptions
He suggested we change it to Allows deleting invites, editing guild settings and welcome screen and managing guild template, integrations and widget
Editing guild settings and [welcome screen](https://d...
Nested/collapsible autocomplete - (top level > subcommand groups > subcommands). This will clean up the commands menu significantly
What is the vision for this? A sort of ui improvement that allows slash command groups to be collapsed in the commands menu? What does "Nested/collapsible autocomplete" mean..?
if you just scroll up it turns off auto scrolling
Don't know if you've ever experienced this, but I find when a chat is very active and I scroll up to stop chat it jumps around a ton, especially when you're near the bottom
This is not taking upcoming features into account, while it fits with 3 lines now, Discord might add several features tied to that permission in the future. And I don't think adding a few lines once every now and then is sustainable on the long run
I think it would only display the top commands, then once you selected one it would display what's nested (subcommand groups then subcommands, or both at once, not sure about that)
Is multiline input not in the list anymore?
Description
The argument list for voice channels you can pass as a parameter for a slash option of type 7 which is CHANNELS with the channel_types flag set to 2 (Voice channels) should be tied to VIEW_CHANNEL permission.
Like for channel_types flag 0(GUILD_TEXT).
However for voice channels if you miss CONNECT permission but still have VIEW_CHANNEL the channel does not appear in the argument list.
Steps to Reproduce
Register a slash command with an option of type 7 and c...
If the owner times out someone with ADMINISTRATOR, that might actually be left out intentionally.
This is not a bug. Event authorisation on Discord happens according to the permissions at the time the request is sent. Hence you cannot undo timeout by granting ADMINISTRATOR. You need to undo the timeout itself.
it looks like it's been removed, yeah. hopefully that doesn't mean that they're getting rid of it entirely- trying to write long descriptions for things using slash commands is nigh impossible right now without multi-line inputs :/
Description
Editing interaction message works for content but doesn't work for embeds
Steps to Reproduce
- Create interaction response with embeds โ Get it message and channel ID from API response
- Edit embeds message
Expected Behavior
Edited embeds
Current Behavior
Embeds not edited, nothing happens
Screenshots/Videos

Client and System ...
Possession of a thread
This will allow us to create a thread and give ownership to someone who is inside it
Why is this needed?
There are so many thread bots now, such as when you send a message, they create a thread for you, but you can't archive or delete it because the bot created it. So, if you do this, the bot can give the ownership of the thread to someone who has joined the thread, and this member will have permission to archive / delete it.
From my own experience, this'd help a lot.
I'm part of a Discord server where we help people with programming issues. To improve the UX of helpers and askers we want to switch to threads. The user will receive a form (modal, when released), and based of the information the user gives we'll create a thread.
This allows us to add tags to the title, and a more. But unfortunately this results in the bot being the owner of the thread, so we've to add a command for the asker to archive/delet...
Description
The Use external stickers permission is being checked only when you open the sticker menu, but the API isn't limiting you on that.
Steps to Reproduce
Pick a frequently used sticker from another server or type a sticker's name in chat and picking it successfully sends it even without the permission.
Expected Behavior
Receive a Missing Permissions REST error or not be able to pick stickers from different servers
Current Behavior
The Message successfully sends
...
The embed loads after some time, not immediately, try suppressing in the message update event
While that does work (and is the current work-around)
client
.on('messageUpdate', (oldMessage, newMessage) => {
if (
newMessage.embeds.length > 0 &&
newMessage.flags.has(MessageFlags.FLAGS.SUPPRESS_EMBEDS)
) {
newMessage.suppressEmbeds().catch(() => {});
}
})
it is not behavior I believe I should depend upon. It does not seem unreasonable to me that a message with the SUPPRESS_EMBEDS flag should be without embeds.
Can repro with Android 113.4 Beta (113104).
Works on desktop though
I'm also not using the HTTP method for my commands
Alternatively there may be a field to restrict USER option type to members in the server (guild), like there is channel_types for CHANNEL and min_value and max_value for INTEGER and NUMBER.
So basically something like this?
| Field | Type | Description |
|---|---|---|
| members_in_guild_only? | boolean | if the option is a USER type, only members in the guild are allowed |
Allowing the thread owner transfer ownership of their own thread, and users with Manage Threads (MANAGE_THREADS) to set arbitrary ownership of all threads would be good.
Just now as long as you have 1 mutual with a user you can send then private messages, this discussion purposes that a restricted property be added to guilds, true by default but the ability to set it to false. This would exclude the guild from being used when the API is calculating if a message can be sent. This would be handy for bots that detect raids, as everyone knows spam/phishing has been majorly on the rise recently, allowing bots to temporarily restrict dms while they work throu...
As for concerns on how this might affect other bots on the server attempting to message users legitimately, a new error code could be added, indiciting in this specific circumstance why the message could not be delivered, this would allow for bots to wait for a guild update event and once the restricted property has been set back to false, they can continue on as normal.
The new error code would also double as a way for clients to render a new message from clyde, indicating why they have a mutual but cannot message the user, as i'm sure this could bring up a lot of confusion.
Could even make it a new permission like โcan start DMsโ. That way you could, for example, allow mods/admins to message members, but not others.
I used to moderate a mental health community, and a permission like this wouldโve made our lives much, much easier, as we wouldโve loved to restrict members from opening DMs with others due to the vulnerable state most people in the server were in.
This would be handy for bots that detect raids
It indeed would.
As for concerns on how this might affect other bots on the server attempting to message users legitimately
I think this should be bypassable by bot accounts, if a bot made it into your server and it started mass dming people, you have a bigger problem (related to the person that added it in the first place and the dangerous perms they have to do bigger damage)
The new error code would also double as a way for cl...
Bots bypassing it would eliminate alot of the potential side affects of this implementation. ๐
This PR clarifies the autocomplete documentation to mention already-filled options being sent in autocomplete interactions, and that required options might not be present in this type of interaction since the user will not always have filled them yet
It also implies the usefulness of the focused field, which might otherwise seem useless if the focused option is always the only one being sent
This behavior was originally mentioned in [devsnek's notion](https://devsnek.notion.site/dev...
Description
The official discord developer documents provides https://discord.gg/discord-developers as the official support server for the discord API.
But I always get banned, the moderators keep saying I'm "rye" and they ban me.
At least tell me who is rye and why do you think I am him?
I know this is not the right place to say this, but if I write in mod, I get a ban from its server and block, an...
Hey there, I got this random error too
Hit a 429 while executing a request.
Global : false
Method : get
Path : /gateway/bot
Route : /gateway/bot
Limit : Infinity
Timeout : 500ms
Sublimit: 498000ms
this GitHub issue is old and not related to the prigken you're having; it looks like your ip got blocked, which happens often for shared hosting services such as replit where many bots share the same ip
I think introducing new permission instead of making it guild property is more flexible, since that would allow choosing which bots/mods should be able to bypass (although admins will always be allowed), as suggested in the above comment.
A permission ontop of the property, otherwise it gets spammy with the amount of requests your having to make just to block some userbots from messaging
I still don't see the point. User-side privacy settings will go nowhere, you should still be able to disable DM in classic way.
With the introduction of new permission, it will effectively require both you having SEND_DIRECT_MESSAGES permission and the recipient opening the DM, in order to be recognized as "mutual".
But both having restricted in guild object and SEND_DIRECT_MESSAGES permission bit doesn't seem to make sense, since the permission itself is meant to restrict DMs...
If only the permission existed, and you wanted to restrict your the dms sent via your server, youd have to filter through every single role, instead you make restricted > true, and your mods/bots already have the send direct messages permission anyway so no further action is needed there.
As for concerns on how this might affect other bots on the server attempting to message users legitimately, a new error code could be added, indiciting in this specific circumstance why the message could not be delivered, this would allow for bots to wait for a guild update event and once the restricted property has been set back to false, they can continue on as normal.
So you are basically saying something like this (pseudocode), right?
if ((guild.restricted || getMember(user).permissions.has('SEND_DIRECT_MESSAGES')) && targetUser.DMAllowed[guild.id]) {
// Yes, go ahead and deliver this message.
}
else {
// No, send an error via Clyde.
}
I also think this would be a great idea. Sure, you could add a single if statement to validate the option's value after the user sends it, but like @RedDaedalus said, it's objectively better UX to have client-side validation. The end user will have to run the command again with the appropriate value, which will be more frustrating and is objectively a lesser user experience than having it do a client-side validation.
I also think this would be a great idea. Sure, you could add a single if statement to validate the option's value after the user sends it, but like @RedDaedalus said, it's objectively better UX to have client-side validation. The end user will have to run the command again with the appropriate value, which will be more frustrating and is objectively a lesser user experience than having it do a client-side validation.
I also think this would be a great idea. Sure, you could add a single if statement to validate the option's value after the user sends it, but like @RedDaedalus said, it's objectively better UX to have client-side validation. The end user will have to run the command again with the appropriate value, which will be more frustrating and is objectively a lesser user experience than having it do a client-side validation.
I'm fairly certain the idea behind the default parameter (that currently does nothing) was to support a similar flow. E.g. user did not select a subcommand, so use the default.
Since actually implementing this requires a redesign of the UI first (which requires whatever database rework that keeps being mentioned) maybe there is even a chance to add a display boolean or similar to the default subcommand to hide that subcommands name in command window.
Regarding the above, I initially d...
Role icons cannot be animated.
Role icons cannot be animated.
desperately need this for variadic choice parameters - the other options are:
- require users to somehow know the full choice names (not really feasible)
- allowing aliases (very far from ideal implementation wise - especially if you need a lot of aliases (4-5 per choice) to make the command usable)
Note that users will get the "may open an application on your computer" warning after clicking the link button when using the discord:// protocol. I understand this is for security reasons (there's no way to guarantee discord:// will link to the discord app), but it's a bit unfortunate that the user can see the URL filled with scary numbers unlike in Chrome for example which only opens a prompt.
Also, for others in the future who stumbled upon this question, the URI for linking to a channe...
๐ this repo is for API issues and feature discussion, and is not an appropriate avenue for ban appeals or discord account questions. Please open a ticket with our T&S team by going to https://support.discord.com/hc/en-us
๐ this repo is for API issues and feature discussion, and is not an appropriate avenue for ban appeals or discord account questions. Please open a ticket with our T&S team by going to https://support.discord.com/hc/en-us
I've already sent a request, but I received a response like "This server is not managed by us, please write to its moderators"
We received gateway events where the creator_id field was missing in the Guild Scheduled Event Structure, but it is documented to be nullable, not optional.
This PR documents it as optional and nullable.
This might be related to https://github.com/discord/discord-api-docs/issues/4418.
I'd try again and mention that it's the official Discord-owned developer server
I'd try again and mention that it's the official Discord-owned developer server
Okay, I'll send a request to T&S discord again, thanks
Description
The voice_states property in the guild object contains channel IDs that could not be found in the channels property, which has caused some libraries to behave unexpectedly.
One guild in particular that this was happening for back on December 30th was 835244823857332245. Upon restarting the bot to receive an updated guild object, this guild in particular consistently failed due to the mismatching information.
Steps to Reproduce
- Connect to the gateway
- Reques...
CNR current-day on any of the guilds within my scope, but the bug was very much present before on a specific guild.
I am wondering if it had something to do with a corrupted guild in particular, that might have been fixed upon a restart?
Hi everyone,
Weโre making some changes to the Community Resources section of the documentation. The goal is to better serve its intended audience: people who are new to the Discord API and are looking for a way to get started.
Hereโs whatโs changing:
- Weโre tightening the standard for inclusion in the libraries list. A library is included if:
- It's used by at least 1,000 active bots.
- It supports bot features that have been generally available for over a year.
- The list wi...
As we know, there are some applications such as PreMiD and Discord Presence Extension, โPlaying on YouTube "sounds a little weird, doesn't it?
So my suggestion is to add 2 more Activity Types
EDITINGVIEWING
Are there any that are currently listed at risk of being removed?
If so, can a list be provided, or the maintainers be contacted?
Is there going to be any set system for transparency around why a lib doesn't qualify for inclusion or is this just going to be left up to the imagination or badgering staff about it?
Also are lib maintainers going to be able to get stats on their lib's usage in the future now that discord seems to be using
to expand on this: can these stats be released publicly?
What are individual bot developers going to need to do to ensure that they accurately report the libraries that they use?
As long as the library correctly includes the user agent, and the bot developer hasn't overwritten it, then the bot developers don't need to do anything.
This seems like a bad move. This is biased against:
- libraries in exotic languages (does either Nim library have even close to that many users? But I would argue at least one should remain for the occasional Nim user)
- rest-only libraries, like RestCord
- new libraries. Unfortunately, discovery for these new libraries is terrible and it's silly to delude ourselves that getting a library on the community resources page doesn't get some attention.
Additionally, even the metric is ill-defi...
What's your use case here?
@lsdimagine I believe I've already listed a few use cases in the original post but I can go into even further detail.
- A scenario where you want to edit interaction messages at a later time when the message is referenced later (for example, detecting someone replied to an interaction response or mentioned it's message ID, and then updating the message)
- In order to do this we need to store the message ID of the interaction when it is sent along wit...
Yes, the list will be shorter. We'll publish the changes later this week
If library maintainers are wondering about the status of their library, they are welcome to ask us directly. We can't release platform usage stats publicly.
We also identify gateway connections by their identify properties https://discord.com/developers/docs/topics/gateway#identify-identify-connection-properties
You say "It is no longer necessary to PR new libraries.". Currently a lot of pull requests are often reviewed by community members both on the implementation of ratelimiting and also the library maintainer's mangement of the project community. How will that process happen transparently?
I believe if the goal is to drive visibility to the "best" libraries only including popular ones just gives the opposite result. Now, instead of a beautiful diverse ecosystem of libraries and bots made with them Discord bots would become reliant on the "big" libraries and maintainers may feel like they no longer get the ability to just give up on the library.
What if something like Discord.py happens again? It would take up to a quarter to get replaced and many bots on the platform would ...
Here are my thoughts:
- This list isn't the only source of truth for finding a library. It's meant to be a nice clean place for newbies to start out, not an exhaustive list of languages. Someone looking for a library in an exotic language should Google for it.
- We already record user-agent, but yes we'll document a way to identify interactions libraries.
- Overall, the outbound traffic from community resources is very low. Whether a library appears on the list or not has no bearing on ...
Discore staff will review libraries and give feedback on rate limiting implementations directly to authors if necessary.
so it's not going to be transparent then?
I have just seen typpos response regarding outbound traffic from the resources page, but my concern about an unhealthy dependency on the developers of "large" libraries still stays. At this time nothing keeps a developer from deciding they've had enough and departing, with more users being diverted towards their library they now have to up their support resources as well as may develop a "I can't stop because people will still need me for so long" mentality.
It's my opinion that these ment...
This makes a bit more sense as I thought you were only considering gateway identification for "active" bots. RE: outbound traffic, I was mainly focusing on the effects of having an open PR (occasionally with controversy), but the statistic is interesting. However, I feel like your thoughts on the community resources list are different than what they are currently portrayed to be.
Currently, they state:
The Discord team curates the following list of officially vetted libraries that confo...
There would should never be such as finite number to get added to the list. malicious developers would find such a way to manipulate the numbers. this should have a similarity structure to the Partnered Server Owners application. partner program has issues on it own but each application has a secret magic to it in order to get approved. such requirements are not shared publicly beyond the Community Team hence why the partnered servers are very high quality. the same should be done her...
...no, I don't think they should be just denying most libraries without providing any explanation
Just a doubt, since it looks like the User-Agent header is a key part of recognising what library a bot uses when doing REST requests, does the specified version of the library matter?
For example in Discord.js, the latest stable version (v13) will show the version as v13 (with a base UA that similar to DiscordBot (https://discord.js.org, 13.6.0) Node.js/v16.13.1), however,...
It advertises or includes self-botting APIs
Do we have to completely remove them or can we just put a warning that it is a user account endpoint and should not be used
...no, I don't think they should be just denying most libraries without providing any explanation
The partner program got issues on it own as I said. at least the servers in the partnered program are high quality. there shall be some small not publicly shared requirements on top of the 1 thousands active bots requirement is my solution.
I'm still thinking about this after a conversation had with some friends in a private space. Aside from the concerns about potentially unhealthy dependency on library developers, I believe that if the goal is to highlight libraries that Discord knows "works" or has the most recent features, the community should still have a say in highlighting the most interesting and diverse options.
It's not the right mindset to see the list as a "these are the only options", but to give prospective or a...
Is the 1000 active bots metric a requirement, or more of a "strong suggestion"?
By that I mean would a library with several hundred (but not 1000+) active bots, doesn't break the code of conduct, and has good code quality, be able to appear on the community resources page?
It would be nice to give a "spotlight" (for lack of better words) to well maintained libraries that haven't reached this 1000 bot target, as a pure metrics driven approach could unintentionally encourage unwanted beha...
It advertises or includes self-botting APIs
Every API can be used for that case, what dictates whether it is or is not? Advertised to be specifically for self-botting? Mostly used for self-botting? API is oriented for self-botting (like including specific functions โ let's say spam dm function โ that are popularly used for that case)?
If a maintainer does not want their library to be listed, they can request it to not be listed
Endpoints that only user accounts are supposed to use is what's meant by self-bottling APIs
Makes sense, this should be more clear.
What counts as a library "support[ing] bot features" by Discord's standards? Let's say a library provides an interface for voice send functionality and its ecosystem has separate libraries which implement this interface to provide voice send functionality but the library itself does not include a standard implementation, would this count?
Not sure what you mean here. The criteria for inclusion are in the original post. Discord usage stats will always be private, and our communications with library developers about their libraries are private too. Devs can share feedback on their rate limit implementations if they want.
Description
Recently, the Create Interaction Response endpoint started blocking valid requests for responses with files and no other message fields.
Steps to Reproduce
Respond to an interaction with attached files, the type field, and either no data field or an empty data object.
Expected Behavior
If files are included in the response, then it successfully sends the message as it did earlier, without needing to include the data field.
Current Behavior
If the res...
Based on current usage, the Community Resources section has no bearing on how diverse/not diverse the Discord ecosystem is or whether a library is successful. It is used by a small number of new arrivals and most libraries currently on the list do not receive meaningful traffic.
No longer to library artists get to develop libraries for fun or educational purposes and some may feel obligated to purely because of the need developed upon them, which isn't good for an open source maintain...
oops, none of your replies loaded for me here. Apologies if I missed some context
Unfortunately that approach will cause people to claim bias, debate inclusions, etc. Short of removing the entire section, the most objective approach is to come up with is clear, public criteria.
Re: large libraries vs small libraries, we have found that the Community Resources list has almost no influence on whether a library grows or not. Most people find their libraries elsewhere (I'm guessing through tutorials and package managers). For this reason it's best to keep the criteria si...
Is it safe to assume that the active bots metric will be assumed by the custom User-Agent header passed by libraries in HTTP requests, as well as the Gateway identifiers? Additionally, will 1,000 active bots be alive connections, just bots that haven't been offline for X amount of time?
@Suspense4615 Can you show me an example of what you think would work best?
Honestly, I didn't agree with "It's used by at least 1,000 active bots". It makes a new library more far pointless as adopting a library for new people without knowing it's existence. Some of newbies also take look at community driven libraries and without notified them about the creation, how it suppose to grow about "1000+ bots"? Yes, except the creator and some sort of user until advertise to other to use that library, but it's not reliable and will take a long time to grow in that point.
...
@advaith1 we (or I) think new first time bot devs don't know about this fact, and it's too late when this happens, for some people's bots, once they kick their bot out from fake servers, they can continue, but for some, their bot gets blacklisted because it was added to fake servers a lot. Overall, this idea should get implemented so devs don't need to worry once they reach verification. Honestly it does feels bad when you tried to so hard to get to 75 servers, but then you will find out 10 o...
Also discord team should help and support discord bot devs, instead of pointing issues their bot got one by one.
Vร o BE 2565 thg 2 8, Th 3 lรบc 02:23 Ian Mitchell @.***>
ฤรฃ viแบฟt:
I'd try again and mention that it's the official Discord-owned developer
serverโ
Reply to this email directly, view it on GitHub
https://github.com/discord/discord-api-docs/issues/4451#issuecomment-1031831371,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AXPQ7355DDFSILHXGHCKJ7LU2AL3VANCNFSM5NV5TTTA
.
You are receiving this because you are subscribed to this thread.Message
ID:...
Vร o BE 2565 thg 2 8, Th 3 lรบc 02:26 Angelo II @.***> ฤรฃ
viแบฟt:
I'd try again and mention that it's the official Discord-owned developer
serverOkay, I'll send a request to T&S discord again, thanks
โ
Reply to this email directly, view it on GitHub
https://github.com/discord/discord-api-docs/issues/4451#issuecomment-1031833689,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AXPQ73ZJ7TR7TU3Y7ALCE2TU2AMEZANCNFSM5NV5TTTA
.
You are receiving this...
@Suspense4615 Can you show me an example of what you think would work best?
something like this
this is basically going to make the list just five entries, for JavaScript, python, rust and C#.
any less Popular language which would struggle to amass a thousand bots is basically just now not important enough for exposure.
Why is it even a thing?
Account botting was already forbidden for a long time and eris did not wanted to adapt to this change, even after multiply requests from the community....
so it's not going to be transparent then?
you cant expect every thing to be transparent, atleast not the security part. To be fair, most of the open source projects ask people to inform the maintainers about the security via email or any similar private service (eg: DMs on discord). Also being transparent may sometimes provide outdated info, like if there was a page about being transparent and it doesnt gets updated, some good/new lib may not be used by a new dev just because the outdate...
We make it clear that user account is no longer supported with Eris and there have been no updates on user account features since the relevant ToS change. Also I don't know what statistics you're referencing from but there's only been around 10 discussions about removing user account features since 2018 of which only like 2-3 of them have been actual requests to remove them.
You're welcome to join our support server if you want to discuss this further
This idea seems to be looking more of a app discovery/ server discovery requirement:
Those two discoveries seems to be promoting popular servers, but not small and new servers.
Same goes with the library: popular gets more popular, new gets no attention.
I would like to suggest changes:
Instead of having a requirement of 1000 active bots, we can have requirements like:
- having atleast 100 stars (most open source helping projects take this as an requirement, like crowdin, open collective...
"No updates on user account", I agree with this that Eris doesn't officially support user bot. However Eris still contains some sort of user bot features which can be easily invoke, and I feels like this Eris shall remove all sort of user account endpoints and refactor, depends on abal... does he want to do it..
Returns a partial [invite](#DOCS_RESOURCES_INVITE/invite-object) object for guilds with that feature enabled. Requires the `MANAGE_GUILD` permission. The `code` will be null if a vanity url for the guild is not set or if the guild has no public text channels.```
Confused what your review means here, just do a code suggestion next time
6807a96 who the hell uses double quotes - devsnek
shouldn't that type be an integer? like the buttons

12fe4e1 Fix incorrect note on role icons CDN endpoint. ... - nerdguyahmad
c4fbd55 clarify the focused option might not be alone (... - Suspense4615
this one seems fixed already
Hi, thank you for the PR. For the time being we would like to keep these definitions vague. What permissions can do is ever changing with the addition of new APIs and product features, and documenting the actions explicitly on this list would make it quite easy for something to be left out in the future or missed, and thus become out of date. We recognize that this is an issue in this table and may explore if there is a better way to document this without having this problem in the future.
Hi, this is actually not intended behavior and is a bug. We know about it but it's not a high priority. Thank you for the PR though
Thanks for the report! I think in this case there may have been some confusion about the bug, since it is a weird interplay between client and API. But in this case, yeah, we would consider this a client bug and ask you to file a ticket with support (or bump the existing ticket you mentioned before). I've reached out to our support team to clarify and let them know we directed you back to them as well
3861563 Document VIEW_CHANNEL needed for joining voice ... - yonilerner
3ed9045 creator_id is optional (#4454) - Lukellmann
when a channel gets deleted we do remove voice states. what likely happened in this case is there was an internal error during channel deletion, and that deletion did not propagate fully. since discord operates in an eventually consistent way, it eventually gets repaired when guilds reload.
3891389 Document external asset URLs (#4371) - spotlightishere
We do not want to spend time "curating" an exhaustive list of libraries and languages. That text will change.
Library dev roles are assigned separately. We're just focused on fixing community resources right now.
This isn't documented in the table below
Should this also list text inputs?
Can you disable test inputs?
How long can this value be?
What range can you set these to? 1-4000?
Thanks, we've let the appropriate team know
This is an edge case among a few other re. admin permissions and timeouts that we didn't address for the initial launch. It is in our backlog to clean up some of these confusing admin permissions + timeout interactions so we might address this during that cleanup. Closing this for now since we don't have a timeline for this cleanup but will make this specific interaction is added to the list. Thanks for reporting!
Your implementation may be incorrect. READY payloads may never arrive or may be delayed during service disruptions. An application should not wait for READY to begin heartbeating. Once you receive a Gateway HELLO opcode, your application should begin heartbeating on the requested interval.
If you are still seeing issues after fixing your heartbeat implementation, you may not be implementing zlib as described by the ex...
How many can you configure? 1-10?
Community Resources doesn't help bots grow. It's a place for people to view resources that are commonly used by the community.
Unfortunately, many of these criteria are highly gameable/subjective and would lead to ambiguous reasoning and outcomes similar to what we have today.
Why is this optional? The notion site doesn't state it is

@hemu I think allowing users with ADMINISTRATOR to be timed out by the guild owners might be useful.
Description
Hello,
We've observed that some of our wiki articles, when shared via Discord, generate a link preview that seemingly ignores the description contained in metatags in the article HTML, and generates it via some other mechanism. This can result in unwanted artifacts, e.g. image captions, being included in the description even though the description served via metatags doesn't include that.
The link previews of these articles behave as expected (i.e. use the description f...
Unfortunately, many of these criteria are highly gameable/subjective and would lead to ambiguous reasoning and outcomes similar to what we have today.
what exactly is the issue youre trying to prevent?
As a user, i dont see a problem with the page and the system as it is now, and it's 99% community maintained and policed anyhow?
What have i missed? I'm concerned the harm this will do to smaller projects in esoteric languages. There's no way for example any C++, nim, julia, etc lib coul...
Hi @InvalidLenni,
Your observation is correct. Unfortunately, I have not been able to find any documentation that describes the metatag(s) that Discord's link preview fetcher considers when generating the embed. However, it seems reasonable to assume it considers either the twitter:* family, or the og:* family, perhaps both in some order of precedence.
In fact, the description within twitter:description appears to be honored for most pages, such as <https://starwars.fandom.com/wik...
We detect mediawiki pages and query their api for "better" descriptions, as they usually don't have very good og tags (for example, check out the og description of harry potter on the harrypotter.fandom.com page). You can see the information your wiki is returning here: https://escapefromtarkov.fandom.com/api.php?action=query&prop=extracts&format=json&exintro=&explaintext=&titles=Insurance.
Hi @devsnek ,
Thanks for the quick response and clarification, this is great.
We do generate appropriate metatags for every wiki page on our platform but as you correctly observed the quality of those may unfortunately vary due to some underlying limitations.
Thanks again for the explanation!
Did you all write a custom OpenGraph plugin for mediawiki, or how does OpenGraph data propagate back to the DOM? We could maybe improve the functionality to rely on the API as a fallback mechanism when OpenGraph description is false-y. I'm curious though if other MediaWikis serve static OpenGraph descriptions that we wouldn't want to pick up, though.
Hey @night ,
Yeah, MediaWiki in itself doesn't generate OG metadata for its articles. Some relevant functionality is provided by extensions such as OpenGraphMeta[1] and Description[2] that generate a description semi-automatically, but it doesn't fit all of our needs, so we use a custom solution instead. Wikis may or may not have these extensions installed; notably, Wikimedia wikis do not have a description generation mechanism setup yet due to performance and consistency concerns around t...
Okay, so one year later I am back with the same issue...
[discord/discord-api-docs] Issue opened: #4462 Member Timeouts do not remove guild\-wide permissions
Description
Per https://discord.com/developers/docs/topics/permissions#permissions-for-timed-out-members,
Timed out members will temporarily lose all permissions except VIEW_CHANNEL and READ_MESSAGE_HISTORY. Owners and admin users with ADMINISTRATOR permissions are exempt.
However, members still continue to have at all guild wide permissions, which does not agree with the above. My bot is still able to use endpoints that require MANAGE_GUILD, VIEW_AUDIT_LOG, VIEW_GUILD_INSIGHTS, ...
I'm trying to write an application that can retroactively act as a leaderboard for which messages have the most emojis. I think it is fully possible to create a bot that listens and keeps track of all cached messages, but un-cached messages are a problem.
Getting old messages through the API is limited at 500 messages every 5s, and in a server with multiple channels that have 50,000+ messages, it just doesn't seem realistic to include messages pre-bot in the rankings.
I'm hoping to request...
Is there a max length regardless if one is set? It would be pretty bad if someone could send huge amounts of text
Cool. So include that in the documentation.
removing pycord since the maintainer @Lulalaby openly violates the terms by using client mods and experiments.
the new community resources guidelines say that the maintainers need to follow the tos which is something @Lulalaby does not do.
b268fe7 document attachment application command type (#... - amitojsingh366
Thanks for doing this, much appreciated!
Thanks for doing this, much appreciated!
My pleasure โบ๏ธ
Alright, thanks for clarifying
This was probably accidentally left out in https://github.com/discord/discord-api-docs/pull/4459.
bc4cfa8 Add Text Input to Component Types table (#4465) - apacheli
Description
I found bug on https://discord.com/developers/docs/resources/webhook#webhook-resource
Delete Webhook Message % DELETE /webhooks/{webhook.id#DOCS_RESOURCES_WEBHOOK/webhook-object}/{webhook.token#DOCS_RESOURCES_WEBHOOK/webhook-object}/messages/{message.id#DOCS_RESOURCES_CHANNEL/message-object}
pic-1
Steps to Reproduce
Go to https://discord.com/developers/docs/resources/webhook#webhook-resource, at the bottom
Expected Behavior
Fix like this pic-2
Current...
Iโm sorry for my bad english :(
Description
value is incorrect when there's a space at the end of the name.
Steps to Reproduce
In the auto-complete payload for a choice with a name, put a space at the end. The returned result's value is the name instead of the value.
Payload:
{'type': 8, 'data': {'choices': [{'name': 'Roblox (1) ', 'value': 'roblox-id-1'}]}} (SPACE AFTER Roblox (1))
Response:
[{'value': 'Roblox (1)', 'type': 3, 'name': 'roblox_name'}]
Expected Behavior
value should be ...
I'm not really talking about bots growing, talking about adopting and growth of that library.
Sorry, I mistyped. Community Resources doesn't help libraries grow. It's a place for people to view resources that are commonly used by the community.
Thank you for taking charge of this, it's definitely welcome.
Library dev roles are assigned separately.
Can you comment on the requirements for this.
Community Resources doesn't help libraries grow. It's a place for people to view resources that are commonly used by the community.
The case in which the result of this tends away from the intent is when none of the popular libraries meet the QC criteria, but a library that does pass the QC is held back by user count. It results...
I think the somewhat sad reality is that this is what they want. The scope of the Community Resources is changing to be only the very most commonly used libraries - so that newer people who view the docs looking for a library picks up one of the big libraries with a lot of use and support.
It's not meant to be an exhaustive list, rather, it's now meant to recommend the bigger libraries that one can get started in easily.
Question:
It's used by at least 1,000 active bots.
How do you count them? Gateway, User-Agent, or Downloads on package manager?
@typpo this PR is still valid and awaiting merging, as no issues have been raised outside of competing library authors disagreeing with how features were implemented (putting aside that our implementation is fully compliant with the developer docs Discord has laid out and our own personal findings that our approach is more accurate in real world testing)
If we could get this re-opened and merged I would appreciate that. If there is some issue with the library which doesn't respect Discord'...
@typpo this PR is still valid and awaiting merging, as no issues have been raised outside of competing library authors disagreeing with how features were implemented (putting aside that our implementation is fully compliant with the developer docs Discord has laid out and our own personal findings that our approach is more accurate in real world testing)
If we could get this re-opened and merged I would appreciate that. If there is some issue with the library which doesn't respect Di...
That's on me for dealing with this before reading the other items in my inbox, thanks
Description
When I have a min_value set on a Text input while also not requiring that field, the modal refuses to be submitted unless the box meets the set min_value requirement.
Steps to Reproduce
- Respond to an incoming interaction with the following payload:
{
"type": 9,
"data": {
"components": [
{
"type": 1,
"components": [
{
"type": 4,
"custom_id": "notrequired",
"style": 1,
...
It has an incorrect or incomplete rate limit implementation
What counts as incorrect rate limit implementation? For example, is it considered improper to statically tune the limiter to always use the worst case limits? After all, not all bots may need to use the excess rates that can be utilised by having a dynamic rate limiting implementation.
Being dynamic, technically the worst case limit would be a ratelimit of 0/โ. Would any library being used by 1000+ bots really want to code this in? ๐คจ
This comparison makes little sense, nor does it seem worthwhile semantically arguing the basis for incorrect rate limit implementation. Case in point, in order to be added to the community resources, a library will need to follow the official documentation pertaining to it.
remove duplicate "label" field in Component Object Structure table; add "Text Inputs" as valid type for existing "label" field; update "label" field to reflect both text input and buttons
Description
Using the attachment option on a slash command command causes the Medua Selector to keeps popping everytime we closes any UIs.
Steps to Reproduce
- Type any slash command with a application command option type to 11
- Press the attachment option
- Clear the chat input or send the interaction
- Go to any layout (Channel pins/settings/thread), search messages UI or modal UI...
- Back out of that UI
Expected Behavior
The UI should simply closes.
Current Beha...
Question:
It's used by at least 1,000 active bots.
How do you count them? Gateway, User-Agent, or Downloads on package manager?
you can't use package manager downloads - some languages don't have a unified standard package manager like python has pip and node has npm. take C and C++ for example...
Question:
It's used by at least 1,000 active bots.
How do you count them? Gateway, User-Agent, or Downloads on package manager?
you can't use package manager downloads - some languages don't have a unified standard package manager like python has pip and node has npm. take C and C++ for example...
And conan package manager for c++ isn't used by everyone
I think the libraries should be checked on whether they follow discord api guidelines, tos, and whether they have active maintenance/development on them, while having a support server can greatly help, still GitHub discussions can help people out anyways.
Unfortunately, many of these criteria are highly gameable/subjective and would lead to ambiguous reasoning and outcomes similar to what we have today.
You're the developers who make these topics a gamified version and battle. Like there's literally no problem with anyone with the current version of how libraries are listed. Everyone can agree here that everything discord is upto now is becoming a listing battle here now, bots, servers, and now libraries. Discord was meant to be a place w...
I personally use whatever library suits me, with the language I use as long as it's personally used enough in order to get help, just cause it's listed doesn't mean it's the only choice.
There are plenty of different options, just follow tos.
That's what I do
Since this repository primarily consists of Markdown files, it would be nice to have them show up in the language bar displayed by GitHub. This PR implements this:

I feel like the recently released modals are going to be a new ground for scams, nothing really stops bot developers from doing something like this:

There isn't realistically much that could be done to help make it more clear that those are inputs for a bot, considering there's a big yellow warning at the top specifying this.
The only improvement I feel could be made is to c...
I agree with this.
Apart from the true error not showing up/handled in the client for the user to know whats wrong,
enforcing a minimum char requirement on a not required field doesnt make much sense.
However enforcing it once the field has content is wanted.
Most people will disagree that 4000 limit isn't enough, however, in some cases it'd be helpful to get a greater character limit, instead of looking like a monkey using multiple boxes to get larger inputs
My use case is that people will submit feedback/bug reports which can get really extensive, while I am a third party application to this game it is an approved one by the game makers and I was thinking of using modals as a way of getting feedback and bug reports with reproduction steps.
...
I think increasing the limit should work, I would just need to see how it works on discord android(stable), as it lacks it.
๐ค it should work, but Idk yet, as it doesn't render.
Its become a common question for people to ask how do they create an invite using target type and target application, always having to point them to a 3rd party resource when target type and application are documented themselves doesnt make much sense, this pr adds only the publicly released embedded applications.
This does not seem appropriate to document here.
It would be useful if text inputs had a code style that enables a monospaced font and makes tab indent instead of opening keyboard nav, like the UI for writing a codeblock in the chat box. A language field to set for syntax highlighting would be ideal.
At WidgetBot we're using a text input for modifying custom CSS, but the plain text input is not great for it; with our old text command we have users type a ```css codeblock which has a great editing experience on desktop.
mockup:
Like there's literally no problem with anyone with the current version of how libraries are listed.
No, there is a problem. There's no other type of PRs I see that get as heated as PRs touching the Community Libraries. Look at #3725, #4355, #3146, #3795 and #3732.
Requirements like these would also make it clear what objectively makes it to the list and what doesn't - they are now vetted, verified, and curated by Discord only. This way all other community drama is left out and the li...
706ae2f Add Attachments - IanMitchell
Closing this as i figured it out, invalid form body means the vanity contains a disallowed term, while 20020 might occur when a vanity is taken/currently blacklisted.
Public Stage Instances are deprecated (see here) so it makes sense that the stage_instance field in invites (and its type) should also be deprecated.
it seems some attachment types arent supported for slash commands, will that be fixed in a later update?
multiline input was removed from the list but it will still be added; it's still pending on slate 2
multiline input was removed from the list but it will still be added; it's still pending on slate 2
good to hear! was a little worried for a bit ๐
tried to send an attachment in a slash command with a .bin file and it failed, and i tried some other filetypes and only image filetypes worked from what i tested
didn't test video filetypes so those could work
can you explain?
tried to send an attachment in a slash command with a .bin file and it failed, and i tried some other filetypes and only image filetypes worked from what i tested
didn't test video filetypes so those could work
@gamer0mega if the "Use External Stickers" permission is off for a user+channel combination, then external stickers:
- appear greyed out inside the sticker picker
- don't appear in the
:sentinel autocomplete - don't appear via sticker suggestions (i.e., by typing a name of a sticker without the
:prefix) โ
in the video provided, the stickers look like they're not greyed out, and are appearing via sticker suggestions. Can you verify that in fact your user doesn't have the right pe...
@gamer0mega if the "Use External Stickers" permission is off for a user+channel combination, then external stickers:
- appear greyed out inside the sticker picker
- don't appear in the
:sentinel autocomplete- don't appear via sticker suggestions (i.e., by typing a name of a sticker without the
:prefix) โin the video provided, the stickers look like they're not greyed out, and are appearing via sticker suggestions. Can you verify that in fact your user doesn't have the ...
To confirm, if you're only in the one guild then you wouldn't be using an external sticker right? You're posting a sticker from the guild in question?
I have only the current server in the server list, which means I shouldn't have external sticker permissions
What @IanMitchell said - then there's no way for you to be sending external stickers. Check the description of the permission:

If you're not in any other servers, its impossible for the permission to apply to you, since there's no other server for you to be post...
Question:
It's used by at least 1,000 active bots.
How do you count them? Gateway, User-Agent, or Downloads on package manager?
you can't use package manager downloads - some languages don't have a unified standard package manager like python has pip and node has npm. take C and C++ for example...
And conan package manager for c++ isn't used by everyone
I don't think everyone uses conan, asking myself, nope.
Description
When prompting the user with a modal that requires text if there are just spaces provided the API allows it unlike in Slash Commands text option.
Steps to Reproduce
Create an Interaction Response with the MODAL type with a Text Input component.
Only provide spaces in the argument and submit.
Receive a MODAL_SUBMIT that has a value with just spaces.
Expected Behavior
The API shouldn't allow Text Inputs to just have spaces like Slash Commands arguments.
Curre...
Description
The documentation for bulk overwriting application commands says that it takes a 'list of application commands'. It's unclear what 'application commands' is referring to - in every other circumstance, it refers to the object which is returned from the server, but ...
I'm pretty sure this is intended behavior. This edge case could be fixed with bot-side validation (i.e. give the user an ephemeral error message citing the field) or, eventually, by something like #3510 or #3643.
I know the attachments feature have just came out, but, since we got modals, would be nice to have an attachments component โ where you can upload your own image and send it to the bot.
The way this component could be implemented is exclusivly in modals, otherwise it will cause problems with UX.
The component might look like that:

We've been told to remove user account features completely if anyone's wondering
For those who are new to the Discord developers community, the library mentioned by the parent comment is discord.py.
Discord.py no longer supports user bots, it's not official, no will help in their guild or github.
People seem to use older versions to get it to work.
The help channels and one guy dmed me. We all said no we don't help with self botting and it's against tos.
No library I know of supports it, people just use older editions who do support it.
Don't self bot, it's against tos and bots work better anyway
Description
The descriptions of commands with subcommands and for subcommand groups are nowhere displayed.
But nevertheless they are required fields that must not be empty.
While this per-se does not make sense, you could at least work-around the requirement like in other places where a value is required like embed field titles or values by using a zero-width-space as value.
But starting today even that does not work anymore and thus breaks bots that used that.
Steps to Reprodu...
Sorry about that. This behavior was unfortunately caused by a misconfiguration in our validation settings. Earlier today we noticed this field was causing guilds to crash upon receiving invalid unicode strings, which alerted us to this misconfiguration issue.
On required fields: we've gone through many iterations of slash commands UI since its inception. While we may not show these descriptions today, they are still a functionality we hope to make use of in the future to self with self des...
This has been partially solved with a recent PR, but the ability to know that your interaction expired is still somewhat ambiguous.
Closing as button labels are optional but text input labels are not as per @devsnek commit ba99e8c
Closing as button labels are optional but text input labels are not
But this is documented further down on the individual component types.
And right now both label fields are marked as optional in the table for all components.
Should just make label non optional and add footnote that it is not required in buttons.
Description
I'm updating invites with my bot, to keep a working invite.
There are two situations:
- The invite exists
- The invite is removed. A new one will be generated.
As far as I known, there is no way to check if a user still had a valid invite.
Therefor I'm updating my invite every 5 minutes. The problem is that even if the invite already exists in the channel, a new audit log entry is generated every time.
I think this is unexpected behaviour.
Steps to Reprodu...
Well, you could use multiple characters for a prefix, and prefixes are there because they are not used frequently in conversations.
Can't it be configurable by the user (so they can enable, disable, or use both slash and custom)? For developers, it's a nightmare to have one prefix for all bots.
it was a nightmare that slash commands fixed
After asking in the Discord Developers guild, it appears that the data property is always present on MODAL_SUBMIT interactions
#interaction-modals message
If this is not correct, then I would suggest removing the "It is optional for future-proofing against new interaction types" part
\* This is always present on application command, message component and modal submit interaction types. It is optional for future-proofing against new interaction types
I guess the , isn't necessary, right? ๐ค
Description
Unexpected exception thrown, when tryed to remove asset in rich presence tab.
Steps to Reproduce
- Create application in UI.
- Scroll & open Rich Presence tab.
- Add some assets.
- Try to remove one.
It, probably, is not reproducible with 100% chance. Maybe, all because of my unstable internet connection.
Expected Behavior
Asset should be removed successfully.
Current Behavior
Exception thrown. "Undefined property of null".
Screenshots/Videos
...
Can you post the response to the DELETE request, from your devtools?
This PR documents the default value for delete_message_days in the Create Guild Ban endpoint
the cases where Discord goes down only for bots and not for users aswell are so rare
Not just rare, it is actually impossible unless artificially constrained; as both bot and human users use the same servers to access Discord.
For example if you were using a user command which was to report a user to the staff team with a model.
It would use "value" which would pre-fill with the users username and would have that field disabled to prevent users from editing it.
I think that just allowing spaces is a bad idea, even if intended, cause a user could do spaces, but I guess you could check if it had spaces or not.
Currently, there is a permission which controls whether users can execute application commands (this includes slash commands and context menu commands) however, there is no equivalent for message components. I think it would be a worthwhile improvement if components could have an optional field which prevents them being interacted with by users/roles/permissions... that don't match.
I think being able to exclude/include people from using components would improve the current user experience...
It seems there's an old post from the 11th June 2021!! https://github.com/discord/discord-api-docs/discussions/3344, however the scope of my proposal is a bit clearer, so I'd like to keep this open.
I love the ansi codeblock highlighting that was added during hack week, sadly it looks garbage for mobile users.

Mobile also has other issues like no inline embed fields, providing which client (desktop/mobile/web) the user sent the interaction from would allow bot developers to send optimized responses which are able to account for lack of feature parit...
A really hacky workaround is to use the user's presence to see if they're online on mobile or not, but not all bots have access to presence. This would be nice tho, +1
Even if you have access to the presence intent, you need to open the flood gates for presence events even if you only want to fetch presence when you need it :disappointed:
The idea of modals in general is pretty cool, and giving developers the ability to use them is even cooler. However, as of right now, they can only be used to ask users for further input via components.
Making use of modals to display data without expecting any kind of input would open up lots of possibilites to rethink how bots display large amounts of data. Embeds are currently pretty much the only way to do that, but we all know they don't always do the job as we wish they did (think in...
What do you mean by "This behavior"?
I understand that you maybe want to show the description in the future, for example when first just showing the top level commands and when one selected the subcommands or similar.
But why is now suddenly the validation of "absent or empty" different than before and different than in other cases?
You can still use a zero-width space as content of a message if you want it empty, but when using it as command description you still get an error returned.
the guilds premium_subscription_count is now sent on invites
the cases where Discord goes down only for bots and not for users aswell are so rare
Not just rare, it is actually impossible unless artificially constrained; as both bot and human users use the same servers to access Discord.
It has happened before...
A field like this sent in interaction payloads would fix a symptom of a problem rather than the underlying issue of feature-parity lacking between clients. That same feature parity also allows for unique attack vectors per-client, which makes identifying the client used marginally dangerous.
While there are hacky workarounds (deep links, status tracking etc.), they're about as hacky as providing client information over interactions, and I think fixing the root issue would be vastly superior....
Why was this reverted?
I'm not able to delete an ephemeral original interaction response but can get and edit ephemeral followups.
What do you mean by "This behavior"?
The new validation behavior, required by
Earlier today we noticed this field was causing guilds to crash upon receiving invalid unicode strings
Description
The api is returning incorrect errors for exceptional inputs when setting command permissions
Steps to Reproduce
curl --request PUT \
--url https://canary.discord.com/api/v9/applications/892420397570592768/guilds/897162092652683314/commands/892974063251750944/permissions \
--header 'content-type: application/json' \
--data '{"permissions":["*"]}'
{
"code": 50035,
"errors": {
"permissions": {
"0": {
"_errors": [
{...
These errors are pretty deeply ingrained into our system (also permissions is an array of objects, not numbers), so I don't think this is likely to change.
Description
Currently in the client under the channel section, you are limited to overriding channels that you have access to however the API does not currently check if you have access to said channels
Steps to Reproduce
curl --request PUT \
--url https://canary.discord.com/api/v9/applications/861353680686284820/guilds/897162092652683314/commands/861353680686284820/permissions \
--header 'content-type: application/json' \
--data '{"permissions":[{"id":"38188711339150...
This reverts commit 611180a23a5ee0d4989f2da213ac05e68f5cbccc.
Unclear why this got reverted in the first place, it reflects the current behavior of the API.
These endpoints do not currently support this behavior. Usage of undocumented behavior is subject to breakage.
That would block Discord from allowing third party clients in future, and this would also degrade user's privacy.
Description
When my bot creates an invitation to a Stage Channel, the name of the Stage doesn't appear when sharing the invitation with others (statistics about the guild appear instead).
When I create an invitation to a Stage Channel as a regular user (using Discord's GUI), the name of the Stage shows correctly when sharing the invitation with others.
What do I need to do to get my bot to create invitations that appear in the same format as the invitations created by regular users...
It wouldn't preclude it (not that I think Discord would ever be willing...). However the gateway already does this type of splitting with activities so I think there's precedence for this already.
Hmm... that makes me suspect about timeout actually works by denying all permissions internally, on-the-fly, in the same way how channel permissions work, and this would explain why timeout has no effect for users with ADMINISTRATOR (Administrator) permission and recently even became unable to set communication_disabled_until at all for users with it.
If discord ever did allow third party clients this would simply have to be documented as to how clients are supposed to identify themselves on the gateway? The privacy part is also kind of eh since the users presence data already provides if they are on mobile, desktop or web. This feature proposal would just make that accessible for serverless bots.
Fixing the root issue isn't reasonably feasible, most mobile app versions of services provide a degraded user experience in comparison to desktop since that usually includes getting designers to come up with entirely new ways of interacting with features. Especially when coming into territories of hack week projects or small QoL changes porting them is going to take way more effort.
The feature parity issue itself is just one half of the problem, I've often encountered the issue of mobile s...
When you create a application command for a bot with the same name as application guild command that guild has the same command from that bot.
ways to fix this
option 1
check if a command already exists by a bot in every guild when in the registering command process, if the command exists, do not add the command.
option 2
add a option in the request body named something like duplicate with is a boolean which is defaulted to true.
if true create duplicated ...
adds the HUB guild feature and the GUILD_DIRECTORY channel type
no idea what happened to the old directory pr, but hubs are out now and they should be documented
We don't support embedding arbitrary iframes apart from a select few we've whitelisted. I would recommend placing the raw video file url in opengraph video tags so we can render a video embed.
We are looking into how we can embed the audio player in Discord. Added following to the html head
`<link rel="alternate" type="application/json+oembed" href="https://cleverfm.castpie.com/api/oembed?podcast_id=1222114325&episode_id=6339219633&timestamp=100" title="Bridging The Divide:...
Description
According to https://discord.com/developers/docs/topics/permissions#role-object, "Roles have unique names, colors, and can be 'pinned' to the side bar, causing their members to be listed separately." However, multiple roles with the same name can be created in a single guild.
Steps to Reproduce
- Create a guild.
- Create a role with the name "test".
- Create a role with the name "test".
Expected Behavior
This is a documentation issue. The documentation should...
the current behavior is intended and relied on by bots, breaking it would be bad
Don't forget to make sure that <18 developers can't use this feature!
that seems kinda stupid to me to make creating nsfw commands itself requires you to be a specific age
if a developer under 18 is creating an nsfw command it means that the developer is exposing themselves to nsfw content while being under 18 which is illegal.
discord should require you to send id for the age verification before creating nsfw slash commands
I don't see anything in the discord documentation about "spoiler" message attachments. It seems like discord simply appends SPOILER_ before the filename to mark as spoiler.
That works for attachments but not for "auto-embedded" images, when posting a link. Wrapping the url with || correctly marks the embeds as "spoiler". We need to add a space after the url for it to work. However, the link remain displayed when using that method.
I personally reuse attachments url to avoid upload...
When leaving out the required field in text inputs the input will be required to be filled.
i commited a fix for this, thank you though.
Instead of asking for "mobile" I would suggest to ask for "android" or "iOS" since both the discord apps are quite different on these two platforms.
Also I would suggest this idea to be allowed for slash commands, and/or provide us the user agent (for more specific information about the device).
There might be some times different way of tweaking server/account settings for different devices, and Letting us know about the device a user is on, definitely helps us understand and give help in a better way.
@typpo what about making a requirement for making those libraries should be open source only? In that way, everyone can learn by themselves what is a lib upto, whether it's fake and/or harmful, does it really respect rate limits, etc. Just a suggestion.
I believe yes, provided the ecosystem follows the discord guidelines too.
I'm droping this here as a possible idea.
An option to define what types of characters are allowed in a String input type for a slash command.
Right now is it the job of a bot to always check a String input, for if it does contain not allowed values, be it spaces, unicode or something else.
Having an option to tell Discord what values are accepted in a String input could reduce checks on the bot-end as the Client (Discord) would now validate the Input against what has been set before...
This can be closed again because of e6c97b14ee2a3adab22be24e2eaa6a42a8781d5d
Description
Every time you kick someone from a group, it displays a leave message instead.
Tested it with my friends, it works for all of them, one being on a mobile device.
Steps to Reproduce
Kick someone out of a group ig
Expected Behavior
Supposed to say __ kicked __ out of the group
Current Behavior
Says __ left the group
Screenshots/Videos
No response
Client and System Information
Mine is Windows 10, I use the discord app
Android is soon going to use the iOS react native app, removing the necessity to identify which is which.
Providing the full user agent is kind of privacy intrusive imo, the implementation I thought of effectively only provides data bot developers can already access via other methods, just in an easier and more intuitive way.
Description
When I send .js file in slash command parameter, server responses with error 500: Internal Server Error.
Steps to Reproduce
- Create a slash command with parameter of type 11
- Execute the command with .js file
Expected Behavior
204: No Content
Current Behavior
500: Internal Server Error
Screenshots/Videos
No response
Client and System Information
Microsoft Windows 10 Home 10.0.19044 Build 19044
Firefox 97.0
Hello ๐
Would you ever consider allowing the addition of buttons on another user's message in other words not the bot's message? If buttons are intended to replace reaction(buttons) they should be able to be added to another user's message.
Use cases:
- Reaction roles where the users want the message to be their own message not the bot's message. Webhooks may make it appear like the user's message but it doesn't let the users click on the profile to dm or view info about the u...
How would this work in terms of what users bots can add buttons onto, would bots just be allowed to add buttons on to any users message or would permission be given via an oauth scope.
I didn't find this a useful thing, maybe the LINK buttons for webhooks but for users no
- I assume that Buttons from the bots is a perfect way
Now that e6c97b14ee2a3adab22be24e2eaa6a42a8781d5d happened and deleted the "confusing union table" (quote @devsnek) why can't we do the same for channels?
It seems like the client is deliberately preventing .js files from being sent to the application. My HTTP server is not receiving any requests when using these file types. .exe files are also stopped by the client. This may or may not be intentional, but I'm just adding this out there.
multiline input is still planned
Why not just use a regular expression for the string validation? Way more flexible.
@psibean https://blog.cloudflare.com/details-of-the-cloudflare-outage-on-july-2-2019/
Ah yep. That'll do it. Let's not let people burn through users CPUs with ridiculously expensive regex.
Description
When responding to a component interaction with response type 7 (UPDATE_MESSAGE), if the same content/components as the parent message had was passed, the edited_timestamp is still set/updated.
Steps to Reproduce
- send a message with components on it
- interact with a component
- respond with an UPDATE_MESSAGE with the same content and components as the original message
Expected Behavior
The edited_timestamp is not set/updated as the new content is the same ...
multiline input is still planned
Any timeline for this? ๐

If I remember correctly, you used to could click buttons while timed out, but is no longer possible.
Possible use-cases:
- Display timeout reason if it was done with bot
- Give links to rules or info as buttons (as screenshot)
- Display modal where they can write their timeout appeal
If bot doesn't want user to use a button, they can simply ifcheck member timeout status a...
It will be great to use steam:// protocols in buttons
@montekaka I would suggest opening a new issue as this one has been closed for a long time.
Hey everyone,
We have a few updates regarding API versioning and what to expect over the coming months. As of today, you can begin specifying v10 in your API requests. We are also deprecating API v8. Read more below for what to expect.
API states
First, let's clarify the possible states of an API version. There are 4 states:
- Available: A stable API version
- Default: The recommended stable API version (also the default version for non-versioned requests)
- Deprecat...
Description
A command within my (sharded) bot is failing to run.
The interaction details make it to the server, but when I try to reply to the interaction I get an Unknown Interaction error.
When I try to defer and edit reply, the deferring works, telling me that my bot is thinking, however attempting to edit the reply of this gives me a 500 Internal Server Error.
In my testing, this has only occured in one server and worked fine in others. (ID: 905440335663079455)
Steps to Re...
Requests to v10 and higher will no longer by supported on discordapp.com
seems like there's a typo here, it should be "be"
Pretty cool news, with all these versions of marked, a new one can get lost quickly.
Did the message content intent became a gateway intent to pass inside the identify payload? if it is, what's the flag?
First, let's clarify the possible states of an API version. There are 4 states:
- Available: A stable API version
- Default: The recommended stable API version (also the default version for non-versioned requests)
- Deprecated: An unrecommended API version, pending decommission
- Decommissioned: An unavailable API version
Where does "Doesn't look like anything to me" fall under these?
it was a joke state iirc
Funny how the author of this announcement is called typpo :^)
Achievement localization format has changed. name and description are now strings, and localized strings are now stored in name_localizations and description_localizations
does this mean that achievements will stay and will no longer require the dev license?
What's an achievement now ๐ค
Yes, you need to request the message content intent in v10 (1 << 15 = 32768)
So, is the updated "default_permission" command field going to be in v10, v11, or have you guys decided not to go that way with the command permissions 2.0 API?
it has caused a lot of confusion when it was added and for some reason they refused to change the wording
no, it doesn't. this change brings all localized strings into a consistent format. the old localized string format was a union type, which makes it hard to work with. moving forward localized strings will be separated as first seen with application command localization.
Could the flag for the Message Content Intent be noted in the announcement?
The command permissions we've discussed are still work in progress, but I would expect to see this field become deprecated once we launch revamped command permissions.
Are command permissions v2 still on track to be released with enough migration time before April 30th?
Additionally, it would be nice if this was added to the documentation
Will file uploads with incorrect field names (i.e not files[n]) be rejected on v10?
It would be nice to have a response type to allow showing an error message inside the modal if some of the fields aren't right, rather than having the modal close and requiring the user to re-enter their text

basically let us show a message like that but with our own error message text
otherwise, bots have to implement holding modal state themselves so when users reopen the ...
Requests to v10 and higher will no longer be supported on discordapp.com
What about cdn.discordapp.com ?
iirc API v7 was a testing ground for things to merge into v6 back in b1nzy's day. I could be wrong, but that was the general consensus at the time.
Given that isn't addressed here, let's assume the CDN's location isn't moving until they announce it. Legend has it, it's an immovable object.
it was skipped because people were using it when they weren't supposed to
Description
from discord.ext import commands
from Config import ping_role_id
class ThreadSystem(commands.Cog):
def __init__(self, bot):
self.client = bot
self.flag = False
@commands.Cog.listener()
async def on_thread_join(self, thread):
if self.flag:
self.flag = False
return
if not self.flag:
self.flag = True
await thread.join()
ping_role = thread.guild.get_role(...
Has the changed mentioned in https://discord.com/developers/docs/resources/channel#start-thread-without-message for API v10 been applied? (type being required) ๐
Command permissiosn are already in testing with specific test guilds. We hope to have more to share with you all soonโข.
We have no current plans to migrate off of cdn.discordapp.com for user generated content storage. If we have any future plans we will be sure to let everyone know.
No; the current release is the full change-set we've targeted for this release.
We are still working towards updating documentation to reflect this new release. Expect to see documentation updates soonโข.
We can followup with the team in charge of threads for clarification, but at first glance it does not appear there was API version logic added for v10 on this route.
Hello, this morning I started to recieve html instead of json, and since node fetch uses json parsing, it starts logging errors about it.
Upon testing what happened, cloudflare seemed to block with the html file:
<!--
Access denied | discord.com used Cloudflare to restrict access
(function(){if(document.addEventListener&&window.XMLHttpRequest&&JSON&&JSON.stringify){var e=function(a){var c=document.getElementById("error-feedback-survey"),d=d...
your request was blocked, you probably are not using the correct User Agent format.
If you are on v9 or lower, you will automatically receive message content if you have been approved, even if you aren't specifying the intent.
This one is actually not required for backward compatibility, as a bot without message content intent will still receive redacted (i.e. content fields set to blank values) guild message objects.
This is intended. The data structure literally says "communication disabled until."
@advaith1 Attachment types that would be rejected to be attached to a normal message cannot be sent in an interaction either.
Description
I created new lobby twice, always I get OK result on first attempt, Internal error on second attempt.
Steps to Reproduce
var ltx = lm2.GetLobbyCreateTransaction();
ltx.SetCapacity(10);
ltx.SetType(LobbyType.Public);
var lid = 0L;
lm2.CreateLobby(ltx, (Result result, ref Lobby lobby) =>
{
lid = lobby.Id;
Console.WriteLine("1" + result);
lm2.ConnectVoice(lobby.Id, (result) =>
{
Console.WriteLine("1" + result);
lm2.Disc...
Attachment types that would be rejected to be attached to a normal message cannot be sent in an interaction either.
what filetypes are rejected from normal messages? i haven't run into any yet. since the OP mentions it, .bin files normally attach fine but are apparently rejected in slash commands, so I'm not sure how what you're saying fits in. this isn't Guilded...
Bump. Same reasons as everyone else ig.
I want to make sure that we're on the same page about how the default API is selected and how versions are bumped in the future. Worth noting that v6 has been simultaneously a default and deprecated version for about 1.5 years (#2097), and the default is now being bumped to v10, effectively skipping v8 and v9 (and v7, our beloved). Not a huge deal if users have been explicitly selecting a version and are keeping up with the changes, but that jump just seems kind of abrupt for people who have ...
But why do you must shut API v6 and v7 down?
It is a (in my opinion) good API and I'm using discord,js@12 for some off my Bots and now I can't use them anymore or will there be there an unofficial version off discord.js@12 and discord.js@11?
A small but easy to miss detail. The unavailable field is false for guilds that became available to the client and is not included for guilds joined by the user.
About
This is not directly tied to the API documentation, but the Bot tab in the developer Portal itself.
More precisely is it about the "Privileged Gateway Intents" section, which may look something like this:

There are a few things that I feel like could be improved, which I will go over in this discussion.
Disclaimer
I'm not a native English speaking perso...
What if the client joins an unavailable guild?
After speaking with this team they've decided to delay this breaking change for a future API version.
Stable/Default
Seems like just a wording mix-up here. Stable == default, as in "This is the recommended API version to use, and will be the one that un-versioned requests go to". We'll get the wording clarified.
Timelines
Your n example is pretty spot on. We're going to take it upon ourselves to look at possible breaking changes each quarter, and if there is a new version necessary, make the necessary changes. That doesn't mean there will be a version bump each quarter--there...
It is a breaking change in the sense that if we required you to specify the message content intent in <v10, and your bot relied on messages, your code would break unless you made changes to it.
This is the same strategy we used for Presence/Guild Member intents a couple years ago ๐
Just to add a little bit of clarity between what I said and your n example:
- If
nis default you can assume thatn-1is deprecated - You can't assume that
n-1is decommissioned, because it may have been deprecated < 1 year ago - There might also be an
n+1that is available, but not yet made default
Looks good to me, thanks for the response.
We've deprecated discord.js v11 (???) and v12 for several months now... you should update your bot to v13 instead, as we will not provide support for such old versions
also, it is not feasible to maintain code for old API versions forever, you should have switched away from the old API and d.js versions long ago
But why do you must shut API v6 and v7 down
The developers of this library are shutting those versions down because discord is shutting them down. Your old bots using these versions will literally no longer be able to login past April 30th. You've had a year's worth of warnings about this.
Description
Rotating your screen cause all the field of your modal to be overwritten with the value of the last input field.
Steps to Reproduce
- Open any modal with at least 2 text field
- Type something in the first one
- Type something else in the second one
- Focus the last input
- Rotate your screen to landscape
- Rotate it back
Expected Behavior
All the input should be the same as typed before rotating.
Current Behavior
All the input are overwritten by whate...
Can you post the specific request that is giving you a 500 error?
b7596e1 Add default for delete_message_days (#4488) - ImRodry
7f6dfe5 make data not optional on modal submit intera... - almeidx
Sorry but this is off-topic for this repo. You can reach out to https://dis.gd/contact if you feel this is a bug, but I don't think the app has ever said that someone was kicked from a group DM?
The 3rd sentence could use rewording as well ("Roles are unique per guild")
Thanks for the report. This behavior appears to be how all message updates function on Discord, and is not specific to interactions. If you pass content into an update route, we will assume new content and update the message.
7d0ccfb Mark .md files as linguist-detectable (#4471) - fwcd
This is an infra risk, so we're going to keep the rate limit
b7647b2 Document that interactions endpoints are not bo... - Zoddo
Closing for now since docs are out of date
0433875 fix: roles names aren't unique (#4501) - imranbarbhuiya
You shouldn't be sending an origin for this request.
To further expand on @devsnek 's reply, we do not expect direct gateway connections from bots to be occurring from origins. The only supported origins would be from our official clients, which aids in promoting platform security.
This seems to be less about whether or not a bot/user created it, and more if info about the invite is cached. Even if made as a user, and you refresh your client, you will see invites appear in the first style.
Description
Slash commands time out after 3 seconds even while uploading attachments, thus always resulting in a time out when uploading large files.
Steps to Reproduce
Upload a large attachment over a slash command.
Expected Behavior
Slash attachment commands not being treated as regular commands and instead having a special time out duration.
Current Behavior
Slash attachment commands time out after 3 seconds just like regular slash commands.
Screensh...
This can be solved by anticipating a longer response time and responding with a defer.
Hi @cakedan, The defer logic would not work here as the command times out before even sending the interaction.
While not optimal, you can send a defer before you start the upload.
Receive interaction > Send Defer > Send upload
In an ideal world, discord should recognise the upload is ongoing and not timeout
I think they're talking about the attachment option for slash commands, not the bot/application sending the attachment.
@S3wnkin can you clarify..?
Hi @cakedan, The defer logic would not work here as the command times out before even sending the interaction.
Oh I must've misunderstood the issue then, I thought you were having trouble processing a person's request and it was timing out while you were fetching it. After testing it, I do see main issue where discord's interaction times out before you even receive it. This is definitely a bug on discord's end, they probably wait for the attachment to upload to their cdn before sending o...
This is what it looks like on the website currently

This PR just adds another space so the markdown renderer sees them as 2 elements
I'll be migrating my library to this version tonight, with a plan to release an official 10.0.0 too.
new versions is always good news!
the changes seem small and safe enough to do this (our lib major versions match that of the latest Discord API version).
47c47f8 Deprecate Invite Stage Instance (#4479) - Lukellmann
Description
When submitting a modal on the latest version of Android stable, you get the "Something went wrong. Try again." error.
Steps to Reproduce
Open a modal on Android and submit some text.
Expected Behavior
The modal successfully submits and sends the interaction to the application.
Current Behavior
The "Something went wrong. Try again." error is displayed and no interaction is sent.
Screenshots/Videos
 > 2000:
await msg.edit(returned_string)
returned_string = member_mention
else:
returned_string += member_mention + " "
if msg == "" and len(returned_string) > 0:
await thread.send(returned_string)
elif msg != "" and len(returned_string) > 0:
await msg.edit(returned_string)
It's in t...
Full error message with tracebacks (this time on heroku, but it's the same as the one I get while running the code on my pc):
2022-02-16T00:50:25.481862+00:00 app[worker.1]: Ignoring exception in command addMembers:
2022-02-16T00:50:25.488251+00:00 app[worker.1]: Traceback (most recent call last):
2022-02-16T00:50:25.488278+00:00 app[worker.1]: File "/app/.heroku/python/lib/python3.9/site-packages/discord/ext/commands/core.py", line 179, in wrapped
2022-02-16T00:50:25.488279+00:00 ...
Ah, for some reason my websocket library is automatically setting the origin header (https://github.com/amphp/websocket-client/blob/b2ce5a8a7a4a47e253f1bb5dd6539cfd2488e201/src/Rfc6455Connector.php#L108) - omitting it works fine.
One of the features of the ROLE and MENTIONABLE command option types is that you can select the @everyone "role" as an option. While that may have some use cases, so it should stay, I would love if we had an include_everyone_meta_role boolean (default true) or similar that lets us disable it from showing up in the clients (as it would skip a check in our code that the role id provided isn't the guild id).
Why to keep the @everyone role showing up as an option in the first place...
+1. Now that we have a good UI to collect input we don't need to check users' input (it's a role or not) as the validation is happening on the client side. But this everyone role is causing the same issue again. We need to check and show an error message to the user and they need to rerun the command. There are so many cases where we don't need everyone's role so such an option will be cool.
The Add Guild Member endpoint (PUT /guilds/{guild.id}/members/{user.id})) currently just adds a member to a server of which the bot is a member of. However, this limits the applications of this for slash command-only bots.
I suggest that a new endpoint be added (POST /invites/{invite.code}):
- The Authorization header will be the OAuth2 bearer token.
- The endpoint increases the usage count of that particular invite, as if the user manually clicked on it.
- The endpoint adds the use...
Description
Hello, I don't know if I am the only one experiencing this issue where in I have observed that the captcha in discord has been very difficult to passed. Like the captcha is asking me to find a boat for example then when I correctly choose all the boats shown it will prompt "Please try again". Then I need to do this all over again until somehow my submission will be accepted.
May I know if this is somehow connected on the time I submit or choose a photo in a captcha?
I k...
The Captcha wasn't increased afaik, the captcha is based on your recent captcha solutions, so a so called "algorithm".
You got a point, it could be because of some factors really on my side that affects the captcha on my discord.
These issues are for api-related topics only. Please contact support if you're having issues with the product: https://dis.gd/support
It should navigate to the invite's channel.
If there's a call going on in a group DM or regular DM, it should add them to the call, but muted by default.
If the invite has an event, if it is active and the user is a moderator, it should add them to the speakers (but muted by default). If the event is active but the user isn't a moderator, it should add them to the audience. Otherwise, it should add them to the audience and mark them as interested in the event.
If the invite has an ...
with a pretty high rate limit,
No, bots should have a lower rate limit for this API. After all, they could perform the same query in their own databases.
This PR changes Get Guild Application Command Permissions to Get Guild Application Commands Permissions.
[discord/discord-api-docs] Pull request opened: #4528 Revert "Add default for delete\_message\_days"
Reverts discord/discord-api-docs#4488
Usage of this make sense for me only for counting messages
Hey @spiralw , can you elaborate on the failure state youre encountering? We have some ideas of how we might resolve this, but after looking at our code even now, its hard to imagine how a session would crash just because presence updates in guilds took a while to process. The session may become unresponsive for a while, but thats all. We want to make sure we understand the failure case youre encountering before we try to fix something that isnt the actual issue
It can also be used for queries that involve deleting messages, eg. deleting things that mention a specific user (example taken from another suggestion around here)
When this library will be unlisted, support servers also will lose verification?
A fix for this should be deployed shortly.
from what I understand by talking with @night, the issue is when the session becomes unresponsive for too long and the internal event queue becomes too big (conversation [here](#api message))
ah thanks for that context
for member_mention in member_mentions:
if len(returned_string + member_mention) > 2000:
await msg.edit(returned_string)
returned_string = member_mention
else:
returned_string += member_mention + " "
if msg == "" and len(returned_string) > 0:
await thread.send(returned_string)
elif msg != "" and len(returned_string) > 0:
await msg.edit(return...
Adding time.pause(5) / await asyncio.sleep (5) in front of the edit msg functions didn't change anything either
Description
I think it would be bad behaviour if a window pops up, the message gets deleted and the modal fails and does not even send a MODAL_SUBMIT. The message is not relevant for the modal interaction, so it should barely not fail when the message (which isn't even needed) gets deleted.
Steps to Reproduce
- click a button/select which opens up a modal
- delete message where the component was from (with alt account or bot)
- submit modal
Expected Behavior
The modal sho...
We can't do regexes because a pathologically bad regex can freeze the regex engine in the browser.
What if the regex verification was done server-side?
Even worse for discord, since that same regex can crash the server too
The application can respond to the modal submission with type 7 which would edit the message, so it would be a problem to send the interaction when the message no longer exists.
When a image is embedded due to being linked to by URL such as
https://media.discordapp.net/attachments/561700849022140417/943800897358680064/SPOILER_Screenshot_20220217-092731.png
The spoiler filename should make the unfurled image spoiler tagged. Currently this is not the case, which makes it so commands which echo user provided attachments lose their spoiler property.
The same is the case for images used in embeds; they should similarly be spoiler tagged.
I think this could even fit into a similar option restriction as channel_types actually, role_types in this case, maybe as a bitfield, or as an array of some sort, whatever seems to fit better.
role_types could be a selection of
StandardEveryone meta-roleIntegration
It would be extra cool to have a few extra utility types too, but there would be some logistics to figure out for them as they overlap the above mentioned types. These would be:
Assignable- give...
Writing games for M1 will not be possible until we get a native ARM build. The software I'm writing does not have the headroom to run through Rosetta, so this is stopping me from integrating into Discord at all. The population of Macs is shifting from Intel to ARM, it does not make sense to not supply these ARM dylibs.
I'm sure there's additional role types that would make sense, but that's what I can think of off the top of my head
Something like the ability to show just roles that are below the invoking user's highest role would be nice.
Is there anything else you need? Or anything I can do to which would do the same but without getting an error?
Description
I'm working on designing a bot. When I first put it in, 'logged in' the bot, it worked but then I got an alert saying my token had appered online. So I took the new token, and replaced my old token in my code in Visual Studio Code with it. But when I go to log the bot in, I keep getting:
const invalidToken = new Error(WSCodes[4004]);
^
Error [TOKEN_INVALID]: An invalid token was provided.
.
.
.
[Symbol(code)]: 'TOKEN_INVALID'
...
Make sure the token isn't in the repository anywhere. Check your .env file (which should be .gitignored anyway). Regenerate the token but make sure it isn't in the repository, anywhere. See this page for more on that problem. After that, just try regenerating it again, I guess.
@spiralw we've deployed a change to sessions that may help your situation. If you try it let me know how it goes
Make sure the token isn't in the repository anywhere. Check your .env file (which should be
.gitignored anyway). Regenerate the token but make sure it isn't in the repository, anywhere. See this page for more on that problem. After that, just try regenerating it again, I guess.
The new token(s) that I regenerated after the errors started showing, were not added to github, and they still wont work....
This happens on PC client and web client also. Never uses the value from the auto complete options, just the name
I'm currently developing a library that tests Discord bots. To do so, I instantiate another bot that sends command messages to the channel so the testing bot does what they have to do. The problem is that as only real users can send slash commands, I'm not able to test slash commands with my library. So it would be very helpful for me and for those who are using my library.
Okay, then it would be a suggestion to make it succeed when it only sends a message and make it error when it trys to edit the message. Because when using a slash command, there's also no option to edit the message.
Description
The autocomplete options are returning the name of the option displayed in UI instead of it's set value by the developer causing commands to fail when Name =/= Value
Steps to Reproduce
Create a slash command with autocomplete in one of the arguments
Give it a bunch of options to choose from where options names are different from their values
Expected Behavior
The values of each option being returned and not the names
Current Behavior
The names of the option...
In the .gitignore file, there should be a line that says ".env" (without the quotes, of course). Make sure it's there.
Feb 18, 2022 00:43:31 DThorn13 @.***>:
Make sure the token isn't in the repository anywhere. Check your .env file (which should be .gitignored anyway). Regenerate the token but make sure it isn't in the repository, anywhere. See this page[https://docs.github.com/en/code-security/secret-scanning/about-secret-scanning] for more on that problem. After that, just ...
This is a change in behavior, but why is it considered a bug?
I think they're saying the application is receiving the name instead of the value, which iirc has been a known issue in certain cases for a long time
If the names are used instead of the values, that makes it impossible to rerun the command. This is especially problematic if the option type is not a string. However, some clients such as the iOS app also send the name instead of the value when the command is used. Which makes the command fail in the first place, rendering the choice value useless and essentially forcing you to only send name and value identically.
I started only using values identical to choice name, because of all these...
Ye, it's not like slash commands are copy pasteable...so if this is a behavior change, it is most certainly an annoying one, as there's information I want to display and information that I don't need to...in this specific case I'd like to display the author of the mod without having to do extra splitting and string fixing just because you want to make it copy pasteable, not that it even works
application is receiving the name instead of the value
If this is indeed the case then yes it would be a bug. If anyone knows how to reproduce this please let us know, but as of now we dont have a repro.
makes it impossible to rerun the command
This is interesting to me. Part of the motivation with this change was to make it easier to rerun commands (though the primary motivation is that it be an accurate representation of what the user sent), since, at least in my experience, if...
Is this still true and do you have a repro? Sounds like it could be a separate bug
It looks like the iOS behavior has been fixed, however now it sends the name on the desktop app. Tested on Canary 115515 (e5f2092).
I have the same issue right now. My bot is running Discord.js v13.6, I'm receiving the autocomplete UI properly

But when sending this option, the following code
const item = interaction.options.getString('przedmiot', true);
console.log(item);
gives me Booster XP - 0.6%, even though the autocomplete value being sent is xp_6
application is receiving the name instead of the value
If this is indeed the case then yes it would be a bug. If anyone knows how to reproduce this please let us know, but as of now we dont have a repro.
makes it impossible to rerun the command
This is interesting to me. Part of the motivation with this change was to make it easier to rerun commands (though the primary motivation is that it be an accurate representation of what the user sent), since, at least in my ...
Command JSON would definitely help. I will investigate this today when I have some time
{
"type":2,
"application_id":"757559359348670464",
"guild_id":"925046124740505621",
"channel_id":"941339742216273961",
"session_id":"3358dbf7ffa86f4ae5191916666a6f24",
"data":{
"version":"940757150366597142",
"id":"862708637621682186",
"name":"play",
"type":1,
"options":[
{
"type":3,
"name":"query",
"value":"๐๐ GetOnMyLiLPeepLvL"
}
],
"...
Appreciate it. This should be enough for me to investigate for now, will let you know if I need anything more
In the .gitignore file, there should be a line that says ".env" (without the quotes, of course). Make sure it's there. Feb 18, 2022
Ok so made a .gitignore file, it only has .env, but I still get the TOKEN INVALID error

@infinitestory tracked this bug down and just merged a fix to canary. Please let us know if the issue persists
Seems to be fixed on Canary 115591
@infinitestory tracked this bug down and just merged a fix to canary. Please let us know if the issue persists
Thank you so much for having this fixed, seems to be working perfectly now โค๏ธ have a great day.
Description
Discord automatically adds the @ symbol when filling user options, presumably to directly display the built-in user autocomplete. However, it becomes problematic when filling the option with a copy pasted snowflake, as the @ symbol is still there. The client prevents the command from being sent as it thinks your input is not a valid user when it, in fact, is.
I am not sure if this is a bug or simply caused by the fact that your actual input is not "123" but "@123", but th...
Description
The GET /guilds/:id/bans endpoint is not paginated at all, and in a guild with a high amount of bans (think hundreds of thousands of bans), such requests can end up in one of these states:
- Fetching takes a long time, but the returned data is perfectly valid JSON (depending on size, we can be talking of 10s of MBs)
- Fetching takes a long time, but the returned data is incomplete, or cut off
- Fetching takes a long time, only to hit a 429 shortly after
- Fetching tak...
After some testing this actually applies to channels and roles as well, but is more of an issue with users because they're not tied to a server while roles and channels are, thus displaying in autocomplete
Description
According to docs component_type for modal should be 4. However returned interaction event "thinks" that it is a button instead.
Steps to Reproduce
Send a modal with input text after user clicks a button.
Expected Behavior
component_type is 4
Current Behavior
component_type is 2
Screenshots/Videos
Payload
{
t: "INTERACTION_CREATE...
interaction type 3 is a button, not a modal. you have the wrong interaction there.
Just as a bit of a bump to this discussion and also an idea. On the user side it could be displayed as an arg that can be selected like an optional arg (maybe with some sort of prompt that it's repeatable), but each time you select it, it creates a "new instance" of that arg in the UI, but when it's passed to the backend it's passed as an array. This way it's a bit of the best of both worlds. Developers don't need to deal with repeating keys and users don't need to deal with comma/pipe/semico...
That doesn't solve the issue of having to repeat the user key 50 times in Mason's ban example - the tradeoffs are more UI tradeoffs than anything else and the backend will probably follow on in the easiest way possible from that.
Description
Recently, bot devs have been getting their verification requests rejected for "Sharing or enabling experimental features" this is apparently a "Strict violation of discords terms", in almost all of the cases i have seen, this is due to bots having features to access voice activities, absolutely fair enough if the games team don't want more people to be using them than they currently expect. But telling developers that they are breaking the terms of service when in fact they a...
This still does not work in link markdown correct?
Ex: [My Profile](discord://-/users/212572875793234272)
Other than this being a bad idea as it opens up many more ways of abuse, I don't think this would work anyways? A bot that's authorized with only the applications.commands scope and not the bot scope cannot create invites, or get invites.
The only reason I can see is a different user providing the invite which seems like a very bad idea
The first point is relevant with guilds with 1.1k+ bans (seen in one of my guilds) and takes somewhere between 0.5-2s but leaning more towards 2s, just fyi
Description
If you try to reply by creating a modal for user with data like this
{
type: 9,
custom_id: '...',
....
}
without data field API will response with status code 500 instead of pointing that there's no data field or something in body is incorrect
Steps to Reproduce
make_post_request(
`/interactions/${interaction.id}/${interaction.token}/callback`,
{
type: 9,
custom_id: 'test-modal',
components: [
...
I mean that when a button named "Nickname" is clicked, in the text box it will show a label like:- nickname: <text to be written, where we can simply write the text and the command gets executed i.e. the nickname of user changes to that text.
Even slash commands support writing text, but as they're still being improved and there are frequent issues with it like Discord API outages.
well... i'm currently implementing them via autocomplete - not ideal, and it's only relatively maintainable because of decorators
There are cases users might want to anonymously boost a guild: ideological conflicts, public service members that want to support private communities, users that want to appear poorer than they are (if you boost too much, or gift Nitro too much, users might think you are rich).
Users should be allowed to hide their premium status. Also to mention, bots should be allowed to anonymously boost guilds owned by human users, as long as choice of the guilds to be boosted is left to the bot itself...
choice of the guilds to be boosted is left to the bot itself and not the bot owner.
How would that work exactly? Is skynet upon us already and nobody noticed?
This seems like a general feature suggestion, which are supposed to be sent to https://dis.gd/feedback, not here.
It is the non-legalese way of saying "bots shall act like separate persons when choosing which guild(s) to boost".
This flag has no use for bots, and will not be documented here.
Where does a bot have no use for this?
One moderation bot I know of literally uses this for automated moderation (i.e. kicking), which IMO is quite a reasonable use-case for bots to have.
GNAP is the successor to OAuth, and would allow things like continuation and chained delegation, and a standardised way to handle multiple access tokens.
It would be nice if instead of bots having to register their commands through API, they could return their command list dynamically through an interaction, which would give the bot more control of where, when and who is requesting their command list and what commands should be returned, and also allow them to update instantly and without limits their command list.
No, these sentences have completely different meanings.
Where does a bot have no use for this?
This flag will be applied to users who's account is already disabled and is scheduled for deletion. When the account gets deleted it will automatically get automatically removed from the server, there is no action needed to be done by bots.
Whats the reason behind so many active accounts having the flag then.
Whats the reason behind so many active accounts having the flag then.
From my knowledge accounts that are active and have this flag, are accounts of people who got their account back but the Trust & Safety team has simply forgot to remove the flag from their account after the unban.
I remember last month a server I was in got raided very heavily by a lot of accounts mass spamming messages, and a few of the accounts had their messages marked as "likely from a spammer" or something along those lines. The messages were hidden very similarly to how blocked messages are usually hidden, and I'm not sure if they were actually being stopped from sending messages (or if their messages were marked as spam after Discord stopped them from sending messages) as the hidden message coun...
Another small question, after April 30th rolls around, whats the state of API v8? Does it also get discontinued?
Doesn't work with strings ?
Tested with
{"data":{"choices":[{"name":"abc","value":"zxc"},{"name":"abc","value":"zxc"},{"name":"abc","value":"zxc"},{"name":"abc","value":"zxc"}]},"type":8}
Ok, nice, it's fixed in Stable 115633. Why doesn't Discord update to this version...
We recognize that you count on the API to be stable. Deprecation periods will last at least 1 year, unless otherwise noted.
It seems better than having to create a full-on bot for something that fundamentally doesn't need a bot account.
Think of it this way: would you trust an application to be able to join users to an invite that you can delete, or to invite a bot that could potentially mass DM the server?
POST /invites/:code support was intentionally removed so people use Add Guild Member instead; Add Guild Member is abused enough and I don't think there is a point in adding accept invite support back. If you want to add a user to a server just put the bot in the server.
I think this poses way too many architectual challenges to implement feasibly.
Things like
- Discord has to send out interactions to every single application in the server
- Handling of the 100% will be happening race conditions of different applications responding
- Somehow displaying to the user what is happening
- Loading the slash command list is a blocking operation, you cannot send a message that starts with / until the list has loaded, which is already slow for some
- etc..
This is (mostly) implemented to the tune of modals. Its not inline and doesn't support selects yet, but its there!
Guild message read access being privileged for bots in more than 100 guilds is already requiring a re-evaluation of bot's data handling at the time of application, which can indeed involve code changes. It is a worthwhile point to make that change in a bot's code base.
The better solution is to have actual user-specific invites, that the user can accept, refuse, or even block certain users from inviting them in the first place.
The first and third points apply to my smaller guild with about 6k bans. The ratelimit seems to be changed to a guild-wide one with 1/60s once the amount of bans exceed a certain threshold, causing a 429. It causes clients to break when accessing the ban list.
Send Friend Request to someone who close "WHO CAN ADD YOU AS A FRIEND" in Privacy & Safety
The information provided in PlayStation activities is quite underwhelming
It seems to be Game Type which has name, start, end
I'd like at least an application ID so that I am able to validate presences...
This documentation is for bot-related APIs; since bots can't send or receive friend requests, this probably won't get merged.
The first and third points apply to my smaller guild with about 6k bans. The ratelimit seems to be changed to a guild-wide one with 1/60s once the amount of bans exceed a certain threshold, causing a 429. It causes clients to break when accessing the ban list.
pretty certain they mean they hit a 429 on the first try, not the second fetch.
The first and third points apply to my smaller guild with about 6k bans. The ratelimit seems to be changed to a guild-wide one with 1/60s once the amount of bans exceed a certain threshold, causing a 429. It causes clients to break when accessing the ban list.
pretty certain they mean they hit a 429 on the first try, not the second fetch.
Nono, sometimes I hit a 429 in the middle of a request, or when the request is supposedly done and should return the data, not at the start of one
IMHO bot users are inherently more abusable than being able to add users to a server.
Move embed limits as part of sub section of Embed object section
Currently it is placed along with endpoints section links:

When is this gonna be added? I've seen that users have an endpoint for that in this discussion, but it isn't for bots? May aswell self bot that data (not that I am going to, but some people may do this as a last resort)
Bot users cannot modify users' accounts, which is considered the bigger issue.
[discord/discord-api-docs] New comment on discussion #4548: PlayStation activities are underwhelming
I'm not exactly sure what other data you want or what you mean by "validate presences"? If you want to check if it's a PlayStation status, you can check if platform is ps4 or ps5.
I'm not aware of any user-accessible way to view it. As far as I know there is no way to give users a different level of reward for multiple boosts, so based on that, creators are still not able to create tier-level models or anything to incentivize it, not even manually. If that's changed, then I'd be very glad to hear it
What use cases are you talking about if the bot cannot create or get invites?
the boost Server Settings page fetches its data from an endpoint that returns all of the boosts and their users and expiration dates, so that endpoint would serve this purpose. for creator tier subscriptions they probably want servers to use role subscriptions instead of boosting.
This is validated by the client, but unmentioned in the documentation.
Yep. It's just a bug. We plan to fix this in the coming weeks.
I would note that they have brought this kind of complete nonsense at here and even tried to argue about it in the past.
This happens to me as well. If an attachment argument has been supplied before another non-attachment argument, the autocomplete for the following arguments fail to load.
This updates the documented max character limit for Select Menu placeholders from 100 to 150, which is what the API actually enforces per the following response:
HTTPException: 400 Bad Request (error code: 50035): Invalid Form Body
In components.1.components.0.placeholder: Must be 150 or fewer in length.
I looked for other PRs and issues around this, but was unable to find anything.
If this isn't intended and it's the API itself using the wrong limit, please feel free to ...
I'd love this as well as just normal form validation like Bootstrap:
<img width="807" alt="image" src="https://user-images.githubusercontent.com/8278263/155024636-9b3a0638-3590-4f87-b4c9-dc572dd921c8.png">
Like if we need an email, or something, let the bot validate it and return errors for the user to solve (this is in addition to your suggestion)
Description
Fetching a message with Get Channel Message with message content intent enabled will not provide any additional information that the message content intent is supposed to provide.
Steps to Reproduce
- Enable message intent in dev portal
- Using api v10, fetch a message with Get Channel Message that would not provide t...
I figured out a solution to those possibly affected. Toggle any intent, and save it. Then toggle it back and save again. This triggers some sort of internal syncing on discord's end and will provide message content when using the HTTP API.
Leaving this open for now as its still a bug nonetheless. Additionally verified bots are not able to toggle any intents above if they are impacted.
Description
When performing a webhook.incoming flow the access token you get has the wrong scope.
Steps to Reproduce
- Set up a simple oauth2 flow with only the
webhook.incomingscope - Look at the JSON returned at the token exchange
Expected Behavior
I expected the response as it's described in the docs. With the "scope" being "webhook.incoming"
Current Behavior
I received the response as expected with only one discrepancy. Scope field in the response was set to `a...
Description
The audit log payload is supposed to include a list of users that are referenced in all entries that appear in the requested log. However in the case of a guild transfer, the recipient user is not included in the list of users.
Steps to Reproduce
Transfer a guild and then request the most recent audit log entry (exactly 1, so that we're sure we're only looking at the user map for that entry):
curl 'https://discord.com/api/v9/guilds//audit-logs?limit=1' -H 'autho...
0e0e579 rename START_EMBEDDED_ACTIVITIES to USE_EMBEDDE... - afgiel
Especially because the likelihood of these developers being paid for their contributions is very low.
What if discord paid developers to develop official libraries for them?
@mrxbox98 I'm pretty sure that the typo is intended to demonstrate autocomplete for a user that is still typ
Are we still on track for this week?
Description
For only some select Discord users, our bot is consistently getting name and not value for selected auto-complete params of all of our slash commands. This seems like a new issue we've not seen with our bot before (first noticed by us Feb 18th). Majority of our users don't seem to be affected, but those who are affected are experiencing the issue on all Discord clients they tried using (Chrome, Mac app, etc). We're suspecting some experimental Discord feature/version havi...
@vkuts Thanks for the report!
Couple questions:
- Could you also share the payload you're using to create the slash command?
- Are those example autocomplete responses very similar to what your bot is sending when encountering this error? If not, could we see real examples?
Oh also, what version of the app are you on?
fbbc9ab update copy with "use" and capital-A Activities - afgiel
What's the update for this?
Hey, @yonilerner thanks for a prompt reply. We deploy several commands with auto-complete. Here's an example of the payload for one of them:
{
"type": 2,
"name": "attest",
"description": "Create a Verifiable Credential to attest to your Sobol contributions.",
"options": [
{
"type": 1,
"name": "membership",
"description": "Attest Discord roles that are mapped to Sobol Team Members",
"option...
@vkuts More useful than that app version is actually the web bundle of the app. When you open settings in the desktop app for example, you can see:
<img width="196" alt="image" src="https://user-images.githubusercontent.com/278810/155240950-31c73599-6a3a-4a00-a719-eaa4a7c0c3bc.png">
For context, the "Canary 115873 (da9ef5e)" part means "web build #115873 for commit hash da9ef5e", and that web build is more related to this functionality.
Anyway, the reason this might not be reproducible...
Ok, sweet! If the fix went out sometime late on Fri, that would match our timeline. Can we expect that the issue is completely gone for the web version of Discord app?
We'll advise any of our users experiencing the issue to update their desktop app versions.
Thanks for the swift fix on this issue ๐ I'll reopen or create another ticket if we find new ways to reproduce.
From a stage event awhile ago, custom statuses are still planned, but awaiting backend changes.
(this could be a good workaround but I get the feeling they're opposed to it)
@discord staff
if you need help building this reach out to www.madewithcards.io :)
this neeeeeeds to happen!!!
This is (mostly) implemented to the tune of modals. Its not inline and doesn't support selects yet, but its there!
Description
When responding to an interaction with an ephemeral message (in a guild channel), you will get a MESSAGE_CREATE event with a missing guild_id. This already seems strange, however it gets even weirder. If you disable the GUILD_MESSAGES intent and only enable DIRECT_MESSAGES intent, you STILL get these events as if they were actually a direct message. Do the opposite and only have GUILD_MESSAGES enabled, and you will not receive them at all.
It seems as if the API ...
Right now you cant send a modal from a modal but if you could it could let you do multi page forms, authentication, ways to get more than 5 fields worth of text, resending a form if one of the text fields were invalid. Having it only send if submit was clicked also stop people from making an infinite loop of modals.
Add a way to use the autocomplete used in slash command options in modals.
Same issue seems to happen on MESSAGE_UPDATE events as well.
Multi-page modals are planned. However, you still won't be able to respond to MODAL_SUBMIT with another modal
Responding to a modal with another modal as a confirmation prompt, makes far more sense than responding to it with an ephemeral message that might not even show up due to being scrolled too far up.
Unfortunately, the current limitations of modals do not allow them to be used to confirm anything. First, we cannot use modals without text inputs. Secondly, in the modal itself we can only put text in the title. The other customizable text fields are associated with text inputs.
I think it would be nice to have something like description field. It would also be nice to create modals without text inputs

Submission modal/interaction to prevent invoking something by miss clicking

Useful for actions like resetting configuration or running something that invokes all members
Currently, pinning a message returns a 204. It should return the system message, or even just the ID, allowing us to delete the message if we want.
Otherwise, we'd need to listen to new messages (something not possible after April), then detect if it's the "pinned" message.
Unless there's another way to retrieve the resulting system message, I'm out of ideas.
Otherwise, we'd need to listen to new messages (something not possible after April)
It will still possible after april, you don't need the intent to know a message was sent and its type, you only need it to access content-related properties
Ah that will be useful then, since the content doesn't matter, still an extra step tho :(
I don't see this happening, but fwiw you don't need to see message content in order to identify a pinned message. the type field on the message will be set accordingly, as with all system messages.
I tested some parts of the API documentation up to the actual API. I guess you could say I ejected the parts that were wrong.
You know what would be useful?
- Autogenerated API documentation so it's right.
- Sandbox servers so library developers can test e.g. stickers without spending money or using an active server for their needs :)
The option to return our own error messages would be great
Here is an idea for improvements on your Zapier actions:
FIND USER only matches the Discord username.
It should match the email address as well.
When trying to match the user across systems, usually the email address will be the common denominator.
An external system will not have a field for the Discord Username unless it was tailored to have this, whereas the email is pretty much a given.
USER ADDED IN DISCORD
Currently it does not return the email address. If this field is a...
move question mark from the wrong column.
Description
On Discord OAuth2 (https://discord.com/api/oauth2/authorize?client_id=clientid&scope=bot) renders a html page after redirect, in network tab on chrome dev tools, there is a response from exact url that redirects, with info about the bot and application. Maybe I'am doing something wrong? I'm using Insomnia newest version.
Steps to Reproduce
To be honest, I have no idea :/
Expected Behavior
It should response with valid info, like approximate guild count, bot name, ...
that route is not a json api. valid api routes are documented here: https://discord.com/developers/docs/topics/oauth2
I'm still facing this problem in the API, receiving 404 with Unknown Entitlement. It seems that the user is not found.
<img width="971" alt="image" src="https://user-images.githubusercontent.com/3102127/155575023-5420648a-5c50-418e-b8dd-eb4cf77552b9.png">
I have no idea of what code 10029 means, and altought it is listed, it does not help me... Anyone has any clue of what this means?
Currently, context menu command messages show the command name and application, but no information about the target. Slash command messages show arguments when clicked, but unfortunately, this is not supported for context menus.
Here are mockups I made during the beta period that shows how target display could be implemented:
User commands:

Message commands:
, but the application commands fail to be created in the guild.
Steps to Reproduce
I do not have a consistent reproduct...
I changed it so it now only pings 10 users everytime it edits the message, and it works now. I think it didn't work previously due to some kinda spam protection. It might be helpful to add a specific error message in order to make debugging for other users easier.
Should we open a PR to just remove that from the documentation?
The situation appears to be Discord randomly deciding to no longer verify bots that support activities and rejecting verification requests with false statements; it definitely does not violate the ToS. There's no reason to remove documentation, they should just either stop rejecting the verification applications or provide a valid and true reason for doing so (so far, I haven't seen an actual explanation).
discord.js v13.6.0, the issue still persists
I've updated my branch, can this PR be reopened or should I create a new one?
In https://github.com/discord/discord-api-docs/issues/2164#issuecomment-742121097 it was mentioned this was a possibility.
This would mean that messages sent by application owned webhooks would be editable by the bot user (PATCH and DELETE on /channels/{channel.id}/messages/{message.id}.
Currently messages sent by webhook can only be edited by that webhook. This means that in order to edit a message the webhook that was used to send the message can't be deleted, which could happ...
Those drafts are actually quite stable. Very few things have changed since GNAP's initial ancestor, XYZ. No unstable names and the like.
[discord/discord-api-docs] New review comment on pull request #3948: Document animated guild banners
is "image" necessary? since it can be a gif, also to be standardized with the one below (ANIMATED_ICON)
> Attempting to omit the `COMMUNITY` feature when it was previously present will fail, unless the bot has `ADMINIATRATOR` permission. Attempting to add this feature when it was not present beforehand, will also fail for the same reason.
Would make more sense as either "has ADMINISTRATOR" or "has the ADMINISTRATOR permission" I think
Could also shorten it and include a reference (not yet including any permission wording changes):
> Attempting to add or remove the `COMMUNITY` [guild feature](#DOCS_RESOURCES_GUILD/guild-object-guild-features) will fail unless the bot has `ADMINISTRATOR` permission.
Description
It would be nice if there was a form component for sending multiple component inputs in a single payload. The way I envision this working would be to have a Form component that works similarly to the Action Row, where it has a component field that holds other components. When a user presses a button or makes a selection with a Select component or uses any other future component, instead of immediately sending a payload to the application, it would wait until a "Submit" button...
This is (mostly) implemented to the tune of modals. Its not inline and doesn't support selects yet, but its there!
Group Direct Message channels can have a nullable name, which is exposed to bots via fetching an invite that goes to a group DM.
Description
https://discord.com/developers/docs/resources/channel#channel-object-channel-structure

Users provided in the array should have all non-optional data.
Steps to Reproduce
- Fetch an invite to a group dm channel
Expected Behavior
The recipients array has full user objects
Current Behavior
A very minimal recipients array with only usernames
S...
I'm a bit confused, this is quite inconsistent with the rest of the API. It would be very helpful to not require providing keys that we don't want to change.
Description
The guild scheduled event is not sent with the guild object if the attached voice or stage channel is not viewable to the bot. While this is fine in theory, this causes issues when the permissions of the channel changes to be viewable by the bot again.
Steps to Reproduce
- Create guild scheduled event with voice or stage channel attached
- Deny view channel permission in voice or stage channel for the bot
- Start bot, create guild object -> guild scheduled event is...
Currently, you cannot edit message flags with webhooks and by extension the interaction endpoints or through an UPDATE_MESSAGE interaction response.
This means interactions aren't able to edit the SUPPRESS_EMBEDS flag on their own responses without the use of a bot token via the message edit endpoint.
Supporting flag editing here would make the edit endpoints consistent across the platform.
At this point, this problem has inverted itself, and I always receive message content on one of my bots over the HTTP API even if I have the intent off in the dev portal. I am using HTTP API v10.
I'm guessing this to be interpreted as a "Bots cannot use this endpoint" response instead of generic "Missing Access"?
(Fetching /discoverable-guilds)

The ability to edit ephemeral followups was removed about a day ago
So what is the long term plan for ephemeral followups? Will they never support getting, editing and deleting?
And does the same apply for ephemeral original responses?
Original responses support getting and editing, just not deleting unfortunately
The ability to edit ephemeral followups was removed about a day ago
And what was the reason for this?
It seems like they were refactored over the past day and this ability was lost during that refactor.
Do any of of these endpoints support the X-Audit-Log-Reason header?
They don't seem to add audit log events.
Description
When logging in on the dev portal, it redirects to the web app, instead of back to the dev portal.
Additionally, going to the Discord web app or dev portal urls with devtools open makes it log you out for some reason, so it is impossible to get into the dev portal with devtools open (ironic.)
Steps to Reproduce
- Go to the dev portal, either logged out or with devtools open
- Log in on the login page with the Discord Developer background
Expected Behavior
...
This endpoint no longer exists on v10.
https://discord.com/api/v10/guilds/{guild.id}/discovery-categories/{category.id}
On v9, this endpoint works fine, but on v10, it 404s.
Added discovery requirements documentation (staff - please verify that it's all correct before merging)
This endpoint no longer exists on v10.
https://discord.com/api/v10/guilds/{guild.id}/discovery-categories/{category.id}
Cannot reproduce, it works fine for me
this should be PUT, as POST is not supported on api v10 and up
This seems to be the issue sometimes.
Can't reproduce but I suspect it's related to copying the command and editing it after
ah I didn't notice that, updated - looks like it also 204s now on both PUT and pre-v10 POST
when is it possible for guild_id to not be provided?
when the server is verified only sufficient and sufficient_without_grace_period are returned; idk if there are other cases
Hi guys my name is Breeze, I'm a profissional Streamer and I just got my server Verified on Discord!
I'm creating my community on Discord and starting to learn discord.js too :)
I wanted to know if it would be possible to add Emojis in the .setAuthor of a Embed. This would be so fun!
Here are some photos of the emojis not working in the API ;-;
I love the Discord Community!
Best regards, @breezefps :)
Photo 1: https://media.discordapp.net/attachments/612642752236355604/9473298...
Just to clarify, you want the name author on the embed author structure to support custom emojis such that the Discord client renders them correctly?
Because you phrased your request as if it was about specifically the discord.js .setAuthor method not supporting emojis rather than the Discord client, I also want to point out that this repository is for discussion relating to the actual Discord ...
That's not a discord.js problem, I talked with them in their Discord Server.
You can't use custom emojis in the name of an embed author, but you can in a title.
{
"embeds": [
{
"title": ""
}
]
}
In a title u can use emojis but will not be the same because It will not have the server icon before it, a thing that just .setAuthor has ;-;
Currently, when a user or guild changes its avatar/icon, all embeds that use the previous URL either turn into poop or just show as blank on the client. It'd be super useful if there was CDN endpoint or something for them to always show the current one since it looks ugly and using a certain version often doesn't matter.
I know it's not a discord.js problem, which was why I was pointing out that you shouldn't ask for the discord.js setAuthor method to accept emojis but instead for the Discord API to support emojis in author names.
This issue still exist on Canary 116506 (5e71dd7) OS X 10.15.7 64-Bit
Description
options: [] in edit guild command endpoint doesn't clear options.
The endpoint returns application command without options but in "get guild command" endpoint it does.
Steps to Reproduce
- Create command without options
- Edit guild command, send options with any option
- Edit guild command, send empty options array (returned data shows it's gone)
- Get guild command again (returned data shows it's still there, discord client also shows that (sometimes, mayb...
The route mentioned is the same route used to delete human users, however, the human users have to supply the password as a confirmation, that bots naturally cannot, as they lack it.
What's the use case to allow bots to delete themselves?
Deleting a bot is a very sensitive action, that cannot AFAIK be reverted. This could be easily abused if a bot's token is accidentally leaked.
This should only be allowed from the bot's owner account with all necessary checks (re-entering password, 2FA, etc.).
On another end, I may see a use case to a disable-like endpoint that actually revokes all active tokens (like what was suggested in #3213), eg. to automatically revoke the...
If you want to delete a bot account it can be done via the developer portal. It makes absolutely no sense to expose this functionality to bots.
If you want to delete a bot account it can be done via the developer portal. It makes absolutely no sense to expose this functionality to bots.


](