Just following up: does this issue appear resolved for you?
#github-notifications
1 messages · Page 37 of 1
Description
As of recently the bot invites that request the REQUEST_TO_SPEAK (1 << 32) permission return an Invalid permission(s) provided error.
Steps to Reproduce
- Acquire bot invite
- Provide
4294967296(just theREQUEST_TO_SPEAKpermission) - Receive error
- Provide different permission, e.g.
2147483648(just theUSE_APPLICATION_COMMANDSpermission) - Receive no error
Expected Behavior
REQUEST_TO_SPEAK is considered a valid permission with no error...
Bots can use every permisson, you cant set overrides without first having that permission yourself
and yes bots can actually request to speak
[discord-api-docs] New discussion #4729: Message Content Deprecation New Deadline \- August 31, 2022
Hey everyone,
Last summer, we shared a big announcement: on April 31, 2022, Message Content would become a Privileged Intent.
This change was for only verified apps, and it meant that over the following nine months, developers would need to migrate to our new best practices on commands (i.e. use Slash Commands, or request and be approved for the Message Intent). This was and still is a significant change for many of you, and one you’ve told us you were anxious about. With that in m...
we have shipped permission validation for guilds on permissions v2
Description
If you have an interaction with buttons and a select menu, and you click a button, while all the buttons will be in a disabled state, the dropdown can still be opened, modified, and submitted.
I've encountered some race condition-y things because of this unexpected behaviour.
Steps to Reproduce
- Create a message with at least one button component and one select component.
- Click on a button. The buttons should all be in a disabled state while waiting for the int...
Description
Slash command arguments with autocompletion set are broken in a couple of ways:
- If you type anything in them they often get stuck loading forever. This can be "fixed" by backspacing back to being empty. They sometimes work after a very long delay (10+ seconds)
- The iOS client sends an autocomplete request to the bot every 500ms no matter what while in the autocomplete field. This happens when the field is empty as well as when it is partially filled
Steps to Rep...
We discussed this internally, we're going to call this a bug for now. Of course you will still be able to work around it by putting the translated string in name. In the future we want to support passing a localization dictionary, for quality-of-life. Closing the PR as such.
Description
If you attempt to execute a webhook / patch a webhook message and have an invalid payload_json (for instance you dropped a quote) the API doesn't reject the message but attempts to send it anyways (if you attach a file too it will send just the file)
Steps to Reproduce
- Grab a webhook
- Attempt to POST to it with form data, and an invalid
payload_json({ "content": hi" }) (same steps apply for PATCH) - Optionally attach a file
- Observe
Expected Behav...
Description
A recent hidden change in API behavior has led to the flags field no longer being sent with the user object. From my understanding, the flags field is for OAuth, while not explicitly stated on the docs.
An expected solution is to either update docs detailing when the field will be sent, or start providing the flags field again.
Steps to Reproduce
BOT_TOKEN= curl -H "Authorization: Bot $BOT_TOKEN" https://discord.com/api/v10/users/735620710948405248
...
You are sadly mistaken. /users/@me returns flags but /users/:id only returns a user's public_flags. public_flags were added to the basic user object around 2 years ago, but prior to that no flags or public_flags were returned from this endpoint.
1df2c6e fixes small typo in the guild bans pagination note - night
this will be fixed in the next api deploy
The default behavior in guilds is that Request to Speak is accessible. It does not appear that we allow configuration of Request to Speak on the guild level in our apps. Because of this, I do not see us allowing it for for bot role either.
That would've been at the same time as the deprecation which is now being moved, hence this question
Application Command Option type 11 aka Attachment has already been released https://discord.com/developers/docs/interactions/application-commands#application-command-object-application-command-option-type
Description
When looking at the formatting reference for message, I noticed that there seemed to be a difference between mentioning users with an exclamation mark () and without the exclamation mark (), where mentioning a user without the exclamation mark seemed like it would display the username and not the guild member's nickname. This is not the case, and both give the same result, hence the description is misleading.
Steps to Reproduce
Can reproduce. Any platform, any Discord branch :-)
@night thanks a lot, this seems to be deployed, however the error message is not consistent with other error bodies
{
"payload_json": [
"Expected \"payload_json\" to be a valid JSON string."
]
}
Should I open a new issue about this? 😅
@night, this wasn't fixed.
After reviewing the server nicknames implementation it appears this is not a client markdown implementation, but rather a flag for the server to consume. I'm looking into if this is expected behavior, and if so we can update the documentation to properly reflect its function.
It appears that Android follows the behaviour of omitting the !
After speaking with our product team we've already transitioned away from using ! as a hint. The next client update will remove client support for sending !, and I've gone ahead and undocumented the syntax.
What about older messages that still use the older syntax or bots that explicitly use the older syntax? Wouldn't a note be better just to say that it can optionally include a ! after the @?
Understood. Now the default version is 6!
This version will be always the default? Or will be changed in the future?
Adding v10 api to list
Hi,
Thanks for the contribution however, when API v10 is officially ready for use, it will be added to the list and announced in a more formal manner. As such, I'm going to close this PR pending that time.
See #4512 for more details, which is essentially this exact same PR.
Adding more Community Resources(Webhook Sender)
This is part of an experiment and has not stabilized in any way.
"Default" just means that version will be chosen when you don't explicitly specify a version in your URLs. The default version does and will change. They actually initially planned to disable v6 and v7 at the end of this month. Ideally, you should always use the latest version documented, and regularly update your code to reflect new and decommissioned API versions.
I really need this to remove deleted users data from my database, we need a way to delete data from deleted users.
@jgoldshlag sorry we can't repro on latest version, can you retry and see if it works?
I am on the latest version on the app store, and yes, it is still happening. The command does have 2 required autocomplete options, that may be part of the issue?
OK, did some more testing. The issue is when you take some time to return autocomplete results. If I take a test command and sleep for 200ms before returning a list of results, I can reproduce the issue. If I change the sleep to 100ms, it works fine.
Oh, and it doesn't matter if you have 2 autocomplete options or just one, it seems to just be based on the sleep time
None is inconsistent with other flags.
Description
As of about 2 days ago, I started having issues registering commands with one particular guild, ID 349243932447604736 (the only guild my bot registers commands in). Not sure if it's related but this is a partnered server, maybe a new feature got rolled out to it early and that's causing this.
The issue is: when registering my commands, at first the bot will get ratelimited for about 55 seconds: (m:'http', l:469) We are being rate limited. Retrying in 51.08 seconds.. Pl...
Still no1 cares, or?
Have the same struggle to get a realtimefeed into one of my crypto trading channels, but this limits are totaly insane for this, more restrictive then mother russia.
When a user is updated (eg. username or avatar), a GUILD_MEMBER_UPDATE is dispatched, as said by the docs.
However, the docs also indicate that a PRESENCE_UPDATE is triggered, which doesn't seem to be the case anymore.
I've updated the description of PRESENCE_UPDATE to remove this information.
Additionally, I clarified that the USER_UPDATE event is dispatched only for updates to the current bot's user (this event isn't fired when other users are updated).
We should have a way to confirm an interaction with webhooks
Example: Using "systems" to talk with other members using webhooks for different "users" for example, poeple with dissociative disorder
Or in other cases for roleplaying
The interaction would be confirmed using a webhook request, It's annoying to need to manually dismiss an ephemeral interaction or using a non-ephemeral interaction, due to network fluctuation, some people may see the bot reply to the interaction before it get...
Adding on top of this, it'd also be great if the "/command used by" could be made only visible to the user who invoked it. Would be great for announcement channels etc.
However, the docs also indicate that a PRESENCE_UPDATE is triggered, which doesn't seem to be the case anymore.
this is probably a bug
Description
If I have a select with:
— A
— B
— C
In which I first select B, then A, then C, in the client it'll show A, B, C (aka the order in which they appear in the dropdown) as the selected options in that order, yet my bot receives B, A, C
I find this to be unclear for the user to the point where it confused even me, the developer of the bot
Steps to Reproduce
— Create a multi-option select along with a functional bot that just receives and logs the order in which the bot...
It would be a neat idea to have input components for modals that only accept numbers as input.

Possible solutions
- Have a new text input component type that would accept only numbers as input and would ignore non-numeric character input (similar to INTEGER [Application Command Option Type](https://discord.com/developers/docs/interactions/application-commands#applicatio...
Context Menus should be on Mobile. Why is there no support a year after it was already introduced to desktop/web?
It's not a priority™ but it will happen soon™
Invite objects have a type property that can be used to differentiate guild invites (type = 0) from group DM invites (type = 1).
Bots can be exposed to group DM invites when they are posted/provided by users.
These were previously removed from a pr prior to being merged by night
Ok, I didn't find it before submitting this PR.
However, I'm wondering why this shouldn't be documented. It's a cleaner way to check the type of invite than checking if guild is null, and is less susceptible to break if another invite type is introduced in the future.
FRIEND also exists as type 2 (friend invites didn't ship but you can still come across them).
As friend invites didn't ship, I expect Discord to revoke them at some point. Specifically documenting these is likely not a good idea (nor going to be accepted); you should treat them as an unknown invite type.
Description
When setting bot permissions the button for saving doesn't appear and when attempting to change something else with it and saving it the bot permissions won't save.
Steps to Reproduce
I honestly have no idea why it happens, but i guess it's because the bot permissions part isn't set to be saveable like others but instead it's like changing in-between the pages. I don't even know if I'm not just speaking nonsense, I'm not good at this.
Expected Behavior
"Save chan...
If you're referring to the modal at the bottom of the Bot tag, it's a permission calculator so there is nothing to save, it just gives you the permission integer for the perms you selected
I spent a good number of hours trying to figure out why my access_token request wasn't working.... and I'm sure there are plenty of others who are encountering this issue.
I only figured it out because of this person's answer on StackOverflow: https://stackoverflow.com/a/70280164/12894626
I know this can be said that I made a noob mistake, but PLEASE explicitly state that the auth redirect_uri needs to be the same as the token redirect_uri otherwise it won't work!
Otherwise, people a...
This PR rewords the specification of redirect_uri at the code exchange in
the OAuth2 docs to clarify that it is shared between it and the authorization
URL.
Fixes #4748
[discord/discord-api-docs] Pull request opened: #4750 Add MESSAGE\_CONTENT intent to list of intents
With the transition deadline approaching, it would be nice to document what bits need to be set for this intent.
This intent flag does not exist in v9, which is the currently documented version. Staff will document v10 in the future.
Ah actually, you don't need to set this in the gateway identify payload from what I understand.
It is toggled in the application / developer settings and added as an application flag it seems?
https://discord.com/developers/docs/resources/application#application-object-application-flags
I'll leave this open for someone to confirm :)
You need to set it in identify only if you are using gateway v10.
imo send email every times a user get deleted is not efficient cuz if you maintain a large bot then your email would be flooded with discord notifications
will api v10 become the default at early 2023 or 30/04?
I would've said something like "one of your", because you can have multiple urls saved in the dev portal.
I don't see the point of an email, that's not really viable for automation if the usecase is to clear data for deleted accounts.. it could be a gateway event (or sent to the interaction endpoint url if set and the dev opted in) instead
cough https://github.com/discord/discord-api-docs/tree/main/images there are the images. Don't use cdn links.
I'll upload them in a second
On Mon, 4 Apr 2022, 13:34 Lala Sabathil, @.***> wrote:
cough https://github.com/discord/discord-api-docs/tree/main/images
there are the images. Don't use cdn links.—
Reply to this email directly, view it on GitHub
https://github.com/discord/discord-api-docs/pull/4751#issuecomment-1087498534,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ARHKMFKRIDYT3RTKY4OVUHDVDLOWHANCNFSM5SPIUFPA
.
You are receiving this becau...
Tbh I don't think you should replace them. Images are kinda branding stuff. It should be done by discord itself.
I think it falls under unwanted changes.
And the screenshots itself look more or less "unprofessional".
Adds Modal and Text Input image/example on message-components#text-inputs.
Hello. I'm using browser version of Discord and get the same error
{"code": 50035, "errors": {"application_ids": {"_errors": [{"code": "BASE_TYPE_REQUIRED", "message": "This field is required"}]}}, "message": "Invalid Form Body"}
I can't using voice chats, watching streams, I don't hear anyone.
I'm using chrome 100.0.4896.60 x64 Windows 11
That error has nothing todo with you not hearing any audio, all clients atm fetch that endpoint and don't provide an app id resulting in that error, but this repo isn't for client issues, you'll have to go to discords support site for those.
e3921e1 note existence of deprecated user mention syntax - devsnek
Fixes a typo intoduced in this commit
4bcaa7d Document interaction.data.guild_id (#4754) - Rapptz
This is technically inaccurate. It is the redirect URI associated with an authorization. If the redirect URI is not specified during the authorization request, it uses the first URL registered for the application. In the token exchange, specifying the redirect URI is also optional.
We have not yet documented API v10. See https://github.com/discord/discord-api-docs/discussions/4510 for the v10 announcement.
This adds a community resource to interactions, but this tool does not look associated with interactions.
If this is occurring then it is likely a regression in behavior that only bots may rely on. Please open an issue with verbose reproduction steps and I can have our teams look into it.
Thanks for the PR, but the replacement screenshots do not contain the same aesthetic as the originals. The current screenshots also appear to remain accurate enough for the content they are currently describing.
I would've said something like "one of your", because you can have multiple urls saved in the dev portal.
@Lulalaby I wouldn't put this in because the discussion I referenced shows the redirect_uri has to be a specific one
This is technically inaccurate. It is the redirect URI associated with an authorization. If the redirect URI is not specified during the authorization request, it uses the first URL registered for the application. In the token exchange, specifying the redirect...
@night Could we get a response on this point?
I'm wondering why this shouldn't be documented. It's a cleaner way to check the type of invite than checking if
guildis null, and is less susceptible to break if another invite type is introduced in the future.
If Discord has a reason for not wanting us to use it, I'd prefer to know it :smiley:
I'm probably not the only one tempted to use it when seeing this field.
Description
Example of a access token response:
{"access_token":"HIDDEN","expires_in":604800,"refresh_token":"HIDDEN","scope":"identify guilds.join email","token_type":"Bearer","expireTimestamp":1649716649003,"iat":1649111859}
Also if possible can someone tell me what's iat?
Steps to Reproduce
Generate a access token response:
https://discord.com/developers/docs/topics/oauth2
Expected Behavior
To be the something different and not always 604800 ?
Curre...
To quote the documentation you linked in your issue:
expires_inis how long, in seconds, until the returned access token expires, allowing you to anticipate the expiration and refresh the token.
When you authenticate an app, the expiration starts off at 604800 seconds, which is 7 days.
Description
The STAGE_INSTANCE_DELETE gateway event is fired twice.
Steps to Reproduce
- Create a Scheduled Event.
- Start the event.
- End the event.
Expected Behavior
STAGE_INSTANCE_DELETE should only be sent once.
Current Behavior
STAGE_INSTANCE_DELETE is sent twice.
Screenshots/Videos
https://github.com/discordjs/discord.js/issues/7737#issuecomment-1086610975
Client and System Information
N/A
That explains why the count shows up as approx lol
While Discord is trying to kill bot lists, you're suggesting ways to help them lol
It seems the api part has been already created by the discord team. But it is user scoped only, thus making it impossible for bots to view this non-personal data.
(/api/oauth2/authorize?client_id=${bot.id}&scope=bot)
If and only if discord could make this available to everyone...
This endpoint also provides additional bot information such as tags, description too.
But it also provides all the guilds the user is in, in the response, so discord team please don't add the guilds array for b...
This PR removes a reference in the intro section that mentions the ability to sell 3rd-party games within Discord.
To preface this discussion/request, please consider this request from the perspective of a bot that does not connect to the gateway, and thus does not have a persistent and always-up-to-date cache of all of the guilds, channels, etc it is in.
Description
An endpoint for getting resolved permissions, such as GET /channels/{channel.id}/permissions/ that would return an array of resolved permissions for the provided channel (or guild) for the self user, similar to how the `permission...
I would like to see extensions on both of your ideas:
- Support all existing application command option types (INTEGER, NUMBER, CHANNEL, ROLE, etc) other than SUB_COMMAND and SUB_COMMAND_GROUP (as those don't really make sense for Modals)
- Add "REGEX" to the existing application command option types, which would be a String value with regex validation
Reactions are very finicky, sometimes failing to load or display on larger guilds, and occasionally failing to work entirely. If you currently use reactions for a system by which users provide input on a bot-produced message, it would probably be worth re-writing your system to use a button and store the timestamps of the interaction.
I think #3310 would be a better solution to this issue, since it doesn't require an additional HTTP request (iirc Discord does not like bots making one request to see if they can make another request, which is why there is no endpoint to check if you can DM a user)
user, role, mentionable, and channel select menus are currently in testing for messages and will also be added to modals
pretty sure they don't want clients running arbitrary regexes
There are regex engines without catastrophic backtracking or similar "reddos" issues and would be safe for a client to run. See re2 for example, which operates in linear time. Knowing this I can't see why it wouldn't be provided.
9bcff53 oauth2: clarify redirect_uri needs to be same a... - splatterxl
This is a WIP draft that adds a basic guide to help new developers get started with Discord development. While other tutorials will be added in the future, this one is specifically focused on slash commands and message components, and purposefully doesn't cover anything related to gateways.
Resources it depends on:
- Glitch project
- Github repo with code - would like to move th...
That would also be useful, it would need to include the guild and channel permissions, and ideally also the bot's permissions (not just the user's) in any resolved channels.
The other reason I am suggesting this endpoint is for actions that may happen at some time later than the interaction, at which point the permissions may have changed.
Google Forms supports regex and it seems to work fairly well; I don't know what their implementation is specifically, but that's at minimum an indication that arbitrary client-side regex is viable.
Hey @ooliver1 , just wondering if this is still an issue? I am unable to reproduce this anymore:

The API docs were not consistent with their use of backticks and single quotes. For example, with permissions, some said 'MANAGE_MESSAGES' while others said MANAGE_MESSAGES. This PR makes them all use backticks, in addition to switching to backticks when referencing parameter names or specific string values.
already
They were added 6 months after I originally posted this thread.
Bots don't need the Use Application Commands permission, it only affects users. Since this is a guide aimed at new devs, it's probably better not to request that permission as bots typically don't need it (unless they happen to need to set permission overrides but this isn't the case here)
Send Messages isn't needed too. A bot can reply to a slash command without Send Messages permissions.
Yeah, this sounds good. After all buttons got added to replace those buggy emojis. You can just safe timestamp of all moments when somebody trigger interaction. Only downside to this idea is that button interaction stays "listening" for first 15 minutes and then stops responding. For most things it should be ok but some mechanisms may want to "listen" for longer time than this.
no, buttons don't expire
Having the same issue, was working yesterday for me. I’m registering only 3 commands
Here is the part of the code that registers the commands: https://haste.churton.uk/ugiyifiwaq.js
Also tried doing a PUT request my self with https://haste.churton.uk/yewoqalede.json as the JSON body, got https://haste.churton.uk/jufowazofo.json as the error and kept getting rate limited after just 1 request.
As stated, buttons don't expire after 15 minutes, interaction tokens do. A user clicking a button creates a brand-new interaction (with its own token) every time.
Also to clarify what I said in my original message, the biggest limitation of this system is if you need the reaction/button on a message that the bot didn't send, as bots can't add buttons to other users' messages.
Note: We are documenting forums in two phases. Today is phase 1 contianing the things that are least likely to change, and are easy to implement, and will provide the most value if implemented early. We'll followup in the future with full documentation at a future time.
Maybe link to the other endpoint here for easier discovery
- **[discord-interactions](https://github.com/discord/discord-interactions-js)**, an npm package which provides types and helper functions for Discord apps.
npm isnt capitalized
const userId = req.body.member.user.id;
// User's object choice
const objectName = req.body.data.options[0].value;
type: InteractionResponseType.CHANNEL_MESSAGE_WITH_SOURCE,
data: {
// Fetches a random emoji to send from a helper function
content: `Rock papers scissors challenge from <@${userId}>`,
components: [{
type: ComponentType.ACTION,
components: [{
type: ComponentType.BUTTON,
// Append the game ID to use later on
custom_id: `accept_b...
type: InteractionResponseType.CHANNEL_MESSAGE_WITH_SOURCE,
data: {
// Fetches a random emoji to send from a helper function
content: `hello world ${getRandomEmoji()}`
Closing for now as it seems like it has been resolved.
Is there a reason this is in the docs? I mean why not a blog post or support post like everything else? Half of the topics that are relevant to bots and such end up in blog posts and support posts example verification guides and stuff. Maybe I am just weird but this feels outa place to the docs to me.
These are intended to JSON payloads, which use double quotes around key and value
@Skillz4Killz We get pretty consistent feedback from devs saying that it can be difficult to find education resources other than documentation (especially when first starting to develop for Discord) so we want to make sure this is really discoverable in the place they're already building their bot 😄
The wording here is not clear here. Is it supposed to say 'first message in threads created in a forum channel'?
Yeah it's referring to a thread in a forum channel, you cannot send messages in the forum channel directly.
This phrasing makes it seem like you don't need to specify type 11 when using this endpoint or that you can't have private threads in a forum. Unfortunately not passing type leads to a 50024 error. I'm unsure if that's a bug.
Pretty sure this endpoint is broken atm, if you do include the type field, it will ignore the message data, and if you don't it'll give you an error.
@msciotti You forgot to answer this question.

typo :P
why does it take to teams page? isn't it saying about create a new server?
We are attempting to do that here: https://github.com/switchupcb/discord-api-spec
However, it would be way easier for Discord to provide this from their source (as discussed above).
Hello 👋
Problem: Users try to use certain commands but don't realize they lack the necessary permissions to do it or that the bot lacks the permissions to do it.
Request:
{
invoker_permissions: "8",
bot_permissions: "4",
bot_channel_permissions: {
"1234 channel id": "280640",
}
}
- The user(invoker) of the command needs x permissions to use the command.
- The bot requires Y permissions to use the command.
- The bot requires z permissions on...
ahhhh I'm not sure how that got in there, thank you 👀
Complete nit - but I believe undici is getting pulled into node core "soon", so we should have a baked in fetch feature in node in upcoming versions. Could we start with undici or node-fetch to follow that pattern?
We probably don't need the double quotes around all of the property names here
I have some concerns over using the dotenv approach to storing secrets. Invariably, people will check these things into source control, or push them to production where they end up getting otherwise exposed. I like the simplicity, but it's worth asking if we should consider another approach to storing secrets for development.
As part of landing this PR, can we get this repository moved to the official Discord GitHub Organization? I'm not entirely sure how that works 😆
When the error is logged here, will it provide a full callstack? I can't remember what printing an err like this does exactly 😆
it will not. i would recommend console.error('Error sending message:', err) instead.
Cue "Axios considered harmful"
superfluous returns here and below?
This is one of those fun, but rare, times where the docs are ahead of the code lol.
Route isn't live yet, and I'll need to migrate our callers over to it gracefully, so for at least a month, our clients will have to opt-in to the new behavior, and then once updates are fully available everywhere I'll switch the new behavior to be the default for forums and remove the old one.
Hey @dukeofsussex, I was unable to reproduce this issue. This may have been fixed alongside some recent changes. Let us know if it's still an issue!
This isn't feasible to implement on the command structure as the list of channels that you need x permissions in will undoubtably change every time, and it is an ever growing list. If discord ever adds an error response type, then maybe missing permissions can be a reason with this payload
+1 on this, handling a raw fetch request is a little bit more involved though, so I'd highly suggest using @discordjs/rest (free ratelimit handling too!, which should definitely be considered in a getting started guide).
Not a bug but not exactly as designed either. The docs explicitly say there is no guarantee that an event will be reported exactly once.
Discord operates at a scale where true consistency is impossible. Because of this, lots of operations in our API and in-between our services are eventually consistent. Due to this, client actions can never be serialized and may be executed in any order (if executed at all). Along with these constraints, events in Discord may:
- Never be sent to a client
- Be sent exa...
@khp sorry i wasnt able to check, yeah it seems to have been resolved for what seems to be the 3rd time this issue has cropped up
Does glitch consistently cold start within 3 seconds on a free plan?
node-fetch v3 does not support commonjs, it's esm only.
Description
It seems that if a guild has more than 50 integrations some will be "hidden", the /integrations endpoint will only return 50, resulting in not only missing integrations from the UI in the client, but the integrations that arnt lucky enough to make it part of the 50, cannot use perms which they gain through their integration roles
Steps to Reproduce
Add 51 bots to a server each with roles
Find the 1 bot that doesnt get listed on the integrations page/endpoint
Attempt t...
This seems... a bit strange. "Approval" kind of implies official-ness IMO, that Discord itself needs to grant it
"Permissions" is being used for two meanings here, scopes and role permissions, which makes it a bit confusing for newer devs
Not to be that one guy, but is there a specific reasoning for using node-fetch and not undici fetch?
Isn't it ignored in .gitignore?
Could we add a note here not to add credentials to source control?
Authorization sounds better.
Left a comment regarding a minor mistake with fetch on the sample repo. TLDR fetch doesn't throw on non 2xx responses
Yeah, there's a note earlier in the guide but adding another here isn't a bad idea
Deferring is not always an option though. My bot uses a cloud function to lookup some data. If the lookup is successful, the bot responds with the data.
If the user searches for something that returns an error, then I want the bot to respond with an ephemeral message telling the user their lookup parameter was invalid. But if the lookup takes more than three seconds, it causes the bot to crash.
I can't use defer because I don't want the server to get spammed with, "Invalid search param...
Description
Title describes it well.
Steps to Reproduce
Use https://discord.com/api/v9/users/{user.id}/profile?with_mutual_guilds=false&guild_id={guild.id}
Expected Behavior
User object is reported either within the user property, or guild_member.user property.
Current Behavior
User object is reported both within the user property, and guild_member.user property.
Screenshots/Videos
No response
Client and System Information
Reproducible with any c...
one question, why glitch?
glitch have shown to be negative towards the idea of running discord bots on their platform in the past especially on their free tier, is this something we want to officially encourage all new users to do?
why not repl? but mainly, why glitch?
Don't forget to make sure that <18 developers can't use this feature!
I'm not entirely sure if this is a joke or not, but even so it's possible to just set your age to 18+ or use another account which is registeredas 18+.
If you're using the Discord client, you really shouldn't be expecting bandwidth efficiency...
It'd be pretty hard to lie about your age here considering they would probably ask for verification of some kind. At the very least I can imagine that underage devs would get into a lot of trouble when it comes time to verify their bots to get past 100 servers.
It's generally speaking always a problem to verify someone's age.
I mean... The fact that you should be 13 or older to even make a Discord account is not stopping minors from creating one. After all is the only thing stopping them an "I agree to the Terms of Service and Privacy Policy" checkbox and maybe a captcha, but that's pretty much it.
The same applies to 18+ stuff. People can just fake their age on the internet. It's a sad problem existing since the birth of the internet itself and...
Well the concern here was that underage devs shouldn't have access to creating/marking NSFW commands, which can be mitigated with a verification system using official docs like the bot verification system. There's still ways around it, but it'd be one way to fix that concern, which was the point I was trying to make- it's pretty hard to fake your age when you need to show official docs to verify it. Not marking NSFW commands properly would also be an issue come verification time, if not an ...
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.
sadly. i think this feature is more important than they seem to think
Description
I think the ON_MEMBER_UPDATE event is handled slightly differently when a user sets their status to "invisible" manually rather than logging off. In some silly code I have, it appeared to fire twice. This allows for the possibility of determining whether someone is actually off-line or not, which I think is unintended.
Steps to Reproduce
- Have a bot listen for the
ON_MEMBER_UPDATEevent - Make it perform an action when a member goes off-line, such as creating ...
Handling video buffers won't be something easy and require a lot of effort outside. And it may also be a problem to handle a large number of buffers at the end of Discord. But not impossible though, maybe in future sometime.
It was missing in #3108 and #3126
Still waiting for this to happen... it's been about 3 years now haha
@night One of our subscribers opened up a ticket, and it looks like this issue is happening again.

What they are describing is what this issue looked like.

This is just what they sent me so I don't know if it is 100% exactly the same thing, but this still...
Description
I'm following the instructions to make a bot. I have made an app. When trying to add a bot, I see the following error in the UI: Username cannot contain "discord" (username)
This is a separate error from the error I see in the POST request to https://discord.com/api/v9/applications/APPLICATION_ID/bot. This error says that the request was malformed. The request just sent empty brackets in JSON. {}
Steps to Repr...
Your app name has discord in it
The error indicated is quite explicit, do not name your application with "discord" in the name, it is a logical rule which prohibits giving discord in the name of an application to prevent the latter from impersonating discord with users.
like we could whitelist a ip to use a token, and we can only send requests using that token in the whitelisted ips.
Description
The word "shifumi" which is a short for "rock paper scissors" in France, is counted as a bad word for the application directory.
Steps to Reproduce
- Create a slash command named "shifumi"
- Go in the "discovery status" page of the App Directory
- You see there is a cross at the "Your commands may not contain any harmful or bad language" line.
- Go in the "Product page" of the App Discovery
- Add "shifumi" in the long description
- You see there is a cross at ...
Okay, that fixed it, but the error is not explicit. It said the username not the app name was the problem.
In order to prevent this problem in the future for other developers, frontend authentication and backend authentication should be added to prevent developers from naming the app name anything with discord in it.
Rules on app names and bot names are different, app names cannot be certain things while bot names cannot contain certain words
Okay, that makes sense. But the problem is my bot username has always been valid, and the error was in the wrong place and with the wrong message.
I mean, Discord should give time for developers to migrate, and with such an essential feature lacking many will find it hard.
That's why the deadline was postponed
Description
When editing a message in a thread that thats a role or multiple roles that combined tag > 100 people, discord api times out and returns internal server error 500.
Is there any chance this can be loosened or changed to return its own error message at least. Now I have to edit the message multiple times to get to the same result either way.
Steps to Reproduce
Bot posts a message in a thread
Edit message to contain any role or multiple roles that combine to > 100 user...
I agree, this would be incredibly useful. Currently, there is no way for a Discord bot to know exactly how many messages each user sent in a server without iterating through the message history of every channel. It would be amazing if this count was exposed to the API, even if slightly inaccurate
Hello 👋
The 120/min rate limit is hardcoded but heartbeat intervals are not? Is there any reason for this or better yet is there anyway for me to make the 120/min dynamic so i can avoid anything being hardcoded. Could this be added to the hello payload?
Thank You
This list was compiled by myself as my bot received VOICE_SERVER_UPDATE packets on top of results from list voice regions endpoint. Some regions may be deprecated, not be included in this list, or have invalid names (as I literally cannot tell since not all are from list voice regions and as such, no way to receive real names). However, it is my firm belief that these should be documented similar to how Locales were just recently documented.
I can and will update my list as requested.
Aside from the fact that the name is in the name of the region, regions are much more dynamic than other lists on this page, so I don't think it would be appropriate to document them.
The current behavior for both users and bots is that when they join a voice channel, the region they are connecting to will either be the region the first connected user is in or, in some cases as I have been told, an automatically adjusted region which is somewhere in between all connected users. This works great for users, but bots are a different story as they are not constrained to 1 machine or region.
I believe it would be beneficial for users if bots could hint to the api/gateway wha...
And Discord can get the upper hand by allowing the most seamless bridge. Telegram bridged messages are horrendous.
If another chat platform (ie, Matrix) ends up supporting this natively - I would advertise that as the main for all my Discords instead.
And Discord can get the upper hand by allowing the most seamless bridge. Telegram bridged messages are horrendous.
If another chat platform (ie, Matrix) ends up supporting this natively - I would advertise that as the main for all my Discords instead.
Please add this!
PR #4749, which fixes this, has been merged.
Description
I have 4 bots created, all of them are currently in 1 server, got created the same day and all have only the limited message intent turned on (Flags 524288).
When making this request:
curl -H "Authorization: Bot ****" https://discord.com/api/v10/channels/963224728607272990/messages/963226571777380393
once with every bot token, 2 bots get the message content in the response, while the other 2 get an empty message content field.
Even weirder is that when I replace t...
Description
When calling Create Message (POST /channels/:channel_id/messages) with malformed data from incorrect encoding of attachments, the server returns 500 Internal Server Error instead of a 400 Bad Request response with the corresponding error.
Steps to Reproduce
- send a request to the endpoint with the following data:
----------------------------040047503040194731759086
Content-Disposition: form-data; name="files[0]"; filename="ping.json"
Content-Type: image/png...
Update to this, it has something to do with overwriting existing commands. I was trying to deploy a rewrite of a bot made in Pycord to a bot made in Discord.py. I suspect it might have to do with the old commands having role permissions and the new ones not having them.
Do you have the list of application ids exhibiting this behavior? The only identifiers provided have all been deleted.
Thanks for the report, but this endpoint is not usable or documented in our API documentation.
The integration limit does not affect role creation or bot permissions. Permission checking is performed by examining the roles a member has and then applying permissions in accordance to our documentation: https://discord.com/developers/docs/topics/permissions#permission-overwrites
Interesting, something else it wrong on my end then, Aside from this would it be possible to get the limit the rest API returns when fetching guild integrations, having some bots/apps absent from the UI in the client is weird.
Thanks for the report. It looks like it's because of fu. Changing this filter is likely not something we can do, but you could change your term to be ShiFuMe for the time being.
can you provide a curl sample we can test with? I am not able to reproduce any issues locally. If the issue is happening upstream (like in the HTTP layer) it is not likely we can return any error but a 500.
Do you have the list of application ids exhibiting this behavior? The only identifiers provided have all been deleted.
Message I'm trying to fetch:
[#963475828874834020 message](/guild/957370416068956210/channel/963475828874834020/)
Curl request:
curl -H "Authorization: Bot **" https://discord.com/api/v10/channels/963475828874834020/messages/963476012920881232
Bot IDs:
957370792553877525 -> not getting content
957370840163434516 -> not getting content
`95737090...
per this comment you may need to retoggle the intent in the portal.
per this comment you may need to retoggle the intent in the portal.
Did multiple times for all 4 applications! (Also confirmed the bot PATCH requests from the portal were sending correctly)
@night do you mean that a command /fun would trigger the filter because of fu? :thinking:
Thanks for the report. We are unable to reproduce any misbehavior with GUILD_MEMBER_UPDATE locally.
When changing from online to offline the server sends only a single PRESENCE_UPDATE for offline status. It is possible some bot in your server is updating the user's nickname or roles when their presence changes. You could examine the payload to see what changed specifically.
Thanks for the information. This appears to be a race condition issue. We will work on a fix and get reply back when it is resolved.
@bchurton the issue in your payload is a form validation error. This is fixed already in production:
{"code": 50035, "errors": {"options": {"1": {"_errors": [{"code": "APPLICATION_COMMAND_OPTIONS_REQUIRED_INVALID", "message": "Required options must be placed before non-required options"}]}}}, "message": "Invalid Form Body"}
@SlimShadyIAm If this issue still occurs, is there a minimum viable repro for a new bot (rather than updating existing commands)? As in, is there a single ...
At mobile it's possible to automatically stay in the autocomplete, even when a choice has been clicked. This can be used if the bot needs to suggest more options, like if we have a /docs command it could suggest the attributes of it for example.
I also don't think that both clients should behave different in this case, because it could limit developers when they have ideas of making autocompleted options.
My problem is that I don't get the choice before the user entered the command whe...
Hi - would it be possible to consider changing this filter? Ignoring the problems with applying a presumably English-based language filter on other languages, this blocks anything involving "kung fu".
(As an aside, the more common, derivative term "fubar" is not caught by this filter.)
when sending webhooks, you're required to use an avatar url.
Request is to have it similar to embeds, where you can use attachment:// instead to select an attachment as target.
We have role icons, why not channel icons.
I think you're asking in the wrong place for that sadly, since the API docs are mostly maintained by the Bots and Apps team. You should probably try and make a support ticket instead
I think you're asking in the wrong place for that sadly, since the API docs are mostly maintained by the Bots and Apps team. You should probably try and make a support ticket instead
It looks like the issue is resolved now.
cURL script:
curl -H "Authorization: Bot $DISCORD_TOKEN" \
-XPOST -F "files[0]={\"content\":\"pong\"}" -F "payload_json=@data.txt" \
https://discord.com/api/v10/channels/$CHANNEL_ID/messages
with data.txt being:
{"content":"pong","flags":0,"tts":false,"nonce":1649794889919,"embeds":null,"attachments":[{"options":{"data":"{ \"content\": \"pong\" }","name":"ping.json","description":"pong"},"name":"ping.json","data":{"type":"Buffe...
Whoops, that's wrong. Turns out I read the manpage wrong 😄.
Fixed reproduction script:
curl -H "Authorization: Bot $DISCORD_TOKEN" -i \
-XPOST -F "files[0]=@data.json" -F "payload_json=$(cat data.txt)" \
https://discord.com/api/v10/channels/$CHANNEL_ID/messages
data.txt is the same as before, data.json is just:
{
"content": "pong"
}
and this all returns
{"message": "500: Internal Server Error", "code": 0}
62c9a95 Move policies and agreements into folder (#4781) - shaydewael
Wouldn't this break a lot of links people would have saved?
This breaks discord.dev/legal and discord.dev/policy links.
i can up on this, ive had this same issue
App: 120.0 (31433) stable; Manifest: W/"faeaafb07f437adbee39d7f8ec401c01"; Build Override: N/A; Device: iPhone10,4 OS 15.1;
@jgoldshlag sorry we can't repro on latest version, can you retry and see if it works?
120 is the latest stable
I believe @infinitestory has landed the hairy fix
@splatterxl @Rapptz I set up redirects that'll deploy at the same time so old links will still work
@jgoldshlag sorry we can't repro on latest version, can you retry and see if it works?
@lsdimagine were my additional steps enough for you to reproduce the issue?
Thanks for the additional information. This will be fixed in the next API deploy.
@jgoldshlag sorry we can't repro on latest version, can you retry and see if it works?
120 is the latest stable
When I wrote my comment, 122 still has this issue
App: 122.0 (31608) stable; Manifest: N/A; Build Override: N/A; Device: iPhone10,4 OS 15.1;
Why not just call it "submit vote"?
Description
If you send an ephemeral message that contains an embed with images (from external URLs) in it, then edit the message to remove the embed before those images have been fetched (proxy_url, width, and height set), the embed will re-appear on the message once those images have loaded and the media proxy urls have been added.
Steps to Reproduce
- Create an interaction
- Respond with an ephemeral message containing external url(s) for images (easiest to reproduce if you set...
Hello 👋
Problem:
For example, if I wanted to make a feedback modal to request users send a bug report on a game and one of the questions in the modal was:
Original: What is your in-game player ID (found ingame on the bottom of Settings>General). This small but simple question is 80 characters and the max allowed is 45. That is almost 2x the allowed amount.
Attempt 2: Okay let's try and dumb down the question to make it less clear but hopefully most users can understand. `'In...
That's exactly what I did. After some thought, I realized that this option would be better
Any updates? This would be a really good addition, which would improve UX for my users drastically.
Description
When you defer a slash command and then send a followup, the SUPPRESS_EMBEDS flag is ignored for the followup message, resulting in embeds still being rendered. Additionally, deferring a slash command with the ephemeral flag and then sending a followup with the suppress embeds flag also doesn't suppress the embeds, only when both ephemeral and suppress embeds flags are provided.
Steps to Reproduce
- respond to a slash command with type
5(`DEFERRED_CHANNEL_MESSAGE_...
From the docs:
flagscan be set to64to mark the message as ephemeral, except when it is the first followup message to a deferred Interactions Response. In that case, theflagsfield will be ignored, and the ephemerality of the message will be determined by theflagsvalue in your original ACK.
Basically, you have to set flags when you're deferring the response, as it will be ...
IMO, the heading "Your Game With Discord" doesn't make sense. The original heading still makes sense because rich presence is displayed on Discord
IMO, the heading "Your Game With Discord" doesn't make sense. The original heading still makes sense because rich presence is displayed on Discord
Somehow I completely forgot rich presence was a thing 🙃.
Personally, I think it reads better as "with Discord" considering that Discord is used as an accompanying service by developers to further the experiences of their games.
To me, "on Discord" implies that your games can be "on" (inside of / accessible through) Discord.
To me, "on Discord" implies that your games can be "on" (inside of / accessible through) Discord.
I might be completely wrong here, but can't you make a Join Game / Spectate button natively in Discord? This constitutes as "accessible through" in my books ¯_(ツ)_/¯
How about "Your Game and Discord"
even with flags: 68 it renders the embeds. it's probably an oversight in the api.
I didn't say to make the response ephemeral. What I was referring to is that when you defer an interaction response, the flags field in the first followup message will be ignored, and you should set it on the original deferral instead. It's documented behavior.
I didn't say to make the response ephemeral. What I was referring to is that when you defer an interaction response, the
flagsfield in the first followup message will be ignored, and you should set it on the original deferral instead. It's documented behavior.
yes, that's what I did. try it yourself. the followup had no flags at all, while the interaction callback had both flags.
This is a change in wording semantics that isn't really related to removing the game sales reference. I'd recommend restoring it and moving this to a separate issue/PR.
Thanks for getting back to me on this, working fine now with the recent changes ❤️
When typing a slash command, it could be a cool idea to be able to see a preview of what the command's response would be. This would only display when all required arguments have a value provided and could function similarly to how autocomplete works.
Perhaps colour picker options can have the background of the option be the colour that you pick?
Adding ability to send and edit progress bar when deferring a reply would be a nice way to tell the user that the process is still going and the bot is still working.
When sending a deferred reply or editing it, you should be able to specify ending timestamp and/or progress bar:
{
"type": 5,
"data": {
"end_timestamp": 1650044987,
"progress": 55.7
}
}
This will look like this for the user:
 as an idea, but was told to submit here as a bug by @mason
Steps to Reproduce
Have unread messages in a channel and use any slash command
Expected Behavior
The unread messages get marked as read, just like if you ...
I'm reopening this as there are other client related issues in this repository and it's not still not fixed after almost a year.
Description
Using the /msg slash command you are able to “send” DMs to the discord system
Steps to Reproduce
/msg user:643945264868098049 message: test
Expected Behavior
There is no expected behaviour currently
Current Behavior
It "sends" the message.
Screenshots/Videos
[Image]((https://gpus.yessar.xyz/me_system.png)
Client and System Information
App: 122.0 (31608) stable; Manifest: W/"0c6f58a95cb14d3d77948e11ab2453ee"; Build Override: N/A; Device: iPhone14,...
Doesn't look like you can, it clearly shows an error mesage
This is a client bug and is not related to actual application commands.
@RedDaedalus Not really, those client commands have IDs server-side like application commands do.
no, they do not exist server-side, but it is probably fine to report issues in this tracker regardless.
arguments have a value provided and could function similarly to how autocomplete works. It would only request a preview when the person
rather hard, many commands may actually change information in database
Which part is rather hard? The part about submitting when the user stops typing and attempting to get a new preview like that or something else?
this feature could be really good, but alternative solutions to this exist, Discord can't be used for everything you ever wanted
Description
Occurs only on applications belonging to a team.
Consistent across applications and users, seemingly appearing since yesterday, as indicated by reports on the Discord Developers Discord.
Steps to Reproduce
- Add any image to an application belonging to a team.
- Click "Save Changes".
- Loss.
Expected Behavior
Correctly uploading and saving the asset.
Current Behavior
"Unknown application" error.
Screenshots/Videos
 {
["id"]=>
string(18) "965430679036887050"
["application_id"]=>
string(18) "862859203634003988"
["version"]=>
string(18) "965430679036887051"
["default_permission"]=>
bool(true)
["default_member_permissions"]=>
NULL
["type"]=>
int(2)
["name"]=>...
And even if you reload your client, it doesn't show up when you right click a user? (Not their message, it has to be their username)
Yes there is nothing in menu, right click on avatar, @username nothing.

Also note if I put my command is guild command not global its work perfectly
After 3 hours its fixed now.
Maybe make sure you're requesting the intent?
Gateway identify does not affect the http API.
I have a Slash Command Bot made as Serverless Function that responds to Slash Commad Requests through Interaction Endpoints.
Since it is implement like this, the Bot by It's nature doesn’t connect to anything.
Now I wanted to set status for my Bot or maybe change it frequently (as it would look cooler) but found out that it is not possible without connecting to gateway. (Uncool)
I suggest that the abillty to set a Bots Status should be available via the REST API also.
When you are REST-only, there is no continuing connection, so you are indeed considered no presence.
It would pretty make sense if you want to style your stuff, yeah. But normally, the normal text does not count as a component.
There are lots of bots who are using user-defined stuff for like welcome messages or so. Most bots have custom variables users can take in like {member} for the member name who joined the guild. I'd like to have a list of possible format values in textinputs or command arguments.
For example, the bot will take a string like "Hello, I am {member} and I am {age} years old!", the possible Format Values can be shown up to the user with their label.
The user could give the bot a string li...
Yep it's related to that issue, and is related to how the routes internally are being resolved. Pushing out a fix this morning.
Same issue here, it's been 1 week since the server has passed 500 members and we have 539 members right now. None of the metrics are visible and instead shown as "-"s. How much time does it take for metrics to appear?
500 members requirement is not silly. It is necessary for the underlying statistics to work.
Description
When running a slash command with commands v2 and only having the bot added with the applications.commands scope, the user becomes the bot.
Steps to Reproduce
- Have commands v2
- Add a bot with the applications.commands scope only
- Run a slash command
Expected Behavior
The bot shows up as the author of the message.
Current Behavior
The user is the author of the message instead of the bot.
Screenshots/Videos

- Try to click the same option
Expected Behavior
There should be another interaction
Current Behavior
There is no new interaction and the only way to re-select it is to restart the client or to select another option first.
Screenshot...
this is working as intended. you might wanna use buttons instead.
As this has been open/inactive since 2020, I think it's safe to say we're going to leave this undocumented for the time being.
To clarify, does this mean if the community does not document new features quickly enough, they won't be documented?
It'd be nice if a Discord error could be differentiated with a bot error, but besides that this would be lovely
This seems like a duplicate of #3804.
I think this is necessary for slash commands and it worries me that something like this does not already exist today.
This would work better as a separate endpoint, so that defered interactions could also have error. I think
something along the lines of POST /interactions/{interaction.id}/{interaction.token}/error .
In general, I don't think ephemeral messages solve this problem because their formatting is chosen by the individual developer, and errors should all look the same so u...
Hmm yeah. Maybe just show a little bot icon next to the error message and when you hover on it it says smth like "Beep Boop, something happened wrong with the bot" or some funny text.
Description
The docs says for audit logs exists a array of integrations, with a few fields like "enabled" but exists cases where this field not show, its a bug or the docs need to be updated to make optional the field "enabled"?
Steps to Reproduce
- Add a discord BOT
- Check audit-logs endpoint
Expected Behavior
The integration object in the array has the field "enabled"
Curr...
#4803 Pr to fix
then its optional because in discord type this field its not used?
i didnt mark as optional since its always present outside of the circumstances the asterisk denotes, but looks like the rest are marked as optional so ill update it.
yeah im not sure because if read the field description speaks about if the integration its enabled in teory for discord bots this is ever true... unless for me.
Aight, I thought about this interface a bit and how it might work (for no reason in particular)
There would be several types of display:
- COUNTDOWN
- BAR
- UNMARKED-BAR
We'd be able to set a few different things about the progress bar:
Param | Description | Types
- style | All
- end-time | must be a time in the future | All
- start-time |...
I have the same issue on Microsoft Edge
Version 100.0.1185.44 (Official build) (64-bit)
i think snake case will fit better than kebab case
case is irrelevant in the example, this is more what options there would be, not their names.
(they're also like that due to the markdown highlighter being weird where I initially posted this)
A fix for this will be out shortly
Can you provide your JSON command config or perhaps an application id?
409a790 Clarify that all application commands can be lo... - SuperchupuDev
3d05c09 Enabled property wrongfully marked present (#4803) - Jupith
I mean sth like https://en.wikipedia.org/wiki/Threat_model , not the policies around those threats.
One is indeed using this API endpoint approximately twice a minute per user in the web/mobile client by Discord, by clicking/tapping the user icons in the guild sidebar.
Sure: 774714577732239421
Description
Sometimes, the choices an application returns for an autocomplete interaction can depend on the values of other options that the user may or may not have filled in. This works fine most of the time, but when the results for an option are cached and the value of a different option changes, the cached result is still used for the original option even though the application might have responded differently when the other option changed.
Steps to Reproduce
- Create a slash...
Yeah this idea is great. Maybe bots should also specify a minimum size of the image and the format of the image, because there are some things that require a specific image size.
discord could tell the user that something went wrong if the bot hasn't changed the reply for more than 3 seconds after the ETA expires
I think a good idea for a response message could be "This appears to be taking longer than usual..." or something of the sort from Discord's end. I think this would be better then just having it error the command as it gives the bot a chance to still respond if experiencing elevated latency or any other issues.
DM me ian#6538 and I will tell you the word that is considered harmful in one of your option descriptions
Using specific permissions in channels can sometimes be really annoying.
For example, if you forbid one role to send messages and allow a lower role to do so. What if you have both roles? Which permission should be used here?
There is a role position, so how about a permission position for roles?
Description
The code example for file attachments has an incorrect file name.
Steps to Reproduce
Expected Behavior
"thumbnail": {
"url": "attachment://file.png"
},
Current Behavior
"thumbnail": {
"url": "attachment://myfilename.png"
},
Screenshots/Videos
No response
Client and System Information
N/A
Description
When using a slash command from Android and selecting a choice from the list of autocompletion options the resulting value gets concatenated twice.
This behaviour seems to only happen when the value is the string representation of an UUID.
(tested with other values and these didn't have this behavior)
the choices payload send to discord
{
"type": 8,
"data": {
"choices": [
{
"name": "Helck",
"value": "10a4985d-0713-462e-a9d6-7...
Because interactions return the guild locale, wouldn't it make sense to move the language option out of the community tab in general settings? If I want to use the locale returned by an interaction event, the guild must have community enabled. Not every guild does that and it would be nice if non-community guilds could use this too.
I'm so sorry, I just saw that this got already asked
I'm so sorry, I just saw that this got already asked
This is fixed in the latest Alpha release.
Allow permissions have higher priority than deny permissions, if it's not set then it defaults to the guild global permission
Can you add clearer reproduction steps? What body are you sending, what is already there?
Description
When creating a message containing an attached file, it is not present in the message data returned by the create-call. Also not present when making a get-call for the message.
This creates issues when the message is later edited, when it's impossible to know if there are attachments or not.
Steps to Reproduce
- Create a message
- Description: "Test1"
- Embed: Image = "attachment://test.png"
- Attachment: test.png
(other values null)
- Get the message (using...
I'm sorry for being vague... Basically, there is a misspelling in the documentation that makes it confusing. On the linked page above, the text "myfilename.png" should be "file.png" to fit in with the rest of the example.
I'm not sure if the returned message's Embed[0].Image.Url should be "attachment://test.png" or, as it actually is, a link to Discord cdn.
The real issue we're facing, is when editing the message.
- Since Embed[0].Image.Url returned by the create/get-call is referencing Discord cdn, the attachment is no longer "hidden" and the image is hence displayed twice (once for the embed-image cdn-link, and one for the attached file)
- The message data returned by the edit-call DOES contain the attachment
A work-around so far is, when editing a message, change the url from:
https://cdn.discordapp.com/attachments/123/123/test.png
to:...
Ah, sorry. Honestly opening a PR would be much easier than going through all the trouble of creating this issue.
@324124124124124sw is this really specific to just editing a message?
I'm surprised this same thing wouldn't happen when sending a message too
Description
Ommitting entity_metadata when creating an External event, or when changing the entity type of an event to External, results in the resulting error being in an incorrect format.
Steps to Reproduce
Either:
- Create a Scheduled Event using the corresponding endpoint, setting
entity_typeto External, and omittingentity_metadataor setting it to null, or - Modify an existing Scheduled Event that is not external, and set its
entity_typeto External (making sure ...
@324124124124124sw is this really specific to just editing a message? I'm surprised this same thing wouldn't happen when sending a message too
never tested sending message as I didnt want to ping anybody and I don't want to ping 100+ people. I suppose the same error would happen if sending a ping as well
Forum channels are literally channels with direct link to Threads feature with an icon lol. Why don't the devs just test it out in beta and release it on stable version?
Pardon my ignorance of the development process but i am very sad that this isn't an available feature yet.
It's very useful for open source projects and communities. It just makes Discord more flexible and go to choice for many use cases.
because they are still working on the UI and adding new features
GitHub Discussions are merely tweaked issues, yet you still use them...?
Description
On android alpha, and on iOS when selecting a thread from the dropdown for a channel option the error "not a valid channel" is displayed.
This also happens regardless of channel_types being set, as long as one of the types is a thread.
I have not been able to test this on private threads.
Steps to Reproduce
Steps
- Create (or use) a slash command with a channel option
- Select that option
- Select a thead from the dropdown (you may need to type to filter ...
Interaction Data Structure:
https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-interaction-data-structure
The problem is for some Conmands you need to access Channel Name, Channel Type & Most importantly the Channel Permissions of the user. It would be better if such information is included in the Request so that Bots doesn’t need to make REST API calls again to fetch channel Information and / or store them for convenience and performance.
Don't bot owners have ultimate choice over what the bot does?
I don't understand why bots would Nitro boost a server. How would the billing work? Why wouldn't bots be allowed to have Nitro then? Just... why?
Prepaid credits could be used to anonymise that part. The bot owner and/or bot users would top up some amount of credit, and the bot would autonomously spend the prepaid credit for crowd premium of a guild ("server boosting") or individual premium of self ("bot boosting").
Defaults to the guild owner locale.
To prevent privacy leakage, you should instead use the guild owner's locale at the time of guild creation.
Would you mind explaining how this would work?
Very simple: The server would analyse the sound data, apply the auto-moderation filters, sync all inputs to time code and mux it to N different output signals (self not included, modified per client mute etc.).
Can you elaborate on that? How would it analyze and filter?
Filters as in copyrighted content filtering, banned words/phrases/topics (think of on-topic-only, no-curse-words, no-insults), foreign language detection (for example, English only, in an English-speaking guild; the guild moderation would choose to keep, translate or delete foreign language input).
Do you think you could prototype a working real-time sound filter? This is fascinating stuff.
I'd personally love to see (hear!) this in action, I'm not quite grasping it.
Would the filtering be done client or server side? This would be expensive stuff!
Would the filtering be done client or server side? This would be expensive stuff!
Server side, like ToxMod does.
Wow, looks good! 😁 I'm looking forward to this being available to servers as a much-needed moderation tool
Toxmod is not a filter. It's simply a tool to allow humans to review after the fact.
Please, prototype a realtime filter. Honestly, if you pull it off, just sell it to the highest bidder because that's some high tech stuff
its actually really easy to do, just record someone saying bad words and check the audio stream if it matches the bytes in it, no ai needed at all!
If it really was that simple, YouTube's and Twitch's Copyright/DMCA systems wouldn't be having so many false-positives 😂
(I raise the classic example of a band getting banned from Twitch for playing their own music on their own live stream)
This is exactly how I envisioned it as well.
If it really was that simple, YouTube's and Twitch's Copyright/DMCA systems wouldn't be having so many false-positives 😂
(I raise the classic example of a band getting banned from Twitch for playing their own music on their own live stream)
i know lol this is sarcasm
I know that voice moderation is simple--it can already be done by having bots "listen" to other users and run it through a speech to text engine. I was wondering about how you envision the latency control to work.
Latency control is explained in the main post: by adaptive delay-based input.
Using proxy rotator solves this issue without any further workaround.
Given an application may receive multiple interactions per hour initiated from the same channel, this would cause serious inefficiency in communication. You should instead cache the channel metadata for a reasonable time.
I think the error description is a bit confusing, since it sounds like you can't edit a message with stickers. However, in actuallity this just means you can't edit the stickers of a message.
The page contained inconsistencies in naming and contained user-only error codes.
I have doubt some of these errors but left them in for review, in case they're important.
Where would this occur? Bots can't search by tag afaik...
Personally, I don't see the point in removing parts of the documentation.
I don't see the point of keeping them in when they're not usable by bots.
Actually, looks like these aren't unusable after all.
Currently, the only way to access sticker.user and emoji.user is through REST requests to the respective endpoints. It would be greatly appreciated if this information could be included in gateway events as well, but not for messages of course.
Use-Case:
I want to dynamically keep a cache of stickers, and making the structures consistent between REST and Gateway would make things a lot simpler.
Seems like a rather annoying restriction of interactions to prevent sticker usage. This would encourage a bot to send messages using the POST endpoint on channels instead of the proper webhook way.
I'd take this a step further and say that messages posted as a response to interactions should be able to use all emojis like components can. This would make the expectation / behavior consistent within the ecosystem that is application commands.
Additionally, interactions already ignore most permissions (View Channel, Send Messages, Attach Files, and Embed Links to name some of the big ones), whether by design or side-effect, so it's odd that this is one of the few things that are...
because they are still working on the UI and adding new features
I see, there are working on UI. Thanks for the reply :D I understand now.
Given an application may receive multiple interactions per hour initiated from the same channel, this would cause serious inefficiency in communication. You should instead cache the channel metadata for a reasonable time.
You are basically encouraging bot developers to store data, the sole problem slash commands should be able to solve.
In many implementations that causes latency issues.
Like for me who uses Serverless Functions to host my Bot. Storing data would mean using a 3rd party...
In terms of actually saving data, I doubt that would be the case. From my perspective, the amount of usages of slash commands is way way lower than the amount of channel/role/whatever updates there are. So even in terms of network bandwidth it would be lower if you'd be able to drop those updates if interactions had them
App: 122.0 (31608) stable; Manifest: N/A; Build Override: N/A; Device: iPhone10,4 OS 15.1;
Still a thing on the latest TestFlight:
App: 124.0 (32114) ptb; Manifest: N/A; Build Override: N/A; Device: iPhone10,6 OS 15.5;
Bots already receive their total permissions(including overwrites) in the channel the interaction was executed in
See https://discord.com/developers/docs/resources/guild#guild-member-object permissions field
Do you want to say member object?
I think you are mistaked. That is the members permission who invoked the command.
What I am talking about here is the Bots permissions.
I don't see why interactions aren't allowed the same perms assigned to the integration's built-in role. Given it's been months, I don't see this going anywhere, sadly, as with most other features on the platform these days.
Description
When clicking on Jump to present, ephemeral message get's dismissed.
Steps to Reproduce
Send a message with a button which replies with an ephemeral message. Then send new messages so that the original message can't be seen without scrolling (Also it should show Jump to present button). Then go to that message and click on that button. You won't see any ephemeral message. Then click on Jump to present, you won't be able to see the ephemeral message.
Expected...
@asportnoy looks like this has been re-reported again in #4675 and synced to their internal tracker
Why is this feature needed
Many bots with voice capabilities currently use the following flow:
- A human joins a voice chat
- The human that joined the voice chat issues a bot-specific command to ask the bot to join the voice chat that the human user is also in
- Bot determines who invoked the command and the invoker's voice status
- Bot joins the voice channel of the invoking human
With user-specific channel invites, we would directly invite the bot to the desired VC, wi...
Just make a command that accepts a voice channel argument. There's literally no need for any of this complexity and is already possible in a much simpler form (Activities bot literally does exactly this)
Like in title, small change but I think it could help a lot.
Similar like in fields - you can decide whether it should be inline or not, it would help a lot having option to center title of our embeds.
It makes more sense when embed uses image, then those 2 would be perfectly aligned.
For now - many bots just uses custom white space characters to mimic spaces which sometimes works and sometime break entire message by rendering it in weird way... *(Not speaking of invisible characters in ...
they already mentioned multiple times the delay won't change
this is quite annoying as a discord user,
i often try to check stats of a game through a discord bot, but now it always says "failed to load options"
Description
When i try to check any invite (e.g. this: https://discordapp.com/api/v6/invite/8reG7FdF) via v6 endpoint, i get the following response:
{"message": "500: Internal Server Error", "code": 0}
Steps to Reproduce
Type the following in browser: https://discordapp.com/api/v6/invite/8reG7FdF
and check the returned message:
{"message": "500: Internal Server Error", "code": 0}
This also works with https://discordapp.com/api/v6/invites/8reG7FdF
Expected Behavior
I ...
Following up on the debug which was done in dapi:
This happens only:
- For invites to a voice channel (text channels are not affected)
- If the request is unauthenticated (if you are affected, you can authenticate requests with a bot token to work around this bug)
This is actually a good idea. Also sometimes there are user-defined emojis that bots should use, and not everyone wants to invite the bot to that server.
Can reproduce.
POST https://discord.com/api/v10/interactions/:id/:token/callback with {"type":5,"data":{"flags":4}} has returned status code 204
PATCH https://discord.com/api/v10/webhooks/:id/:token/messages/@original has returned.... {"flags":0}
using disnake 2.5.0a
| 50080 | Cannot edit message stickers |
Add joinedAt and joinedTimestamp to member voice state. Why not?
I added my extension to the community resources.
A description of the extension is available in the commit.
Testing your websites' embeds on Discord is hard. Not only do you have to post your links somewhere to generate an embed, which might lead to premature leaking of unannounced projects, but you also have to deal with the caching Discord does. The following tool aims to mimic Discord's URL embedding system as closely as possible, in real time, so that web devs can test their Discord embeds easily before committing to a website deploy.
fa3e39f GuildMember.joined_at is nullable - yonilerner
This may not actually be correct, we're investigating
what's your use case?
These are still sent by the API and shown in the client though, how do you know they're being removed?
@ImRodry canary was updated to not require these features.
The features are still sent by the API but they don't seem to do anything anymore.
I suspect this field is not in fact nullable, though if anyone has a repro indicating that it is, please share
it was nullable for stage lurking and Guild Member Update was updated: https://github.com/discord/discord-api-docs/pull/2911
not sure if it was nullable when this object is used in other places, and stage lurking was removed along with stage discovery
I’m using canary and I still can’t set these auto archive durations without boosts though 🤔
Updated twice since that comment and still can’t use them, maybe it has yet to fully roll out
Hello everyone.
I need to be able to Add/Update a URI for authentication.
I don't want to add it manually every time in: settings->OAuth2->Redirects.
is there an API endpoint to do this?
No, you cannot dynamically change oauth2 redirects; the redirect should always be the same.
If you want to keep track of some data, you can store it in the browser or use the state authorize parameter.
Thank you @advaith1 for your answer.
The case I have: some users of my app don't want to add the for authentication URIs manually.
They want to update it directly from my software.
Redirect to a known url, and then redirect again to the URL the user supplied (this has its own downsides and security risks, but that's the best you'll be able to do)
@NovaFox161
yes. but , the first time , the user must defined. and after let him update it and do a redirection
The way I suggested is the only way. Otherwise you break the oauth2 spec and/or open yourself up to security vulnerabilities
I've encountered the same or very similar issue.
Have been unable to recreate the issue on a new server unfortunately.
Nothing had changed in my server but all commands that had permissions assigned suddenly stopped working (greyed out in the list).
The context menu commands with the same permissions still worked though.
(I verified all the commands had the correct permissions assigned with the API)
And a couple of days later, the permissions are now working on desktop as expecte...
@RedSparr0w What is the id of the affected guild? Do you know if you have perms v2?
i don't want to kick, or invite the bot as bot only
i want to invite the bot as bot and application commands
i made a slash command and now i remove all the codes and made a new code which makes my bot to just come online and nothing
// EXPRESS -------------------- STARTS
const express = require("express");
const app = express();
app.listen(3000, () => {
console.log("Bot is running!")
});
app.get("/", (req, res) => {
res.send ("Bot is online")
})
// EXPRESS --...
@night, this wasn't fixed.
was it now?
While not an explicit solution to client-side validation, I could also see augmenting https://github.com/discord/discord-api-docs/discussions/4615 with the ability to responding to a /error endpoint with custom_ids mapped to error strings of components. I see updating the modal with component-specific errors as a reasonable alternative to the idea of "communicate to the user what's acceptable input" and it also solves the problem of not being able to arbitrarily validate information.
I...
It would be very nice if the per-user state of a select menu for messages persisted past refreshes/devices, as currently that state is not saved anywhere.
Example Use Case: Role selection menus.

I've had this select menu for a while, but now that I'm revisiting these types of interfaces, and trying to make a public bot to do these role menus, I've been thinking about this more....
The guild ID is 450412847017754644
I'm not too sure on the perms v2 front.
I'm using Discord.js v13.6.0 to manage the commands though.
Also one of the moderators noted that even though the command was greyed out for them (they had perms), they were still able to use it by manually typing the required parameters.
Description
If you have a select menu open in the client and after some time it gets disabled the select menu stays and there is no way to close it, I tried pressing the Esc key or clicking outside of it but nothings work, the only thing you can do is to move to other channel, also you can't use the chat box when this happens and if you scroll up and then press the chat box the client turns black and you can only see the options from the select menu, very weird.
Steps to Reproduce
...
Adds an example for text-based GUILD_VOICE channels (Text In Voice).
As a new feature of Discord, the docs need to "clarify" the structure of this.
Although documented, this hasn't been launched yet. This issue is to track the launch of this.
Bot Rate Limits are as follows:
- A global 50/10 rate limit (meaning, this is the maximum # of messages a bot can send currently across all of discord).
- A 5/5 per server rate limit.
- A 5/5 global DM rate limit.
The rate limit applies to message creation and editing.
If your bot is big enough and is hitting the global rate limit legitimately, reach ...
i think i cant repro now?
It would be useful for modals.
- Edits documentation to align with Command Permissions v2 rollout
- Adds changelog for Command Permissions v2 updates
- Makes a few improvements (and adds visual of command types) to the permissions documentation
- Formatting tables from markdown linter
I think you should also make it so you could change the color too!
Hey all—
Today the new Command Permissions system (has been called permissions v2) has been rolled out to new users—though the UI changes are currently only on desktop. You should see the update when you refresh your client. This launch introduces quite a few changes which can be viewed in the docs PR and [changelog entry](https://github.com/discord/discord-api-docs/pull/4830/files#diff-39e6aeaafba5726f3fb409da21a6953dfb679480f09038...
How about "context (right click) menu" for novices?
I think "above" should be the link to be consistent with the rest of the page
"Authorization": "Bearer <my_bearer_token>"
These channels could be created only by people with developer license
Discord is place for communites, and there are many developers on discord, i would like to suggest channels that could be useful
for developers
Github channel:
Channel that embeds your github page, i don't think i need to explain this one
Database channel:
Basically embeded mysql database, this could be useful for developers and game server managers
Forum channels ? like guilded has, they copied discord, its t...
Why was this removed? I still see it present in my guild commands
- The batch editing endpoint ([`PUT /applications/{application.id}/guilds/{guild.id}/commands/permissions`](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/batch-edit-application-command-permissions)) has been deprecated.
I think that it should be updated to match the tense of the remaining breaking changes.
Hmmm not sure how that got removed. Adding it back in
I made it consistent, but I prefer it being explicit instead of above or below
Github channel
You can just use GitHub webhooks. Just append /github to the end of the webhook URL.
Database channel
No, just no. You should not be using Discord as a datastore. There's a thousand and one reasons for it, notably that it would have abysmal performance. Not too mention that it is terribly insecure as a datastore because Discord can read everything written to the channel. Just use a prope...
| dm_permission? | ?boolean | Indicates whether the command is available in DMs with the app, only for globally-scoped commands | all |
This is null when not set (should it be?)
also, pretty sure this endpoint has been removed, not deprecated
🤦 did the wrong one, thanks for getting the right one lol
Hmmm gonna check on this with engineering before updating
I meant default_member_permissions which you did
Pretty sure that character shouldn't be there
Also, the danger box below implies that dm_permission defaults to false. It may be useful to also point out this in the field's description.
it defaults to default_permission
Capital c for "can" after a full stop?
Checked with eng team, and we're going to update it to default to true instead of it being nullable. Updated the docs accordingly
[
](#965807097356910642 message)
Thank you so much snek for fixing the v2 permissions bug with batch editing yesterday... oh wait now it's completely gone without warning the next day... Why even fix it if it's just going away the next day without warning?!
Breaking changes with 0 days of notice.
Agreed. Its not even like they have published the documentation yet, as this pull hasn't been merged yet. And like always, they're using the community to check that the docs match the actual api behavior. You'd think they would be able to do that before releasing.
hmmm actually im going to revert back and make it nullable for now just to make sure it's consistent with its current state. i'll work on getting the change pushed through in the next couple of days and update the docs then.
thanks for pointing this all out in the first place @ckohen
the UI's behavior currently acts as true though (if it's not passed, it shows up in DMs), which I'll also include
4a3b20a Rework documentation for Permissions v2 (#4830) - shaydewael
it is not client credentials only
Description
This is really unacceptable. You have API versions. You should be making use of them for breaking changes. Pushing breaking changes to the current API version and telling no one about them is completely unacceptable.
Steps to Reproduce
Have a bot on Discord
Expected Behavior
Breaking changes should be pushed to new API versions; not the currently running API version.
Current Behavior
Breaking changes are constantly pushed to the currently running AP...
Over two months ago, I asked if permissions v2 would be released before April 30th, and they assured us they would.
On April 1st, Discord developers stated that the requirement for April 30th would be pushed back to August 31, 2022.
[) and becomes null.
Steps to Reproduce
PUT /applications/{application.id}/guilds/{guilds.id}/commands with a body of
[
{
"name": "test",
"description": "testtttttttttt",
"default_m...
I think it will be good if there's text key, like:

Currently, https://discord.com/developers/docs/resources/channel has a lot of things, channels, threads, and messages. So I thought it would be good if the page is separated with Channels, Messages.
(iirc Hackweek API docs does)
Description
It seems like the new backend prevents normal messages starting with a slash to be sent even when there's no exact match. I don't defend message commands but users still use them (and bots haven't fully migrated), and thus this is an issue. If people decided to set / as the bot's prefix, then they can't use text commands without the screen shaking and the need to prepend a space before the slash.
Steps to Reproduce
- Be on a server with backend v2 (if you see a loadin...
Can no longe reproduce for some reason. Closing
just a typical Discord moment, nothing new to them giving a shit about developers, annoying to be honest
agreed. my bot was working fine with the slash commands now its poof.
repeating the possible types of fields for audit log changes is kind of silly, because these structures and their fields are already documented.
This sounds confusing to read. Maybe "name of the targeted entity changed" is more suiting
We have a list of typesafe keys in our library that hold a reference to the right serializer, how are we supposed to maintain that list if we don't know which keys exist?
Bad day to be a strongly typed language
How is this pr "improv[ing]" anything?
For some keys, they are documented as being both nullable and optional. Without this table, how does one know which of those can happen in audit log updates?
I agree that the type of each field is a little redundant if it is the same as the structure. Maybe instead of removing all the audit log change keys, the ‘Type’ column could be removed, with a note explaining that the type of the keys is the same as that of the structure.
Alternatively, maybe something like this could work:
| Structure | Keys |
|---|---|
| guild | afk_channel_id, afk_timeout, banner_hash, default_message_notifications, …, name… |
| channel | name, nsfw, topic … |
Github channel
You can just use GitHub webhooks. Just append /github to the end of the webhook URL.
Database channel
No, just no. You should not be using Discord as a datastore. There's a thousand and one reasons for it, notably that it would have abysmal performance. Not too mention that it is terribly insecure as a datastore because Discord can read everything written to the channel. Just use a prope...
I agree that the type of each field is a little redundant if it is the same as the structure. Maybe instead of removing all the audit log change keys, just the ‘Type’ column could be removed, with a note explaining that the type of the keys is the same as that of the structure.
Alternatively, maybe something like this could work:
Structure Keys guild afk_channel_id, afk_timeout, banner_hash, default_message_notifications, …, name… channel name, ns...
So is it normal for breaking changes with no notice to literally allow any user to use any role restricted command including very destructive ones? Because yes this happened.
Foreign language detection + bad words is really the same filter as bad words vary depending on the language. Something that stands for a curse word in one language could be an essential verb in another.
Also just to note, The database channels, i didn't mean that discord will host it, it is security issue of course, but as long as someone can't change the stuff in the database it would be okay
To "pin" some auto-updating information, or in this example cryptocurrency prices, developers have to "hack" the change nickname + status feature. It would be great if Discord gave us a native way to do this without having to create a new bot for each status message.
I'm envisioning an area in the top right above the user/bot list that allows to register a widget, give it an ID back to the developer, and then let that developer auto-update it.
<img width="247" alt="image" src="https://...
You can create 100 Channels and update the channelname for any Priceupdate
Only ONE Bot is needed at all. ;-)
Probably this is a massive idea and way complicated then bots, but may discord let developers make custom activities (for example embeded games) for discord servers like youtube, chess in the park etc.
For the time being, you can get around this by typing a space or a \ before the /.
There are clear reasons for limits.
Channel name updates f.e. have gotten their limits changed from a few seconds to iirc 2 minutes BECAUSE of bots with "auto-updating" features (showing stats through channel names).
Also, to my knowledge is the repeated, automated performance of actions towards the Discord API a violation of their Developer ToS.
So for your own safety, don't have such features.
(Disclaimer: Any of this info could be outdated and/or wrong. I do not guarantee them to be acc...
Description
Instead of pushing breaking changes to the currently running API version, the version system that is already in place should be used for breaking changes. If you are making changes that alter the way an endpoint is interacted with or the existing values given from an endpoint's response in any shape or form, those changes should be made in a new API version. Additionally, those changes should be well documented in some sort of changelog. The way things are done currentl...
Over two months ago, I asked if permissions v2 would be released before April 30th, and they assured us they would.
On April 1st, Discord developers stated that the requirement for April 30th would be pushed back to August 31, 2022.
[ only for me in a public server with my private bot. Now the owner ( or probably a random person from @everyone ) of the server set a hard reset for few files, what would be important for statistics. Eh. Bring back v1 features. Please.
ca70572 use consistent name for APPLICATION_COMMAND_PER... - onerandomusername
Definitely, the ability to use modals for complex configurations would help UX a LOT. Better than using slash commands for setting up things (long and tedious) or creating a whole admin website for the bot.
970865d fix permission scope description (#4833) - advaith1
bf56445 Fix Lobby endpoints formatting (#4814) - apacheli
All voice channels will support text chat. When the feature releases, the text-in-voice docs update should update the existing voice channel example instead of leaving one outdated example and one current example.
Clarify that admins bypass the permissions
07c4078 default_member_permissions clarification (#4844) - shaydewael
Classic discord. My bot was working fine with slash commands, discord be like: haha no.
Added application_commands field to the audit log structure.
Exactly. API versions are supposed to be strictly immutable, with any change released as a new version.
@Katzen48 To properly replace text commands, you need permissions-based filtering of interactions-based commands.
I think that past frustrations have demonstrated that linking to a central source for structures from multiple contexts is not sustianable.
And it's it true that there are explicit type differences? For example: #2088.
If you're still having issues, can you provide a curl sample demonstrating the behavior you're seeing?
No, it wouldn't be okay in any context. Using discord as your datastore is not secure, not feasible, and against ToS. A proper database really isn't that hard to setup or use. It would be far far easier than trying to hack discord into a custom datastore or asking them to somehow build it into their chat platform
I what they mean is an SQL database viewer inside Discord …which doesn't make sense.
CR Canary 126255 (0b99723) Host 0.0.284
In addition to this, it would be more better if we can even automate this via custom bots (thus new perms or scopes) or via in built slash commands natively.
Discord's stars just aligned ¯\_(ツ)_/¯
Payload to Discord
POST https://discord.com/api/v9/channels/[CHANNEL]/messages HTTP/1.1
Host: discord.com
User-Agent: [USERAGENT]
Authorization: Bot [TOKEN]
Content-Type: multipart/form-data; boundary="7634b1da-0944-4f30-857c-dc055242b9f5"
Content-Length: 31201
--7634b1da-0944-4f30-857c-dc055242b9f5
Content-Type: image/png
Content-Disposition: form-data; name="files[0]"; filename=bug1.png; filename*=utf-8''bug1.png
[BINARY DATA]
--7634b1da-0944-4f30-857c-dc055242b9f5...
Description
When creating a message with attachments where the filename starts with an underscore, it is trimmed by Discord.
Steps to Reproduce
Create a message having an attachment where the filename starts with an underscore. Link the file via embed image.
Expected Behavior
Filename should be the same as in the create message.
Current Behavior
Filename is trimmed from underscores.
Screenshots/Videos
No response
Client and System Information
Discord REST ...
Its been a problem since at least last year, #1340.
I was hoping for some sort of indication that your attachment is inside of the embed, maybe a flag inside the embed object or something. Currently I just send in attachments: [] on every message edit just incase there are any attachments. Can't trust the urls since you can give the embed a cdn.discordapp.com url and it'll come out the same way as your uploaded attachment.
including embedded attachments in the attachments array would be a breaking change for bots and probably the client too
Comment
In this example, not only is the underscore trimmed but also the embed image element is deleted.
Payload to Discord
POST https://discord.com/api/v9/channels/[CHANNEL]/messages HTTP/1.1
Host: discord.com
User-Agent: [USERAGENT]
Authorization: Bot [TOKEN]
Content-Type: multipart/form-data; boundary="e6e5b17e-0f73-4fd7-8a8e-5371a2f6b7bc"
Content-Length: 16224
--e6e5b17e-0f73-4fd7-8a8e-5371a2f6b7bc
Content-Type: image/png
Content-Disposition: form-data; name=...
Currently I just send in
attachments: []on every message edit just incase there are any attachments.
But what will happen when v10 is released?
Starting with API v10, the
attachmentsarray must contain all attachments that should be present after edit, including retained and new attachments provided in the request body.
including embedded attachments in the attachments array would be a breaking change for bots and probably the client too
Yes. So maybe this is something to deploy whenever a new major version is released.
including embedded attachments in the attachments array would be a breaking change for bots and probably the client too
In that case, this change should be made for api v10.
a lot of the stuff that this PR deletes still exist
Deleting whole pages of documentation without even checking if they're linked to is... not a good idea.
And isn't it true that there are explicit type differences? For example: #2088.
not supporting this docs change, but it only affects changes and that issue is about options so it isn't relevant
not supporting this docs change, but it only affects
changesand that issue is aboutoptionsso it isn't relevant
Oh okay. I missed that detail.
Well basically they can do whatever they wants. It's their API, who cares about breaking bots on their platform, not their problem.
Or they just forgot to tell us. Give them a break please they work really hard on it, we just need to comply and accept everything they do that impacted our bots on their platform. Some people have reason to not give reason
If there is an intent for Guild Members data, it makes no sense why this is not added.
Discord claims it to be for "security concerns" but the only concerning thing here is the intent you added does nothing to stop scrapers, but rather stopping legitimate bot developers.
And it would be nice if bots can detect certain phrases in the bio, for example:
ABOUT ME
I'm 10 years old
you get the idea.
won't happen because these are iframes, and this is a high security issue.
This would also be a great idea for bots that receive their interactions via webhook. There the app could use http status codes to indicate validation errors (code 400 for example) or Cooldowns(429). Additionally the response can contain errors message similar to the ones discord provides in API v9 and above.
If we wanted to make this kind of change, we'd need to look closer at what we can/can't keep, and set up any redirects that are necessary to delete these pages. Closing this out for now.
b28925a Document changes to the upcoming create-thread ... - ajpalkovic
That's a duplicate of #3095 which was denied (comment
If they don't want to follow feedback, that's their call - not following customer/user feedback is a bit of a shitty move though.
Fix broken read more links for SKU deprecation info
a4daa52 fix read more link for sku deprecation (#4851) - shaydewael
@MinnDevelopment Seeing if I can get the error message changed, then we can update and merge
4/27/22 "the permissions v2 incident"
How would this work if you defer then wish to respond with an error? Using http semantically is quite cute, but in this case rather brittle because of deferral and does not have a clear gateway analogue.
For now, ephemeral messages could be used to reply to interactions to display errors to a specific user.
That said, I understand that they don't have the same error styling, and I could definitely see how it would make a good addition and make app errors feel a bit more native.
The problem with using ephemerals in their current form is a user must scroll to the bottom of the chat to read it, and reinvoke whatever they tried to run, possibly from the very start of the command chain. The modal and button examples above are inline responses, which appear on the modal or directly below the button. It would be great if we could have an inline response type for buttons which responds directly below the button or even an option for ephemerals to appear directly under the m...
Oki I pushed an update that'll change the message to Cannot edit stickers within a message. Would you be okay changing the copy on this PR? If not I can make the change.
I'll merge the PR once the change goes out (in the next few days)
17d8be2 Document changes to the upcoming create-thread ... - ajpalkovic
Yeah I get that, and the point about having to scroll is a really good one.
Practically preaching to the crowd here anyway.
A central place for documentation for confusing things like audit logs really helps, as audit log isnt the best thing for static typing and trying to typehint interpreted languages. You probably remember the backlash from previous docs table deletions and this is the same here. This PR is unnecessary in my eyes and just makes the docs more spread out over many pages (typed structures being in topics/gateway for example). Instead, the table ...
Hear the feedback 👍 I'm going to take a look at how we can remove content duplication but keep some necessary and/or helpful information in these docs early next week. Will try to provide a bit of context in the section as well.
Thanks! Would it be possible going forward to ask for community feedback first before removing documentation like this? I understand the desire to remove it because its not maintainable in its existing form, but removing it without talking to the community or having a plan of action for the replacement does more harm than good imo.
7d092a8 Document error code 50080 (#4815) - MinnDevelopment
The change is only in a PR and wasn't merged before community feedback could be given—nothing was removed on the main branch or pushed to the live docs, and I think that remains a benefit of having opensource documentation.
In my mind, this feels like the best forum for feedback on docs since it gives everyone the context of the tangible changes a PR would have. If people have other ideas, I'm happy to hear them but I'd rather not add unnecessary process to making docs changes (for Disco...
My bad on wrongly assuming this was a commit not a PR.
I think at the end of the day I'd just like to see something proposed that isn't just removing a table and not replacing it with something else.
Every other type has a lowercase whilst this has an uppercase. I fixed that
Hi everyone,
Earlier this week, we rolled out the long-awaited Command Permissions v2. If you’re active in Discord Developers, you’ve seen the iteration of permissions over the course of several months, from wireframes and tech proposals to betas and sneak peeks. (If you’re not, the first you heard about this new feature may have been Wednesday’s announcement.)
We’ve been working with many of you over those several months to make a great new syst...
I'm going to take a look at how we can remove content duplication but keep some necessary and/or helpful information in these docs early next week.
Appreciated, worth noting while you're taking a look that one such inconsistency is the way that audit log for perms v2 work, which does have some logical sense, but does not follow any of the other patterns used in audit log.
A suggestion would be to add a field to the attachment structure:
- visible
- boolean
- whether this attachment is visible in the client (this will be false when the attachment is referenced from an embed image or thumbnail)
and then return all attachments for a message, whether visible or not.
How soon do you mean when you say soon?
Description
Setting default_member_permissions on command creation with the bulk endpoint prevents all users from using the command until it is edited by the application
Steps to Reproduce
- have admin or be owner
- Create a command with the bulk endpoint. It is important that a command with this name did not already exist.
PUThttps://discord.com/api/v10/applications/:id/guilds/:id/commandswith `[{"type":1,"name":"hello","dm_permission":false,"default_member_permissions...
Discord is working on a "Content Moderation" feature that helps you to moderate a specific, or all server chats. You can create a keyword filter and a filter with discord's own insult list. These are some "rules" that you can edit and create.
Currently, you can pick 2 possible responses if discord detected the specific keyword in a message: "Block Message" and "Send an alert". I think it would be pretty awesome if you could pick "Reply to Message" as a possible response. That would help as...
Description
Not sure if this bug is categorized as an API Bug or a Slash Commands Bug.
It's only happening in a certain guild (ID: 752630786561409076, Invite: https://discord.gg/JS6BEkDEHx), but querying slash commands is giving an internal server error (500)
Steps to Reproduce
· Join the affected guild
· Head over to #commands or any other channel where you can use Application Commands
· Type / followed by any letters, e.g. /hel
· Obser...
I have asked multiple people to test this and they have all replied that they're experiencing the same problem. I can't seem to find another server where this issue happens though.
Could be related to "[Backend v2] Searching commands returns 500"? If so, one of the bots in the server has an invalid command registered.
this should probably be properly handled instead of a 500 but w/e
Embeds aside, this is a really useful feature for devs implementing commands which use images in response.
Portrait oriented images get compressed based on width on desktop. Getting the user's device (at least the approx. width and height) could enable the dev to send the correct image conditionally.
@nmsturcke I would keep this issue open. Any reproducible 500 is a bug that needs to be fixed.
Asking devsnek to manually lookup which application is causing the error is not really a scalable solution :upside_down_face:
I believe a read repair could be implemented on the search endpoint to fix bugged commands (ex. by removing the extraneous options).
unfortunately, snek said that this will not be fixed and bot devs need to fix the invalid commands.
unfortunately, snek said that this will not be fixed and bot devs need to fix the invalid commands.
So basically bot developers need to fix a 500 themselves without being made aware except by user reports that they have an invalid command which shouldn't have been allowed to be registered in the first place, given its invalid?
Description
I ran into an issue where registering slash commands for a single guild for some reason only registers 1 single command when my bot is supposed to be registering 15. I use the discord.js library using REST, which is used in the discord.js guide shown here.
Steps to Reproduce
Not too sure what the issue of this is, but there could be some caching issue with how the commands are being shown vis...
This might be a dupe of #4856, would you please take a look at that and see if its the same problem?
Yeah that is basically the same thing as I'm experiencing
Not sure how the API providing a 500 to a client is not a bug. I would really appreciate some clarification on this front.
Got the same issue which i posted in #4859 that i closed. reference for whoever needs that
The bug only effects the Desktop version, on the phone it does still work
I can still repro on Canary 126462 (1f5f36e) and Android 126.5
I've managed to test this on commands v1, of which this bug is not creatable. This is both a commands v2 and perms v2 bug, and I have updated the issue name accordingly.
I can still repro on Canary 126462 (1f5f36e) and Android 126.5
Stable 112009 works
So can we at least get a developer fix, then?
or will need to solve this on our own?
Stable 112009 works
If by works, you mean this bug is not present, that's probably still a commands v1 (also known as backend v1) guild.
Just adds the type 24 for Message Types and auto_moderaton_message for Embed Types for the new AutoMod Alerts.
I'm guessing this will be documented along with the rest of auto mod features when it becomes open to bots.
This is still being rolled out with a beta pill in servers. That gives reason for me to believe it's still WIP, so PRing docs now doesn't seem to be necessary
I will mark this as a draft until Discord adds the feature completely and for all the servers.
Guild commands can't have dm_permission, it literally said "only for globally-scoped commands" in the description.
Also removed duplicate phrase.
With the sudden release of permissions v2, an important functionality of the Discord API has been removed. Bots are no longer able to manage permissions and must use the Oauth2 API in order to do so. There are multiple reasons why this brings unnecessary burdens and complexities to the end user and bot developer.
While Oauth2 permission managing could be useful for something like a bot's web panel, there are much more reasons a bot would manage its own command permissions outside of a web...
| default_permission? | boolean (default `true`) | Replaced by `default_member_permissions` and will be deprecated in the future. Indicates whether the command is enabled by default when the app is added to a guild. |
| default_member_permissions? | ?string | Set of [permissions](#DOCS_TOPICS_PERMISSIONS) represented as a bit set |
At least allow bots to demote their own permissions without additional auth.
The concerns about this were a bot would be able to change its own permissions without moderators knowing. (Ironically, the rollout of perms v2 made commands that were previously locked now available to everyone)
However, what about a guild-wide or per-app setting in server settings that allows bots to manage their own permissions? If this was floated around internally, why was it denied?
There are already audit logs for that, wouldn't moderators be able to check audit logs and know? I mean that's how it works for every other way a bot can manage permissions in a guild.
I respect the feeling that a moderator would not want commands to have their permissions changed without them knowing if they have already made changes. You would have a very big problem if a ban command somehow became usable by everyone.
However, I also realise the friction that a staff member could have if they need to set up everything themselves, which is what the current model requires staff to do.
@applebee1558 Audit logs on Discord are not as persistent as messages are.
@erkinalp and what difference does that make? I know they are stored for 90 days I think, but it doesn’t make permission changing completely hidden.
@onerandomusername the same can be applied to other parts of the API though. A bot that can currently change role permissions and allow roles to ping everyone or do other potentially disastrous actions in a guild. What makes commands different from other parts?
Stable 112009 works
If by works, you mean this bug is not present, that's probably still a commands v1 (also known as backend v1) guild.
App: 122.0 (31608) stable (Ipad)
Is also broken but only 1 command is missing
So can we at least get a developer fix, then?
or will need to solve this on our own?
Can you at least give us a one quick way to fetch all commands, so we can find out which one is the invalid ones?
The developer of the bot who made the mistake has to fix it. Until then, no one in your server will be able to search for slash commands. (Or you can kick the bot that created the issue)
Not sure how the API providing a 500 to a client is not a bug. I would really appreciate some clarification on this front.
I agree. In my opinion, this should give an error to the developer when registering the command, not to all clients in the server.
It hasn't even been clarified on how a command may be invalid in the first place
It hasn't even been clarified on how a command may be invalid in the first place
A command is invalid because it was created during a period of time when the API allowed slash commands to be created with several options, of which one was SUB_COMMAND or SUB_COMMAND_GROUP, and another option was any other type. This is no longer valid, which means this should not be able to reoccur.
An example payload to create said invalid commands is below.
{
"type": 1,
"name": "p...
That's a good point. The difference between the two is that bots can do those. However, they don't have to be granted that permission by default, and its the decision of the admins/moderators to give the bot permissions to modify roles or channels, or mention everyone.
However, managing slash command permissions is a bit of a different story. If bots could modify them like perms v1 this would mean that a moderator can not stop the developer from changing the commands, which is unlike th...
"embed containing a message blocked by automod" would be better
they won't always contain a message down the line
a moderator can not stop the developer from changing the commands
Moderators still can't really stop the developer from changing their command permissions if the developer doesn't have the best of intents. Ultimately a level of trust with the developer of a bot is needed, the oauth step just removes a bit of that trust by adding a higher barrier (in one way or another) to breaching that trust.
🤔 where else would it operate tho
in addition to what others have said, message type 24 is AUTO_MODERATION_ACTION
There's also a new guild feature flag: AUTO_MODERATION
"embed containing blocked content" feels more fitting
the current message is fine imo, it's all encompassing no need to restrict the description to containing "blocked content"
Description
Commands with default_member_permissions show up in the command permissions menu as being enabled for @everyone, even though they are only enabled for certain permissions by default. Instead, they should show up correctly in the menu.
Steps to Reproduce
- Make a command with
default_member_permissions - Check the command at the integrations tab of the guild
Expected Behavior
It's shown up as disabled for @everyone and enabled for the roles that have the per...
it would make sense if there was a toggle where a user could say "let the bot manage this command's role and channel permissions" or "let this app manage all of its permissions" without requiring oauth2.
Or perhaps make this a permission like how the rest of Discord's API works
If bots could modify them like perms v1 this would mean that a moderator can not stop the developer from changing the commands, which is unlike the rest of the permissions system.
What a bot ultimately does with the command still is dependent on the bot developer. For example, I could send a ephemeral message saying something along the lines of "you do not have permission to use this command"
It turns out it is hard to have an overall consistency in a client-server API of a huge application.
Background information
Currently every bot can be invited with the ADMINISTRATOR within the permissions field when using an invite link or we can give the bot that permission manually in the server settings. People nowadays tend to just set permissions=8 because their bot needs to be able to, for example, ban someone due a command they have. However there is no need for such a bot to have the ADMINISTRATOR permission. One perfect example was Rythm, a music bot, that had its invite...
there are actions bots can carry out that require the admin permission
Hence my proposal to make them like intents. There are bots that need the message content, but definitely not all - and definitely not a music bot like Rythm.
tbh i didn't read the full post cause i thought it was so dumb sounding, but i see now, still just as bad an idea
Do you want to make this a privileged intent for users as well, who can be compromised just like bots? This isn't going to work...
Hence my proposal, if you have even read it, to make them like intents. There are bots that need the message content, but definitely not all need the administrator permission - and definitely not a music bot like Rythm.
But its not an intent, its a permission.
Intents allow bots to fetch certain data
Permissions allow bots to perform specific actions.
intents = data
permissions = tasks
Hence my proposal, if you have even read it, to make them like intents. There are bots that need the message content, but definitely not all need the administrator permission - and definitely not a music bot like Rythm.
But its not an intent, its a permission. Intents allow bots to fetch certain data Permissions allow bots to perform specific tasks.
intents = data permissions = tasks
What I meant with
like intents
is the process in having your bot being allowed to be ...
Might've been over exaggerated to completely prevent bots from having the permission. Hence I changed the proposal to lock them upon direct invite.
If required users are always free to give administrator permissions to the bot, just like they can on any user. This would at least prevent bots from requiring the administrator permission upon first invite.
Again, intents are for restricting access to data. Not permissions.
And the admin inviting the bot can choose what permission the bot gets before inviting the bot. The permissions the bot requests are just the recommended permissions set by the bot author. The admin inviting the bot can choose to disable the permissions or even change them in the the server after.
As said below, completely hindering the permission might've been over exaggerated.
Hence I changed the proposal to lock them upon invite to the server. There are lots and lots of people who just invite the bot without checking/removing the permissions it actually needs.
Server members would later be able to grant the permission to the bot, with the warning already within the description of the permission.
Or at least a fair red warning from Discord's side to inform the user that granting such a permission is dangerous.
There's already a warning. "This is a dangerous permission to grant"
True. On a semi-related note, you can simply toggle the permission in the OAuth2 screen to not grant it.
Ultimately the problem here is that neither bot developers or server admins are following the principle of least privilege. The reason for this is generally ease of use, which is usually the case made for not following that principle.
There are server admins that actually think about permissions (typically bot developers themselves in my experience) based on what they are using the bot for and what the bot needs to do that. They may even change the URL to put their own desired bitfield in ...
As said above, there are lots and lots of people who just invite the bot without checking/removing the permissions it actually needs. There are way too many bots being invited with this and only this permission.
Some people invite bots without knowing what permissions it should even have due to their lack of knowledge and experience, as they might be new to the platform.
On top of that, there should be a more prevalent warning when granting the permission during the OAuth flow, as most people simply click through.
That is also another possibility I've added, unfortunately there is none at all at the moment so it would be to actually put a warning and not to put a more prevalent warning.
I think the main issue here is that bots couldn't really provide feedback on why a command failed if permissions were set up incorrectly since they might not be able to even see the command being run to begin with (since they didn't have access to the channel) or simply didn't have permissions to talk in the channel.
Once slash commands get enforced for verified bots through the message intent, this should (for the most part) be an issue of the past, since a bot will always be able to resp...
Totally agree, however I do believe that nowadays a basic bot that has a ban and mute command should not put the administrator permission on the invite URL.
Whereas for the privileged intents, I do know what they are and mean - I probably phrased it wrongly but my intention for the first proposal was the procedure that would be similar to privileged intents, not the background system in itself.
Just wanting to bump this, as I have recently ran into a modal im building which I feel needs a checkbox.
Update: it's back like 2% of the time - responses actually showing
extra issue which is half related, larger test sizes aren't respected by autocomplete (50% of options just aren't available) and discord won't listen to accessibility issues
Description
It's not clear what is VIP server for Discord :

A boosted lvl 1 server ? lvl 2 ? lvl 3 ? A partner server ?
Steps to Reproduce
Go to https://discord.com/developers/docs/resources/channel#modify-channel-json-params-guild-channel page
Expected Behavior
Current Behavior
Screenshots/Videos
No response
Client and System Information
Rythm had the right to require administrator permission to easily access private channels.
VIP servers (currently known as VIP regions) is a guild feature (https://discord.com/developers/docs/resources/guild#guild-object-guild-features) and allows voice based channels to go up to 384kbps, so I assume the text is just out of date.
Either way, VIP servers are not level 1 boosted servers.
The issue is discord requires bots to have permission beforehand before being able to add that said permission to certain roles. However, a random breaking change was pushed into oauth2 pages 2 months ago that made certain permissions completely inaccessible to bots. ADMINISTRATOR permissions are the only way you can bridge the gap caused by that change right now. If this proposal was set to stone, then there should also be a proposal for ways a bot can assign the restricted permissions to ...
I agree that bots shouldn't be able to request admin in the invite; if a bot really needs admin for some reason (which is an edge case) then users can modify its roles/permissions in server settings. At a bot list, we have blocked invite links with admin for a long time.
Users can always uncheck the "Administrator" box at the top of permissions.

sure they can, but most users don't do that
The permissions that they removed were already unusable by bots.
Not true, can't set an override without having the permission you wanna override
Description
When editing channels, the UI and API enforce a max of 64000 bitrate for stage channels. However, when creating a stage channel, the API accepts bitrates up to 96000. This then makes the client error when editing it.

Steps to Reproduce
- Have a community server
- [Create a channel](https://discord.com/developers/docs/resources/guild#create-guild-channe...
[discord/discord-api-docs] Pull request opened: #4867 Update create and modify channel documentation
- updated bitrate limits
- bitrate and rtc_region can be set for stage channels
- rtc_region and video_quality_mode can be set when creating
- documented field nullability when creating
- documented modifying thread channel flags
Oh, sorry. I didn't notice that, but I will replace the original one with the new example and don't leave both.
@onerandomusername no, bots need to have that permission themselves in order to set that permission for roles or overrides.
Ah, right. I forgot about permission overrides. I agree with you now!
I believe most people have summed it well to why this would be an inefficient solution. The problem at hand is that a server mod/admin/owner are going to invite the bot without the principle of least privilege, and lazily go about it. The Discord Moderator Academy goes over in detail how moderation teams should treat the permission.
At the end of the day, it's **who invites...
Another thing to look out for: If the server's admin changes the base integration permissions (and everything remains synced), then all the specific default_member_permissions stop applying, same as if you unsync those commands.
Issue
Testing a bot as it gets further to complete development, i.e. 30-40 commands maybe, means that you can only restart your bot approximately 6 or so times before you would hit the "200 daily" ratelimit for application command registration.
This occurs even when the commands are just being registered to a single guild. This ratelimit impedes the ability to be able to test, bugfix, and create code for the next 24 hours after hitting it.
Issue Beyond the Ratelimit
The ratelimi...
this only applies to new commands. PUTing existing commands does not count towards this limit.
the rate limit only applies to creating new commands; this should not be an issue unless you are doing something you shouldn't, such as constantly deleting and re-creating many commands.
This may be an issue with the way Pycord registers commands then -- I just restart my bot once I make a change, test it, make adjustments, and restart.
I agree -- which is why this is odd. I'm not doing anything that should be deleting and re-generating commands. My bot has maybe 30 commands total. Only things that I do are make adjustments to the existing functions and reboot the bot.
I believe this may have been due to a register_commands vs sync_commands -- I'll have to confirm that later, but this may be a non-issue.
I'm still curious about the rest of the issue though -- is this ratelimit a 24 hour ban on registering commands? Is it per developer? etc
Is there a better way to change user status (activity) than connecting to the websocket gateway and sending a opcode 3 presence update, and if there isn't, should there be? Adding API functionality to /users/ would be much appreciated. For example, what about a GET request to /users/@me/activity to get the current status (like in the gateway), or a PATCH request to change it the same way? I think it would be really ...
You need an active gateway connection for your bot to have a status/activity so your scenario of not wanting to manage a websocket connection makes no sense
Description
When creating a markdown link with a title containing the sequence "single quote"-"right parenthesis" this will end the link.
Steps to Reproduce
Create a message, with an embed having the following as description:
DisplayText
Expected Behavior

...
I think "automod alert embed" is probably better, since you can flag without blocking, and that sends teh same type of embed
It's also more apt given the format of the descriptions above it
I don't understand why this isn't just gated the same way as users being able to manage command permissions is gated, like most other privileged guild actions (ban, kick, roles, channels, etc).
It seems inconsistent
I completely understand why this is like that, it makes sense that the user has control over the commands that happen in their server.
However, from the Developer's point of view it's very useful and a better way to deal with permissions to access Permissions v2 the same way as a user does.
As mentioned above, a possible solution could be creating a MANAGE_COMMANDS permission for the guild that the bot can request. If the bot is given that permission, it can only manage commands tha...
200 is reasonable as you can only have 100 global
I agree that in an ideal world it should be up to the person who invites the bot, and that person knows all the implications of granting administrator to a bot. There are a lot of user's who will just click through, or assume that it required for the bot to function (when for most it is not).
For example roughly 30% of guilds my bot is in have granted it the administrator permission, (for context I do not request it, or have any features that require it). This is most likely because of a cul...
Something along the lines of the current warning in the roles menu, in the oauth invite flow, would go a long way:
Not sure how many people actually read that, but I agree, a notice in the Oauth2 page would be great.
@nmsturcke
it makes sense that the user has control over the commands that happen in their server
Isn’t it best that the user has control over everything that happens in their server in that sense? Bots can create and manage webhooks, create and manage roles, create and manage channels.
I agree with your manage_commands permission, but I think a bot should be allowed to edit all commands. None of the actions I listed above are locked specifically to what a bot owns or created.
Yes, it returns a guild application command permissions object, as named here.
Bots can create and manage webhooks, create and manage roles, create and manage channels.
They can only do so if they're given permission to do so, that's why I think that a MANAGE_COMMANDS permission or similar would keep the uniformity with other actions a bot (and user) can do
Oh, I didn't see the "object" after. Whoops!
The attachment slash input has been great thus far, but I've ran into a problem; if a user doesn't have the Attach Files permission in the channel they can't upload to the command, thus rendering it unusable if the attachment is a required argument.
While this makes sense at first glance, this behaviour is odd to me; the user isn't uploading directly to the channel, they're uploading the attachment for the bot to work with. And if the command is ephemeral, there's even its own `ephemer...
Yes but the 200 limit is not a global ratelimit. It's for all registrations. I agree, a 200-per-day ratelimit is fine for global registration. But if as a developer I get locked out of registering commands on every application I own for 24 hours for hitting this ratelimit on accident, I have questions about how it works.
Again -- why does the limit exist at 200 for guild commands, considering based on sub and sub-sub commands you could theoretically have hundreds of commands? *Is it that...
There should be at least a way to detect invalid commands via api so the developer can quickly fix them.
this seems to be an issue in about 15-20ish guilds (i don't know all of them, just doing math on the rate of errors this causes, which is very very very low). due to how small this is, and the fact that developers have proactively reached out, we're not currently considering any repairs.
When seeing questions/screenshots that are often posted in dapi/ddevs, I believe a lot of inexperienced devs just check the ADMINISTRATOR permission in the developer portal's URL generator because it's easier, or just to be sure it will works.
A first step would be to remove it from the OAuth URL generator. Someone who wants to request the administrator permission would have to manually set it in the permissions query string. I'm pretty sure this change would decrease the number of new...
Same issue on Client and Web for me
Client: Stable 126462 (1f5f36e)
Web: Stable 126462 (1f5f36e)
Yes. It's like combining per channel permissions + per role/member permissions + default permissions, makes the "bug" come alive.
Following the limit enforcement discussed in https://github.com/discord/discord-api-docs/issues/4118
Larger servers are fulfilling their invite list in a few hours, so to make room for new invite to be created, they to delete oldest or none used invites.
To delete these Invites, they mostly spam the delete button in server settings, which lead to their ip to be banned from this endpoint for like an hour a bit annoying but I can understand.
The problem is, for a discord bot, invites del...
When the `id` field is the application ID instead of a command ID, the permissions apply to all commands that do not contain explicit overwrites.
Experiencing the issue only on desktop: Stable 126462 (1f5f36e). No issues on mobile (iPhone). The library used doesn't seem to play a role.
Decommission date for API v6 and v7 has been postponed to early 2023.
I'd say reaching 200 registered commands per guild in a day is quite unlikely to happen.
In your case, the library you were using was re-registering every time the bot came online, but that is not the intended way of using application commands.
I see -- so this is a per guild ratelimit.
And yes -- I did determine something that was incorrect in registering vs syncing commands and have now solved that issue.
I believe this may have been due to a register_commands vs sync_commands -- I'll have to confirm that later (still cannot register anything), but this may be a non-issue.
I'm still curious about the rest of the issue though -- is this ratelimit a 24 hour ban on registering commands? Is it per developer? etc
I'm also still curious -- why is the ratelimit 200, even for guild commands? Is it that taxing to register a command with Discord's API?
Any updates? The localization is now a documented part of the API
[discord/discord-api-docs] New comment on pull request #4873: Add Auto Moderation Rules to Audit Log
Maybe you could add the data emitted with these as well?
> Guild Voice channels are considered text-based channels, but do not support threads and pinned messages.
Also, does this need to be a warning?
@ckohen Would you be able to elaborate on the patterns you're referencing in regards to permissions v2 and audit log?
@shaydewael I'm not ckohen but audit log change keys tend to be actual attributes such as name, topic, etc. (or $add and $remove). However for permissions v2 the change key is a snowflake instead. It would have been more consistent to use another sentinel key like $update or use $add/$remove as well.
Description
ListActiveThreads has two declarations in the API Documentation:
const (
EndpointListActiveThreads = "channels/{channel.id}/threads/active"
EndpointListActiveThreads = "guilds/{guild.id}/threads/active"
)
Steps to Reproduce
https://github.com/switchupcb/dasgo/issues/1
Result after resolution: https://github.com/switchupcb/dasgo/blob/main/dasgo/endpoints.go
Expected Behavior
const (
EndpointListActiveThreads = "channels...
The docs are not intended to be automatically parsed, and there is no guarantee that endpoints have different names. This is not the first name that a deprecated endpoint has the same name as the endpoint replacing it, and it probably won't be the last.
Thanks for the response. Which one is deprecated? @advaith1
The channel endpoint has a deprecation warning box
Is the ratelimit a 24 hour ban from making ANY registrations on ANY bot you own? Is there a reason this ratelimit applies to the developer and not the application itself?
No. This applies to just the application itself, and not all of your apps. I just tested with a bot account, of which I made and deleted 200 guild commands, which exhausted all creates for that guild for the day, for that application.
Testing the same code on a different bot token successfully made a guild command i...
Experienced this issue constantly for local guild commands, seemed to work fine with global commands the one time I tried those.
Testing the same code on a different bot token successfully made a guild command in the same guild as above.
That's odd. I tried this exactly -- I tried running the bot with an alternate bot token / application (all of my commands specify a guild ID to register to for now) -- and it would not register any commands still.
I thought it was application-specific, but the behavior I experienced showed otherwise. May have been some other factor involved, I guess.
Ports @JustinBeckwith's Cloudflare workers hosting tutorial to the documentation under a new Tutorials category. This is just the first hosting tutorial—more focused on different hosting providers and environments will come in time.
Repo for the tutorial: https://github.com/discord/cloudflare-sample-app
Ports @JustinBeckwith's Cloudflare workers hosting tutorial to the documentation under a new Tutorials category. This is just the first hosting tutorial—more focused on different hosting providers and environments will come in time.
Repo for the tutorial: https://github.com/discord/cloudflare-sample-app
bb6e7db broken nodejs link - shaydewael
Will Getting Started be moved to Tutorials too?
@splatterxl Probably not, or at least until some revisions to the sidebar take place on our side to allow for more customized navigation structure. The getting started guide is framed a bit different than other tutorials we're planning on writing (and will be edited more to be kept up-to-date), and we want to keep that top-level for now since it's meant to be a very visible resource for new devs.
That may change in the future though
97aff76 optimize PNGs - shaydewael
Changing this was denied in #3558 because the endpoint is deprecated, but I don't see why that precludes changing endpoint name(s). I think that there should be a guarantee that two endpoints that do different things should have different names. Get Guild Invites and Get Guild Channels is a good example. Indeed, the link to the non-deprecated endpoint is named "List Active Guild Threads" indicating that there is a distinction.
If changing the name is somehow a problem, maybe add `(depr...
oops thank you, was doing a lot of copy-pasting for fields and should have been more careful
ceeb0fa Remove dm_permission param from Edit Guild Appl... - Lukellmann
[discord/discord-api-docs] New review comment on pull request #4877: Adds cloudflare worker tutorial
This is going to bounce requests off of an external endpoint, and forward them to your machine. Copy the HTTPS link provided by the tool. It should look something like `https://8098-24-22-245-250.ngrok.io`.
Typo
@shaydewael I believe there are three patterns
The major pattern is change key is a property name on the object represented by the target_id property, whose value represents the entire value of the change.
Secondary pattern - most of the keys, with notable exceptions like channel overwrites (supposedly), represent a direct field that contains a singular value, not an array or an object.
Tertiary pattern - The string for the action_type property represents the entity that changed + how it c...
A small question here, is it wanted that edited messages are not checked by the content moderation feature?
[discord/discord-api-docs] New review comment on pull request #4877: Adds cloudflare worker tutorial
# Hosting a Reddit API Discord app on Cloudflare Workers
[discord/discord-api-docs] New review comment on pull request #4877: Adds cloudflare worker tutorial
- Visit the [Cloudflare Dashboard](https://dash.cloudflare.com/)
[discord/discord-api-docs] New review comment on pull request #4877: Adds cloudflare worker tutorial
├── wrangler.toml -> Configuration for Cloudflare Workers
changing the config of a rule, adding removing a keyword, changing log channel ect
i think they are talking about the typo
I can reproduce this without permissions v2:
[ {
"name" : "hello",
"options" : [ {
"name" : "channel",
"description" : "No description",
"type" : 7,
"required" : true
} ],
"description" : "No description",
"type" : 1
} ]

 a bug on an android build and I think it would make for a good feature!
Currently, you will need to ask your users to reinvite your bot with the application.commands scope (no need to kick it first).
Discord will be doing a new scope migration when application permissions v2 will be fully released (however, we have no ETA of when this will happen; it may happen before or after the enforcement of the message content intent).
Hi!
For those who are not aware, discords slash commands limit only the newest 50 bots to work in the server. For any of them after, slash commands will not show up / cannot be configured through the integrations page.
I feel like discord has forgotten to account for a lot of large servers where 50 bots is a common occurrence. While I understand this change helps in combatting servers filled with thousands of useless bots, I don't see a reason why this cannot be reasonably rai...
This might be the same issue as other have reported here: https://github.com/discord/discord-api-docs/issues/4856
Alternative: Reject authorising bots when there are already 50 bots authorised in the guild.
HTML is disallowed in Discord messages for, well, obvious reasons. However, a limited subset of Markdown is supported:
**Hi! I'm bold**, __and i'm underscored!__
_I'm italic, **and i'm italic bold.**_.
`inline codeblocks are supported too`
and \`\`\`
normal codeblocks too (with a few languages syntax highlighted too!)
\`\`\`
Additionally, in Forum Posts, unordered lists and headings are supported. This is probably where you're getting the anchored links from.
HTML is disallowed in Discord messages for, well, obvious reasons. However, a limited subset of Markdown is supported:
**Hi! I'm bold**, __and i'm underscored!__
_I'm italic, **and i'm italic bold.**_.
`inline codeblocks are supported too`
and ```
normal codeblocks too (with a few languages syntax highlighted too!)
\```
(remove the backslashes of course)
Additionally, in Forum Posts, unordered lists and headings are supported. This is probably where you're getting the anch...
01863bf Update docs/tutorials/Hosting_on_Cloudflare_Wor... - shaydewael
e676568 Update docs/tutorials/Hosting_on_Cloudflare_Wor... - shaydewael
989834e Update docs/tutorials/Hosting_on_Cloudflare_Wor... - shaydewael
5556e79 Update Application_Commands.md (#4855) - onerandomusername
Currently, when submitting a command the only way for a bot to let the user know there was an issue with the command is responding the a message detailing the error (which is fine), however, this also clears the command input from the text box. This means the user has to either copy paste or retype everything manually. What I'm proposing is a new response type that shows an ephemeral message on the user's client alongside loading the command input back into the chat box. The response would in...
@advaith1 Is there a lingering \* here?
e4b4761 Thread archive durations are no longer boost lo... - advaith1
For example, what about a GET request to /users/@me/activity to get the current status (like in the gateway), or a PATCH request to change it the same way?
The way Windzyboy mentioned is actually quite similar to how Guilded handles presence.
The way Windzyboy mentioned is actually quite similar to how Guilded handles presence. So, it is not unprecedented, just that Discord does not handle it like that.
I also want to clarify that I don't want to remove gateway presence, just add a new way of updating it.
13870a1 add warning - shaydewael
[discord/discord-api-docs] New review comment on pull request #4877: Adds cloudflare worker tutorial
iirc these aren't guild and channel ids (and the format isn't documented)
Description
The official client does not clear its command cache upon an invalid application command error. This is a problem as I have updated some commands (deleted a few and added others), and I do not want to require all users to refresh their client before they are able to use my new commands, nor receive errors of invalid commands.
Steps to Reproduce
- Use a command
- delete said command
- try to use it again, the cache will not have been cleared
Expected Behavior
Cli...

I would really like to use slash commands, but I hate the rich text editor/wysiwyg. Is there any chance these settings could be decoupled from each other, so that more people can have slash commands available to them?
That's great to hear, thank you for the extremely fast reply!
You can look into using embeds
I found it's deprecated :
Embed types are "loosely defined" and, for the most part, are not used by our clients for rendering. Embed attributes power what is rendered. Embed types should be considered deprecated and might be removed in a future API version.
embeds are not deprecated. that text says that the embed.type property is loosely defined
This is still a bug in phone even in beta
This makes sense to me, in the context of http interaction based bots. After all they've already made http bots show in the online list. Maybe not the exact implementation, but a way to set status without an active gateway connection.
This would honestly be a great feature. It saves the additional step of validation locally upon submit, which is quite nice. The validation has already been run, as well, in order to return autocomplete results.
While it is similar, their request is simply for alternate styling of an ephemeral message rather than the UX improvements I'm requesting here.
When could we expect a fix or more info on the developers about it?
This adds a guide to walk devs through implementing and designing application commands, especially if they're currently using message content. A lot of this is based on feedback asking for guidance on where to start with implementation, onboarding patterns for commands, and just general framing for commands outside of more reference-focused docs. The intention is to keep this guide pretty high-level to lay out information, then link out to relevant docs for more info.
Also I think folks w...
This pull request cleans up the Guild object by moving fields specific to the GUILD_CREATE event, to the documentation for said event.
The point is for this to make it easier to read the documentation by reducing the amount of fields and arguably more importantly removing optional/nullable fields for static typing cases. The end result is that it is much easier to work with the API since you get a clearer understanding of the Guild object.
[Slash commands](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/slash-commands) are the most common type of command. They are accessed by typing the command’s name prefixed with a forward slash (`/`) or by using the plus button (+) to the left of the message input.
[Slash commands](#DOCS_INTERACTIONS_APPLICATION_COMMANDS/slash-commands) are the most common type of command. They are accessed by typing the command’s name prefixed with a forward slash (`/`) or by using the plus button (+) to the left of the message input.
This implies that you need to send a request so that global commands will populate in a guild
maybe make "Bearer token" a link to the OAuth2 docs?
If all goes well, your endpoint will be successfully saved. And if not, you should double check that your app is running with a public endpoint, is verifying request signatures, and is properly responding to `PING` requests.
Commands use the [interactions model](#DOCS_INTERACTIONS_RECEIVING_AND_RESPONDING) rather than the WebSocket gateway. The interactions model uses HTTP requests to send your app relevant information only when a Discord user triggers one of your app’s interactions.
A fix has been deployed, but prior updates may still result in a corrupt state. We hope to have existing states updated by the end of today
I thought for this payload specifically, it might be helpful to notate the payload instead so it's clear which nested id fields are important to pay attention to, and how different fields map to features/concepts
This should also be done for the Message object, which only has guild_id sent in gateway events.
Right now, we have to use a command like /settings or an online dashboard to configure settings an application might offer, such as a changeable language. This, however, could be improved by providing settings inside Discord that an application would utilise, this also gives the end-user an easier way to configure the application or configure multiple applications in one place. Something similar like command permissions v2, only allowing developers to customize it a bit. For instance, there...
(whoops, didn't read the whole paragraph)
Seems to be resolved on
App: 124.0 (32114) stable; Manifest: W/"f500b84ab5f2a99131ac7ca22b018d78"; Build Override: N/A; Device: iPhone10,4 OS 15.1;
The accessibility point still stands however, this is the only place it'll be heard.
Seems to be resolved on
App: 124.0 (32114) stable; Manifest: W/"f500b84ab5f2a99131ac7ca22b018d78"; Build Override: N/A; Device: iPhone10,4 OS 15.1;The accessibility point still stands however, this is the only place it'll be heard.
Ah can you open a separate ticket so we can track it there :)
- Adds option to use Replit in Getting Started
- Adds link to Cloudflare Workers tutorial at the bottom
Uhmm, I don't really know, because with a "text-based" channel I refer to a channel that has similarities with Text Channels, but I need to "specify" things that are in a common Guild Text Channels, not supported on a Guild Voice Channel, because we are on a Guild context. What do you think?
I don’t think we need a warning box to explain standard app functionality; the other channel types don’t have this
So, it will be better if I remove all of this?
> warn
> Text in Voice: Guild Voice channels contain chats, are considered text-based channels, but do not support threads and pinned messages.
I noticed one audit log event is missing. The event has the 143 action type.
Is emitted when the AutoMod system user blocks a message of a user in a channel according to an auto-moderation rule.
What would be/is the name of the event?
AUTO_MODERATION_BLOCK_MESSAGE
I said only place to be heard is because this github repo is for api issues only.
Discord testers is closed, discord bug reports says it's "intended" or "NAB"???
Discord accessibility google form is a literal black hole.
you need to make another issue in this repository
[discord/discord-api-docs] New comment on discussion #4889: Settings for applications inside Discord
Great, more features that will absolutely never come to mobile!
This should be fully fixed now
Meaning, reload the bot and wait for the slash commands to work? So bot new invite?
Thanks for the report. This doesn't look to be a bug in the API or its documentation, but rather of the autogeneration library in use. Discord does not support autogeneration of its documentation at this time, but that is a feature request we are considering. You can track that discussion over at https://github.com/discord/discord-api-docs/discussions/3235
Thanks for the report, but this does not appear to be a bug with Discord's APIs or documentation. You may wish to file a bug report for the Discord client over to our support team at https://dis.gd/bugreport
This behavior is considered working as intended at this time. We only support alphanumeric characters in attachment filenames at this time. The API permits you to send any characters, but will strip the incompatible ones.
Thanks for the additional information. This does appear to be working as intended at present. There is an open discussion about this over at https://github.com/discord/discord-api-docs/discussions/3231 which could lend to a future API change to improve this functionality.
A CodeBlock Option in Slash Commands will be good, it will help bots like compiler to switch to slash commands.
I know we can use string option but having a dedicated CodeBlock Option with syntax highlighting will be good.
I will just "revert" all I made and update the example/payload of the Guild Voice Channel.
[discord/discord-api-docs] New comment on discussion #4889: Settings for applications inside Discord
react native rewrite lool
[discord/discord-api-docs] New comment on discussion #4889: Settings for applications inside Discord
Still waiting for stickers
@typpo ?
It was a client issue I believe, just restart your client and it should be fixed.
Any word on this other issue? The value of default_member_permissions doesn't have any visual effect in the discord client https://github.com/discord/discord-api-docs/issues/4863
Is the documentation incorrect, then?
https://discord.com/developers/docs/reference#uploading-files
The filename for these URLs must be ASCII alphanumeric with underscores, dashes, or dots.
Underscores are valid, just not at the start of the filename.
- "this_is_ok.png"
- "_nok.png"
I would not expect a filename to be modified, either it's accepted or throws an exception.
With permissions v2 I think it's upto the Staff to set perms not the bot owner, I'm not sure..




