#github-notifications

1 messages · Page 33 of 1

chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
#

The Problem

With Discord pushing toward the use of interactions, I think a major pain-point for both developers and end users is the non-descriptive errors displayed in the client when the interaction fails.

End users often get frustrated when encountering an error, and that frustration is directed to the bot developer. However, many of these errors may not be the developer's fault, and it can be hard to diagnose when the only info provided to the user is "This interaction failed"

Li...

#

I was just thinking that it's really a hassle for bot designers to have to create a server (or a few) to hold their bots emojis. This is made worse with multiple bots, forgetting which ones were only for testing, wanting to use user inputted images, etc. This could be solved by using temporary emojis allowing images from the filesystem or links to be used in place of emojis everywhere.

Example:
.setEmoji('../images/emoji1.png)

Not sure if this is the best solution, any thoughts?

chilly siloBOT
chilly siloBOT
#

Description
When we hit the "hidden" per-channel ratelimit on webhooks which is 40-45 seconds, the headers shows the normal 5/5s.

Steps to Reproduce
Spam a webhook message 30 times. The next one will return 429 with a "retry_after" of 40 or more seconds and a 5s x-ratelimit-limit / x-ratelimit-remaining

Expected Behavior
Headers should match the longer hidden ratelimit

![res](https://user-images.githubusercontent.com/5225004/139786815-bb0ad39e-51f0-4894-a3f6-ec464a9b2f...

chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
#

Description

As shown in the discord.py documentation (https://discordpy.readthedocs.io/en/latest/api.html#discord.Guild.audit_logs), The guild.audit_logs method has a keyword argument called after, which is a filter meant to ignore entries before a given datetime or entry, however it does not seem to filter anything.

Steps to Reproduce

1- Go through the default procedure to obtain a discord application and bot API key.
2- Make sure the discord bot is in 1 guild which current...

chilly siloBOT
chilly siloBOT
#

Description

When trying to delete an Guild Role with an reason (as the docs says), you can use the 'Audit-Log-Reason' header. But when using it, it succesfully deletes the role, but without any reason. I've tried the 'Audit-Log-Reason' with kicking an member with an reason exactly the same as deleting the role and with the kick it works perfectly.

Steps to Reproduce

As the docs say, use the delete method with the right url. (v9 api btw). And run the code.

**Expected Beha...

chilly siloBOT
#
\*\*\*\*\*\* If the Message Content Intent isn't enabled for your bot, these fields will either be an empty string or empty array, depending on the data type. These fields are still always accessible for messages the bot sends, messages the bot receives in DMs or messages in which the bot is mentioned. [Learn more here](https://support-dev.discord.com/hc/en-us/articles/4404772028055).
chilly siloBOT
#

Description
The 6000 character limit for embeds in message applies to all embeds in a message, instead of applying to each one of the embeds individually, making it impossible to send larger amounts of text in multiple embeds. Neither the expected not the actual behaviors are documented, which is why I assumed this to be a bug instead of a feature

Steps to Reproduce

  1. Create 2 embeds that both have a description with 4000 characters
  2. Try to send them both in the...
chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
#

As we know, when we get an item using management (mgmt henceforth) api in the response we have ids of the fields instead of code name which makes it hard to know what fields value it is. So we use the delivery api to fetch the item and use mgmt api to update the language variant. I was testing the the endpoints in postman. The mgmt api throws 400 bad request because of some unallowed attibutes of in the richtext while updating the item.

PUT https://manage.kontent.ai/v2/projects/c82174...

chilly siloBOT
#

we support quite a few sizes that are not documented, as there are lots of things to display in the app at various sizes. i'll check if we should document them or not but most likely the only ones that people using our public api should rely on are what is currently documented.

It seems as though size 100 is used in the client. If I use the Discord app on Windows (Stable 103410), I can drag and drop someone's avatar into a browser like Chrome (95.0.4638.69) and it will show up as `?size=...

chilly siloBOT
chilly siloBOT
#

Request

Hi there, as a quick suggestion: I think a feature to determine whether or not a txt based file would be previewed would be helpful.

To clarify, I am talking about these file previews:
Screenshot

Approach

The API could be something sort of this, accessible to bot developers of course:

  • preview=True/False

And additionally, if this were to pass on to clients, it c...

chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
#

Description
I am using https://github.com/discordjs to have a bot send embedded messages to a discord channel.
(Early preface, I have already opened an issue with them, they said its not an issue with their library https://github.com/discordjs/discord.js/issues/6940)

The embedded messages I am sending contain an image with a URL of the following format: https://bafybeifjmhuhyfk52euitamx5qajmn4g6ssopj2vm2lrznhj5nt4c27ctu.ipfs.dweb.link/fff612879aac4

If I take that URL and send it ...

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

Agreed. Update on this would be dope. Trying to get my friends over to Discord by making a GroupMe bridge to make it their choice until I start making messages that say "view the original message in Discord* for things GroupMe can't do to prove it's inferior. Feels bad that I can't show the better native reply interface and will have to resort to embed replies from the Webhook. Would also accept the Bot sending messages as a different username/avatar as an alternative - the Webhook execute ...

chilly siloBOT
chilly siloBOT
#

When I asked about having a response type to indicate a generic success back in july they seemed to want people to use ephemeral messages for things like this, especially if you're sending text in the response. They did however indicate that a generic command succeeded response might be something they would add -- this would be like slack's empty slash command response I imagine -- and potentially use a toast for this.

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

I'm not a Node.js dev, so perhaps I'm missing something, but I'm curious. Is there any reason for this change beyond "the native crypto module comes with Node.js"? For example, is the tweetnacl library unmaintained, or does it contain security flaws?

I ask because, when it comes to security such as this, I don't think we need to be mucking around with all these additional options unless we absolutely need to -- and most people don't need to. Otherwise, we can accidentally introduce a sec...

chilly siloBOT
chilly siloBOT
chilly siloBOT
#

@angrymouse I think you misunderstand me. I'm not talking about node.js itself having security vulnerabilities. Rather, I'm talking about someone causing their own security vulnerabilities if they don't know how to properly use the crypto module. The crypto module does appear to be putting the brunt of the settings on the user, which signals to me that users of it may inadvertently specify settings that may not be as strong as they sound -- thus causing a security vulnerability.

That...

chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
#

The create message and send webhook endpoints should be able to have the flags field as an argument. This would allow us to send messages with embeds pre-suppressed, so we could repost user content and always be able to emulate their own 'embed links' permission. Currently if you want to do this, you need to make two requests, and the embed would pop out and then quickly vanish.

chilly siloBOT
chilly siloBOT
#

If Node's Web Crypto implementation is comparable to Workers', then it's significantly faster than tweetnacl, imo that's a good reason to switch

The main thing for me is that the code is at least useful as an example to more than javascript developers, more so than the python nacl example in my opinion.

doesn't that support this change? it's switching from a third party library to web crypto

The comment: "to native node.js crypto module" initially lead me to believe they wer...

chilly siloBOT
#

From MDN:

Warning: The Web Crypto API provides a number of low-level cryptographic primitives. It's very easy to misuse them, and the pitfalls involved can be very subtle.

Even assuming you use the basic cryptographic functions correctly, secure key management and overall security system design are extremely hard to get right, and are generally the domain of specialist security experts.

Errors in security sy...

chilly siloBOT
#

Description
When you try to remove an attachment from another users message when you have permission to it will send you an error in the console and not remove the attachment

Steps to Reproduce
Send an attachment and text from one account.
Go to another which has permissions to remove attachments.
Click the X.
Click remove the attachment.
Observe.

Expected Behavior
The attachment is removed

Current Behavior
The attachment is not removed and the client gives yo...

chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
#

Plus one for displaying min/max values in numerical option range errors - this was the very first thing I noticed as a user of my own bot and it felt like it would have been an obvious thing to include from the get-go. As it stands, us developers have to put the range information in our option descriptions, which isn't particularly great.

Ideally any numerical options with a min_value and/or max_value would show that on the option as it's in the menu / selected.

chilly siloBOT
chilly siloBOT
#

web crypto will be available on any platform that supports JS (cloudflare workers, deno, browsers), while tweetnacle only works on nodejs

While I was working on a response for this, I took a look at the tweetnacl NPM package, as well as its repository.

It seems that the NPM package is actually a port of all the NaCl functions to JavaScript, meaning that it can be used anywhere JavaScript can (includ...

chilly siloBOT
#

This behavior looks to be working as intended. You may encounter more internal resource limits as our infrastructure team has been working towards improving platform stability for outlier abuse we've been seeing. When internal limits are encountered, you will receive a 429 which does not apply to your resource usage specifically. The normal rate limit headers track your per-user usage, and you should still consider them. In this situation the Retry-After is the header acts as an override, a...

chilly siloBOT
#

Hello 👋

Since stage discovery was removed, i believe a lot of documentation is left in limbo which should either be fixed or deprecated.

Both privacy_level and discoverable_disabled seem to be something that should be deprecated.
https://discord.com/developers/docs/resources/stage-instance#stage-instance-object-stage-instance-structure

Guild member update events and i believe voice state updated were changed to make joined_at nullable to make discovery work. This makes for a more ...

chilly siloBOT
#

So today I unsuspectingly wanted to add another sub command to my slash command and i was prompted with this error:

DiscordAPIError: Invalid Form Body APPLICATION_COMMAND_TOO_LARGE: Command exceeds maximum size (4000)

and the friendly people in Discord Devs told me I can't have over 4000 characters total in my command.

I'm trying to keep my descriptions short but since I have a few options with choices while still having them as helpful and detailed as possible to easily use my ...

chilly siloBOT
chilly siloBOT
chilly siloBOT
#

I really like idea of having application running by just http webhook. The thing is that most people (& 3rd tools) are used to see bots as regular users so they are listed on member list from right side of Discord app. We received a moment ago ability to achieve this by using both application.commands & bot scopes.
image

There's only 1 problem with this...
Currently - app added t...

#

Being honest I don't get it why you would want do have it. In my opinion, timestamps from all objects you can potentially receive should vanish. Each object has own id and Discord's ids are snowflakes. You can get exact timestamp from snowflake.

Having extra timestamp vield on each payload makes it only heavier. You may see it's not much which is true. But at scale - from just a few extra bites you may end up with megabytes of saved network.

#

This sounds like one of those options that will make (at least PC) client even more laggy. I think that so far every popup I've seen created lags in no time. Another thing is that can be very dangerous - assume we have some bad bot (or maybe just bot who bugged) and now it would send storm of those popups to people's screens.

I don't see any option it would be good without adding some really hardcore limitations. The thing is that if you hard limit this - it will become useless.

#

You have ability to send private messages that only user who executed command can see. That's already kinda popup.
If you want - you can send short text and then delete it after few seconds.

Discord app is already overloaded which a massive amount of things that statistically - most people doesn't really use. I just don't like adding things that will be used by like maybe 1 out of 1000 people.

chilly siloBOT
#

This is actually an intentional limitation. They were created for GameBridge, an old SDK product we built for game integrations. It allowed games to use text + voice from Discord in their games through temporary group DMs. Because these group DMs automatically get deleted, attachments were not storable. We will likely be turning down the ability for bots to create group DMs in the future, and I would not recommend using these in an integration (we are no longer approving additional applicatio...

chilly siloBOT
#

I'm a developer for a bot in ~250,000 guilds and our bot has been experiencing shard crashes at least once or twice a week for the last few weeks while trying to update status.

Talking about it with other large bot developers, I was told updating status pauses events while all guilds process the new status, and if a guild is lagging / doing expensive stuff, that might cause issues.

This is very frustrating. Could this either:

  • get fixed
  • get documented (similarly to the note on [Sha...
chilly siloBOT
chilly siloBOT
#

There's plenty of undocumented guild features for various kinds of purposes, for example this one. However as others already mentioned these guild features won't be encountered by bots on the regular since those guild features only exist on very specific servers. As also already mentioned, no bot should crash when it encounters an unknown guild feature, if it does nobody but the developer(s) of the bot or the developer(s) of the library used for the bot are to blame.
As for the actual purpose...

chilly siloBOT
chilly siloBOT
#

This PR adds documentation for guild time outs, which currently mainly only consist of the communication_disabled_until field on guild member objects. Since this field has been showing up on guild member objects for quite some time now and the field getting functionality on the API-side, I feel like it's at least worth creating a draft PR mentioning this field, since this can affect bots on servers where this gets tested. For example, someone could be time outing the bot and the bot would b...

chilly siloBOT
chilly siloBOT
#

I don't know how DiscordPY works but for DiscordJS you can easily fetch all commands for a guild when you don't specify a command id. https://discord.js.org/#/docs/main/stable/class/ApplicationCommandManager?scrollTo=fetch And Discord developers documentation: https://discord.com/developers/docs/interactions/application-commands#get-guild-application-commands

Also to come to the topic of guild commands you shouldn't read them on startup but store them upon creation, they only change ...

chilly siloBOT
#

Here are the current endpoints we're looking at, with a bit more consistent naming:

/guilds/<guild_id>/guild-scheduled-events [GET/POST]

  • return all events for a guild [GET]
  • create new event [POST]

/guilds/<guild_id>/guild-scheduled-events/<guild_scheduled_event_id> [GET/PATCH/DELETE]

  • get existing event [GET]
  • update existing event [PATCH]
  • delete existing event [DELETE]

/guilds/<guild_id>/guild-scheduled-events/<guild_scheduled_event_id>/users [GET]

  • return users...
chilly siloBOT
#

it is unlikely that we will change the api to account for weird attachment names. my recommendation would be to use simple ascii names instead, like f'image{n}'

Why not just support Utf8 to include characters from the language with the most native speakers on earth in filenames?

IDNA is also a possible solution and as seen by the author is not supported right now.

chilly siloBOT
#

There's no need to bulk update with an empty query if you're just going to bulk update again with new ones, that's the whole point of bulk update, its an upsert.

For the "advanced" way, I'm again not sure why you're stuck in the delete-create loop. In fact that method would not work at all as described (delete then update would error on the update)

The update with the empty JSON was more intended for explaining how to remove them all...
That's why i wrote it in 2 separate lines, ...

chilly siloBOT
#

My problem with this, it's not one quick grab request, which is my library would want to do, they don't want to fetch every slash commands for every guild that would be very api heavy, and they don't really want to store local commands locally, and how it works makes it impossible to essentially do this:

  1. keep Database of every slash command and what guilds it is in so...
  2. Database shouldn't be needed anyway.

Now i gave you the link on how to read all commands per guild, yo...

chilly siloBOT
#

List of gateway events:

GUILD_SCHEDULED_EVENT_CREATE
GUILD_SCHEDULED_EVENT_UPDATE
GUILD_SCHEDULED_EVENT_DELETE

GUILD_SCHEDULED_EVENT_USER_ADD
GUILD_SCHEDULED_EVENT_USER_REMOVE

These will be grouped into a new gateway intent so bots can opt in.

The following two events currently sent that was mentioned in this PR, when a user RSVP's to an event or removes RSVP, will be deprecated soon in favor of the new `GUILD_SCHEDULED_EVENT_USER_ADD / GUILD_SCHEDULED_EVENT_USER_REMOVE...

chilly siloBOT
chilly siloBOT
#

It's not a matter of bloating, it's a matter of offering creative and inspiration for better solutions to bot developers that don't want to cater towards the current methods of handling things like this. Is it really necessary to send an ephemeral for every time you want temporary information? For example, that could spam and clutter up the chat. Or even sending a message and deleting it a few seconds later takes away the practicality of something like an ephemeral as well. It's also just usi...

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

I don't think forcing developers to send a message to "respond" to an interaction is also a smart solution.

This was my point.
I want to send a something really small and generic like: {type: INTERACTION_SUCCESSFUL} and discord show a toast or similar inline to indicate the command has completed. We shouldn't need a whole message for that.

I highly doubt discord would give interactions two avenues to send arbitrary text, but something like I described above would solve your p...

chilly siloBOT
#

I'm passing the exact code I receive from /authorize but receiving this error after attempting the exchange. What is especially bizarre to me is that this is a project I'm continuing after a few months hiatus and oauth authentication was working perfectly at that time. Here is a sample curl and the error response, let me know if there is any other information I can provide.

curl --request POST \
  --url https://discord.com/api/v8/oauth2/token \
  --header 'Content-Type: application/x-...
chilly siloBOT
#

Similar to the existing "Dismiss" link, I would like to have a way for a user to make a ephemeral response get posted to the channel they issued the slash command in. My bot can look up information in a game for a given user, and sometimes they are doing this for themselves but sometimes they are showing off. I could certainly add a "public" boolean option, but it would be much nicer for them to see the response and then click to make it a channel message instead of an ephemeral message. Alte...

chilly siloBOT
chilly siloBOT
chilly siloBOT
#

TL;DR: When approximately are we getting Membership Screening integrations?


Hello,

As you all know, Discord has a "Membership Screening" feature which lets you put rules. It also says "coming soon" are short answers, paragraphs, multiple choice, and integrations. The last one is especially important for us developers, as it lets us screen people with our own custom code. AFAIK, these have been "coming soon" for more or less a year. Did Discord just forget about this?

Disco...

chilly siloBOT
chilly siloBOT
#

I disagree with @Lulalaby

  1. This is blatantly not a fork, it appears to be its own standalone project
  2. Replacing d.py is a good thing. D.py is dead, making something new should not be punished, and instead should be encouraged
  3. This lib is young, and this is the only point they made that i think has any relevance. Potentially, it should be held off from being added until the lib develops further

Adding this lib to community resources would only encourage use of this lib, and fu...

chilly siloBOT
chilly siloBOT
#

Hey there. As one of the main maintainers of the Pincer library, I don't think the library is mature enough to be used in production (since it's in pre-alpha). Many features still have to be implemented.

So I fully agree with @Rapptz.

Once we are at v1 (have most of the API implemented, proper tests, and overall a stable usable library) we should recreate an issue for this. But that moment is not right now, nor is it (probably) in the near future (next 2 months).

@Lulalaby Pi...

chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
#

From what I have seen, you cannot mention (specifically roles in my case) by replying to an interaction without giving the Mention @everyone, @here and all roles permission to the @everyone role.

I think this would be a good idea to have added, or perhaps it is a bug? This would allow bots to ping roles by having the above permission attached to one of the roles they have rather than having the @everyone role where anybody can mention any role. It is currently set up like this with norma...

chilly siloBOT
chilly siloBOT
#

Description

When i create a thread from a message and trie to delete the duplicate of this message in the first of the thread it throw "Cannot execute action on a system message"

Steps to Reproduce

get discord.js create a thread with startThread() then delete the first message with bulkDelete

Expected Behavior

delete the first message of the thread

Current Behavior

throwing a error from discord api

Screenshots/Videos

http://prntscr.com/1zb6p...

chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
#

To clear up some of the confusion here -- the initial access to the endpoints weren't officially supported and not intentional :) As we formalized the work on the events feature and finalized the api we wanted to make sure we didn't thrash everyone with breaking changes so we cleaned up the access to endpoints so we can reopen them once the feature set and api were more stable. The endpoints I posted above will be opened up hopefully today and worst case Monday. We'll get these api docs updat...

chilly siloBOT
chilly siloBOT
#

Why isn't discord using the standard RFC 7519 for the access token?

During my OAuth2 Authorization Code flow, if I want to send the users token to one of my backend services I want to be able to validate the token without making an additional api call to discord. Typically this is done by checking the signature/etc and comparing it to the payload to ensure discord was the issuer and it wasn't tampered with. Maybe I'm missing something but I need to validate the access_token on a backend s...

chilly siloBOT
#

Ahh looking at how the timing currently is between the different pieces of the rollout I might just knock out this docs change directly this weekend to make sure we get this out asap for all of you. And also so we're not putting any pressure on anyone to contribute or review my changes to this on any timeline. Sorry I know ya'll put a ton of work into this, we really appreciate that you're willing to help contribute here. I'll make sure I shout out the contributors from this PR in the other c...

#

Ahh looking at how the timing currently is between the different pieces of the rollout I might just knock out this docs change directly this weekend to make sure we get this out asap for all of you. And also so we're not putting any pressure on anyone to contribute or review my changes to this on any timeline. Sorry I know ya'll put a ton of work into this, we really appreciate that you're willing to help contribute here. I'll make sure I shout out the contributors from this PR in t...

chilly siloBOT
#

So events are rolled out now and I think they are a great step for discord. I run a bot that revolves around event scheduling, specifically for MMO guilds.

The event feature discord implemented is nice, but naturally lacks the depth to work for any but the most standard use cases. And that's fine.
The limitation with discord events is that a member can only mark themselves as "Interested", which is not very definitive and lacks further information about any sort of status/role the member ...

#

So events are rolled out now and I think they are a great step for discord. I run a bot that revolves around event scheduling, specifically for MMO guilds.

The event feature discord implemented is nice, but naturally lacks the depth to work for any but the most standard use cases. And that's fine.
The limitation with discord events is that a member can only mark themselves as "Interested", which is not very definitive and lacks further information about any sort of status/role the member ...

#

Yes but bots can already directly ping users. It's not like we have shielded users completely from bots until now. If a bot is acting maliciously it has to be removed or the relevant permissions disabled. Push notifications have their own granularity and if a user doesn't want to receive them for events, the user should be able to turn that off. If the user does want to receive them but a bot is adding the user maliciously to events, then the bot needs to be removed/permission revoked.

As...

chilly siloBOT
chilly siloBOT
#

Hello there! I am wondering whether discord will support receiving scheduled events created in a discord guild (maybe “GUILD_EVENT_CREATE”) in raw JSON form and then using it to do anything with the data. Like, For example: we can post a message in a channel in the community where it is happening about the upcoming event. Or, we can edit that message to check how many people are interested in that event.

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

I think this is the only major markdown lacking support in Discord. While it's tough to implement it would be great to have it. Because right now there are no good ways to display a table (e.g. ASCII - problems on mobile devices, fields - tough formatting).

chilly siloBOT
chilly siloBOT
chilly siloBOT
#

@Jupith Try to set the user-agent to a mobile client and see if that does the trick. It puzzled me how you are even able to access the endpoint if it is blocked for bots.

Don't do that, its unnecessary and won't work. The scheduled events APIs are blocked to bots until the docs for it are officially pushed out (I believe Monday the 15th is when that's happening). Till then, the datamining here is somewhat pointless. ddevs have already said they are working on docs and documenting everyth...

chilly siloBOT
chilly siloBOT
#

Description

When archiving a thread channel, discord will send one THREAD_UPDATE event. However when unarhiving the same thread it will send two THREAD_UPDATE events.

Steps to Reproduce

  1. Create a thread
  2. Archive the thread
  3. Unarchive the thread

Expected Behavior

Ideally the inverse operation (unarchive) would have a symmetric response whether that be two responses for each unarchive/archive, or one event for each.

Current Behavior

...

chilly siloBOT
chilly siloBOT
#

Description

Steps to Reproduce

  1. Fill out details of a slash command that has a string parameter with autocomplete
  2. Try to copy or cut the command, then paste it into the command bar
  3. Any parameters after the autocomplete will get absorbed into the autocomplete one, as if you entered it all into the autocomplete parameter.

Expected Behavior

You should be able to copy and paste slash commands and have them stay in their exact form, similar to how it w...

chilly siloBOT
#

Embeds already have a width problem from my experience, this would reduce the available width to them even further.

I agree that the positioning isn't very good though.
In general, it's visually not very appealing to have an already existing message grow updards. Instead, maybe it would make more sense to move the "edited" hint underneath the embed, before the reactions appear.

A message growing downwards is already something that happens regularly within Discord when users add reactio...

chilly siloBOT
chilly siloBOT
#

'Report' is an excellent tool for people who have been scammed or caught in pornography to defend themselves. However, there has been an increase in the number of cases where these tools have been misused.

For example, we have witnessed people using self-bots to report specific users/servers in large numbers, and then temporarily ban the users/servers, or sell them as "Discord server ban acting".

In fact, my friend user was banned by the tool. Also, "If your server has
(for example: us...

chilly siloBOT
chilly siloBOT
chilly siloBOT
#

@hemu could you give a little explanation what SKUs has to do with scheduled events. Iirc the word comes from the store pages with the SKUs. Why does a scheduled event has SKUs. What could they be. Is it i.e. something like a feature related to stage event tickets?

good question! you are right, the sku related fields were part of the older iteration when we used to have ticketed events. We don't use these for the current iteration of the scheduled events feature so I was going to leave...

chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
#

I did a pr a while ago to this pr. Isn't merged, should I close it? apacheli#1

Wanted to double check what the final decision on images was today before responding on this thread re. images. We currently won't be supporting images for this initial launch. I'm going to remove all mentions of images from the docs so that they can be re-added later if support for images is added.

Thanks for submitting this change, I think we can hold...

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

You can use the api with bots just now if you send the x-super-properties header

I don't think this is true...

It is true! @hemu - there looks to be some experiment gating based on client version in the x-super-properties header that is causing these woes.

Yep we've been debugging this to pinpoint the best way to fix this without breaking the experiment. It's def the experiment gating.

You can use the api with bots just now if you send the x-super-prope...

chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
#

Description

The status field on scheduled event is always set to 1 (scheduled) in GUILD_SCHEDULED_EVENT_DELETE

Steps to Reproduce

  1. Create a scheduled event
  2. Cancel it. (More > Cancel Event)
  3. Observe the GUILD_SCHEDULED_EVENT_DELETE event.

Expected Behavior

The status field should be 4 (cancelled)

Current Behavior

It is 1 (scheduled)

Screenshots/Videos

No response.

Client and System Information

Canary 104918 (302022...

chilly siloBOT
#

This has been a contentious issue for a while, since at least the introduction of news/announcement channels. It would be nice to have more rigorous definitions, but I think documenting them would require Discord to first internally move away from a monolithic channel type.

I currently have channels split into different types, but my rewrite (stuck in development hell) uses a single channel type because there are no separate types according to Discord.

chilly siloBOT
#

This has been a contentious issue for a while, since at least the introduction of news/announcement channels. It would be nice to have more rigorous definitions, but I think documenting them would require Discord to first internally move away from a monolithic channel type.

Not necessarily though. I guess you can compare it to how according to Linux everything is a file, that's the way Discord views channels.

I think documentation can go a long way - technically these separated objects ha...

#

Voice channels receiving text support means that these models should not be taken as concrete. Documenting them this way is helpful for some people but also very misleading. Optional fields like last_message_id are still to be treated as optional on all relevant subtypes (i.e it should be optional for text channels!).

Multiple discord developers have mentioned that discord only uses the base channel model and that the documentation right now is all they guarantee: this means that we...

#

If this PR were to be approved, would changing other object documentation be needed to distinguish the "types" like done for channels?

As the author I can't say whether this is approved or not, but to clarify: That's a great place to look next, but not as "needed" as I find this PR (the channel object is on the extreme end; in its current state the interaction object is still somewhat readable). That said, as Discord will most likely add more fields and expand on interactions I think that'...

#

I did a pr a while ago to this pr. Isn't merged, should I close it? apacheli#1

Wanted to double check what the final decision on images was today before responding on this thread re. images. We currently won't be supporting images for this initial launch. I'm going to remove all mentions of images from the docs so that they can be re-added later if support for images is added.

Thanks for submitting this change, I think w...

#

Voice channels receiving text support means that these models should not be taken as concrete. Documenting them this way is helpful for some people but also very misleading. Optional fields like last_message_id are still to be treated as optional on all relevant subtypes (i.e it should be optional for text channels!).

Multiple discord developers have mentioned that discord only uses the base channel model and that the documentation right now is all they guarantee: this means tha...

#

Apparently there's going to be a rewrite of these docs at some unspecified point, and then these models might be split similarly to what you've done. To be clear: pragmatically speaking that field I mention will never not be sent on v9 as far as we're aware, but these docs are also a get out jail free for discord so-to-speak. If they clarify what fields are relevant then I would stand corrected, this is based on the fact they only internally deal with one channel type.

chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
#
docs/resources/Guild.md
  Warning: Anchor channel-object-channel-structure does not exist on DOCS_RESOURCES_CHANNEL

I actually don't understand why the linting is failing, there's still a channel-structure header below channel-object.

docs/Change_Log.md
  Warning: Anchor channel-object-example-channel-category does not exist on DOCS_RESOURCES_CHANNEL

The header changed from channel-object -> example-channel-category to channel-object -> `ex...

chilly siloBOT
#

Currently there's no way to make working pinging mentions in embeds. They get formatted properly, but member data isn't gathered so people won't get pinged.

Bots use embeds more and more, and embeds make for a great design-choice of sending out bot responses and event notifications.

Even a new way of embedding pingable mentions could easily work, so the current usage of embedded mentions don't break.

For example
ping disabled ping enabled

![image](https://user-images.git...

chilly siloBOT
#

Description
If an application has a default authentication link you cannot make it non-public

Steps to Reproduce

  • Go to the bot section of a public application
  • Create an in app invite link with the bot scope and at least one permission
  • Save your changes
  • Go back to the bot section and disable public bot
  • Save your changes and reload
    Expected Behavior

Current Behavior

Screenshots/Videos

Client and System Information

chilly siloBOT
chilly siloBOT
chilly siloBOT
#
[discord-api-docs] Branch fix\-scheduled\-events was force-pushed to `ae09853`
#

Breaking change

The GET /guilds/{guild.id}/scheduled-events/{guild_scheduled_event.id}/users endpoint return type will be changed to use consistent models which already exist in the rest of our api.

The new return type will be an array of GuildScheduledEventUser:

[
    {
        "user":  User,
        "member": GuildMember,
        "guild_scheduled_event_id": snowflake
    },
    {
        "user":  User,
        "member": GuildMember,
        "guild_scheduled_event_...
#
[discord-api-docs] Branch fix\-scheduled\-events was force-pushed to `ed19728`
#
[discord-api-docs] Branch fix\-scheduled\-events was force-pushed to `d147886`
#

Description

The Dev Portal, this bot's page, and the invite page for this bot all 500.

Steps to Reproduce

idk

the id where this is happening: 585566486458925117

Expected Behavior

https://discord.com/developers/applications/585566486458925117/information shouldn't 500

As should https://discord.com/oauth2/authorize?client_id=585566486458925117&scope=bot

Current Behavior

https://discord.com/developers/applications/585566486458925117/information does 500...

#
[discord-api-docs] Branch fix\-scheduled\-events was force-pushed to `1906b31`
chilly siloBOT
chilly siloBOT
#

yes, both before and after have been part of the api implementation so should be functional but we've been holding off on officially adding this until post launch since we don't currently use these internally. But at this point I think some libraries are starting to use it already anyway so could just do a bit more testing and prob include this as part of this docs update

#
[discord-api-docs] Branch fix\-scheduled\-events was force-pushed to `806435a`
chilly siloBOT
#
> note
> `creator_id` will be null and `creator` will not be included for events created before October 25th, 2021, when the concept of `creator_id` was introduced and tracked.

Making this a note will be better for consistency of the docs, and illustrates importance for data model purposes. (Plus I think it looks better)

#
| Type           | channel_id | entity_metadata | scheduled_end_time |
| -------------- | ---------- | --------------- | ------------------ |
| STAGE_INSTANCE |   value    |      null       |         -          |
| VOICE          |   value    |      null       |         -          |
| EXTERNAL       |   null     |      value *    |       value        |

Appropriating the difference here with "value" now instead of "non-null." For ease of reference, we've also already establish...

chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
#
\* There are some required properties if updating `entity_type` to `EXTERNAL`. `channel_id` [must be set to null](#DOCS_RESOURCES_GUILD_SCHEDULED_EVENT/guild-scheduled-event-object-field-requirements-by-entity-type). A `location` must be provided in the entity_metadata. A `scheduled_end_time` is required to be set.

Would be nice to mention here that when changing to External location and end time is required alongside channel_id must be null. This is because right...

chilly siloBOT
chilly siloBOT
#
[discord-api-docs] Branch fix\-scheduled\-events was force-pushed to `e9f8306`
chilly siloBOT
#
[discord-api-docs] Branch fix\-scheduled\-events was force-pushed to `271fdcf`
#
[discord-api-docs] Branch fix\-scheduled\-events was force-pushed to `ed6cae3`
#
[discord-api-docs] Branch fix\-scheduled\-events was force-pushed to `0eb25bb`
chilly siloBOT
chilly siloBOT
chilly siloBOT
#

Description

When using the Api to change the voice state of a bot account to deafed the bot gets the little deafed sign in the client but reading of the udp socket makes it possible to still listen to all the voice in the channel.

Steps to Reproduce

Connect to a voice channel with "self_deaf": false the way you do for listening to voice. Send a Gateway Voice State Update with "self_deaf": true. Read of the udp socket and decode it using opus. Everything said while the...

chilly siloBOT
#

As a large invite tracking bot owner, I'm receiving recently a very large amount of complaints about the max invites issue.
I've digged a bit and it seems that a server can now have up to 1000 invite codes only. Before, the only limit was 1000 per channels.
Is this new limit part of the fix in that issue linked below ? https://github.com/discord/discord-api-docs/issues/3192

Does this limit change was planned or is it just an unwanted consequence of the patch?

If this change is definitive...

chilly siloBOT
#

nitpick:

Create a followup message for an Interaction. Functions the same as [Execute Webhook](#DOCS_RESOURCES_WEBHOOK/execute-webhook), but `wait` is always true, and `flags` can be set to `64` in the body to send an ephemeral message. The `thread_id` query parameter and `avatar_url` and `username` Form Params are not required (and furthermore ignored) when using this endpoint for interaction followups.
chilly siloBOT
#

With the introduction of In-app Authorization, it's now possible to add a bot through a popup within Discord. From what I've gathered in the network tab, the "Add to server" button uses the OAuth2 URL. It'd be awesome if we could add this OAuth2 URL to buttons or directly in chat to have the popup appear when we click on it.

A good example would be how we can redirect users to other channels by using `` or https://discord.com/channels/{guild_id}/{channel_id}.

chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
#

Related: #4041
It would by good if there are some external message on 500 or 503 like:

Interaction failed.
The application is unavailable.
From application:

("message" key of json, if there is)
Please try again at (Calculated time from Retry-After header, if there is)

Code Message
500 There was an error in the application.
503 The application is unavailable.

If there are some for 4xx code, it would be cool:

| Code | Message |
| ---- |...

chilly siloBOT
#

This is a client and API feature request, Before you send me off to /feedback though, this is a request for a more interoperable API for bots specifically, that the client would end up supporting. Basically it would exist in a tier similar to interactions, completely designed from the ground up (in this case, a majority of the API design being done already) for bots that the client then implements.

Now that that's out of the way....

Huge shoutouts to @andyearnshaw for inspiring this

...

#

I wouldn't mind this necessarily, however the old functionality definitely needs to be kept intact. (We do have allowed_mentions which could very well be used for this btw)

I would like to mention that mentions - ha - in embeds were never truly supported, whether the mention resolves is luck of the draw, and mobile users rarely, if ever, see all mentions in an embed as resolved due to their more limited cache sizes.

So, I propose this:

  • Short term: add mentions to embeds
  • Long term:...
#

New events indicator

(This is more like a client feature request)

Now after guild events have been released there are more and more events. This morning I asked for a stream/event and was told there's already an event and i got annoyed that there's no more obvious way of seeing if there's a new event in a guild.
So I've come up with an idea:
image

Why not display a ping like in...

chilly siloBOT
#

To prevent stress of bulk presence updates caused by bot users, I propose the presence data for applications (including bots and webhooks) to be synthesised as follows:

  • Online: Gateway connected + more than 100 successful requests in the last minute
  • Do not disturb: Gateway connected + more than 20 failed requests in the last minute
  • Idle: (Gateway connected + less than 100 successful requests in the last minute) or (more than 20 successful webhook interactions in the last minute)
    *...
#

If you really wanted to prevent users from stalling their bots by doing pointless presence updates, you could at least make it binary.

  • Online/No presence like webhook bots: Webhook ping satisfied/Gateway connected
  • Offline: Above condition not met

I think there's a reasonable argument to be made for at least allowing gateway bots the no-presence presence like how webhook bots are shown, but setting arbitrary requirements will just incentivise API abuse.

#

This really just seems like an unnecessary proposal encouraging developers to spam the API for a green icon instead of a yellow one.
Forcing people to send requests is an inaccurate way of representing the bots actual status (some bots only exist to forward events onto other platforms or respond to a few events (think reaction roles or ticket tools), not even getting close to reaching the 100 request requirement per minute.

chilly siloBOT
chilly siloBOT
#

Requiring something like N requests/minute puts way more strain in everyone. Some bots are small and even some large bots may not have anywhere close to that many requests (as mentioned several times above). I'd argue that forcing an arbitrary request count would cause more stain than that of a bot updating it's status.

And this isn't even mentioning the fact that the vast vast majority of the status update throughput is from users. Bots make up a negligible amount of that compared to the ...

chilly siloBOT
chilly siloBOT
chilly siloBOT
#

Description
Embeds with the same url do not get sent after the first. I haven't tested this with webhooks.

Steps to Reproduce
Set the same url value on multiple embeds.

Expected Behavior
All embeds are sent.

Current Behavior
Only 1 embed is sent.

Screenshots/Videos
https://user-images.githubusercontent.com/60681223/142748263-a6edb5c2-f971-4a91-be61-5705d2ddb846.mov

Client and System Information
Canary 105617 (aa6d87b)
Ptb 105608 (de4ad93)
...

chilly siloBOT
#

As it stands right now, when you screw up a request, one of two responses is bound to hit you:

  • 404
  • The dreaded 400

And while, under normal circumstances, this is fine, this rationale cannot be so easily translated to interactions, though, this discussion does to some extent target the API as a whole.

When it comes to interactions specically, there's one of two reasons that your request can error out.

First, I'm sure we're all aware of the 3 second window when it comes to res...

chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
#

I've been trying to make a two column layout for the past 3 days and it always looks weird.

Yes, you can use

{
   name: '\u200B',
   value: '\u200B',
   inline: true
}

BUT, it will still render an empty space either after or below.
Here we're trying to make a two column layout and A, B, C, D set to inline: true

Here's what it'll look like
Space field inline: true
AAA BBB ___
CCCC DDDD

Space field inline: false
AAAA BBBB


CCCC DDDD

**What...

#

There is no current way to do that without putting a spacing field in (name and content being zero width spaces)

Embed styling is more of a loose suggestion, the client will always build it differently depending on screensize. But, mobile tends to just treat every field like inline=false even if there is room and inline is true.

I've peronally resorted to using the spacing field trick or figuring out what content would look good alone

So, for example
AAAA BBBB- true true
CCCCCCCC...

chilly siloBOT
#

Application Command tags in messages

Short description

This could be a tag like @ or # mentions or dates where you can click it to see a full command including already filled out arguments.
This could be used by developers to provide support with their commands by sending sample commands and in bots to show how a command can be used or frequently used configurations (with filled out arguments).
![Screenshot 2021-11-21 185611](https://user-images.githubusercontent.com/78901316/14...

chilly siloBOT
#

Description

My webhook, as called from Github, is consistently receiving HTTP 400 errors from Discord, due to an empty payload. The webhooks are configured with application/json content-type and have content.

Steps to Reproduce

  • create a channel webhook in discord
  • configure a webhook in my github organization
  • send events

Expected Behavior

Actual hook events :)

Current Behavior

Headers

Alt-Svc: h3=&quot;:443&quot;; ma=86400, h3-29=&qu...
chilly siloBOT
#

Usernames and non-default avatars always constitute personal information, and discriminators also constitute personal information when combined with username and/or user avatar. Hence, bots should be restricted from querying those data of users that they do not share mutual guilds. This intent should be made privileged. This can be merged to guild members intent, or can be made separate.

chilly siloBOT
chilly siloBOT
chilly siloBOT
#

would be very api heavy

Well apparently it's not that API heavy because Discord itself sends a separate Guild_create event for every guild as it becomes "available" while you're booting up your bot, so it's okay to request per guild, you should do it in the guild_create event on your bot startup.
https://discord.com/developers/docs/topics/gateway#guild-create

In addition to creating missing commands I suggest you also implement an equals method for commands to compare if your local c...

chilly siloBOT
chilly siloBOT
chilly siloBOT
#

Deferred messages don't ping on follow up

I've been toying around with interactions and am really starting to like them.

I got to this one issue though where when I have to defer a message (for a file upload or something in the backend to process before responding) I would like to ping a user specified by the author.

Currently the docs say:

The allowed_mentions field of the edit request controls how this happens. If there is no explicit allowed_mentions in the edit request, the ...

#

Description

Components with an custom_id which won't be handled by a bot doesn't tell that it errors.

Instead it's silently suppressed.

Steps to Reproduce

Send a button and let the bot don't handle the interaction of this button.

Expected Behavior

The client should tell the user that the interaction failed.

Current Behavior

Client silent suppresses the failing interaction.

Screenshots/Videos

![2021-11-22_18h01_06](https://user-images.gith...

chilly siloBOT
chilly siloBOT
#

Description

When using routes such as /interactions/:ID/callback and sending an authorization header (which some libraries just send for all request by default) it counts against this Bots global ratelimit even tho this route works perfectly fine without the authorization header token.

Steps to Reproduce

  1. Make an interaction and do a request to /interactions/:ID/callback with your Bot token in the headers (this time it counted against the bots global ratelimit but since...
chilly siloBOT
#

Not having read through the whole thread, there's definitely some overlap, but I don't think simply forcing a new line will go far enough. I'd much rather have direct access to the width of the columns.

Say you want to make a 70 / 30 two column layout, or a 50 / 25 / 25 three column layout.
Forcing a new line won't work for that.

Ideally there'd also be options for making the embed layouts work on mobile, instead of everything just being forced single column which looks kinda silly on ...

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

I own a subdomain .ddns.net and have a TLS/SSL certificate by letsencrypt.
The webpage at that address is a normal html site, which has opengraph meta tags. I have put all the same tags as I did on my github pages site (gxlg.github.io/index.html).
The difference: sending the github link to discord shows the expected embed, my ddns site link - not.

Additional information:
I host the page using node.js and https module.
When logging the requests, I can see, that discordbot2.0 visits ...

chilly siloBOT
chilly siloBOT
chilly siloBOT
#

Description

When you try to disable the system flag, it doesn't let you save which is a client bug. However, if you save it by refreshing the client, it doesn't log the change in the Audit Logs (on API side). The flag also turns itself back on randomly, which is also an API bug.

Steps to Reproduce

Turn on the system channel flag.

Expected Behavior

The client lets you save and it shows in the audit logs of the server. And the API does not change it ba...

chilly siloBOT
#

Description

When you delete components on a message by making a PATCH request with {"components": []} the components get removed temporarily in the client by the resulting event. This however is currently not being reflected by the responses on GET history and GET message, which results in buttons reappearing after a refresh.

Steps to Reproduce

  1. Send a POST request with buttons in it.
  2. Send a PATCH request to update that message with {"components": []}, t...
chilly siloBOT
#

I'm implementing my own website to play video's. The embed provider name is taken from the og:site_name meta property. However, the embed provider url isn't present (so the issue is fixed indeed), but I want to know how to set it.
Is it taken from some metadata in the HTML document or will it only appear for some providers, like YouTube and Twitch?
If it is the last case, where can I register my provider to have an embed provider URL too?

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

Related to this comment: https://github.com/discord/discord-api-docs/pull/4036#issuecomment-957537534

When converting HYPESQUAD from UPPER_SNAKE_CASE to camelCase or PascalCase, the S becomes lowercase (hypesquad and Hypesquad respectively), however, the name seems to be HypeSquad according to the HypeSquad page regardless of the weird mixture between both casings in the same page.

chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
#

Description
The Create Guild Scheduled Event endpoint seems to return a 500 internal server error instead of 400 bad request if the entity_type field is missed.

Steps to Reproduce
Send a POST with {'name': 'test', 'description': 'test', 'scheduled_start_time': '2021-11-24T19:53:45.132528', 'privacy_level': 2, 'scheduled_end_time': '2021-11-24T20:48:45.132555', 'entity_metadata': {'location': 'test'}} to your favorite guild's /scheduled-events endpoint.

**Expect...

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

Description

My bot's slash commands that have autocomplete in them give me an 'Invalid interaction application command' error. I am working with global commands and this issue happens on every server. I deleted and remade the commands and I still have the error. Happening for about 2 weeks now.

Steps to Reproduce

Not sure how it happened.

Expected Behavior

The command executes normally.

Current Behavior

Instantly getting an 'Invalid ...

chilly siloBOT
#

Description

SDK cpp files fail to compile due to missing include in some environments.

Analysis below.

Steps to Reproduce

Attempt to compile the code.

Expected Behavior

SDK files compile

Current Behavior

In file included from /home/snip/snap/snip/src/plugins/discordpresence/discord/achievement_manager.h:3,
                 from /home/snip/snap/snip/src/plugins/discordpresence/discord/achievement_manager.cpp:5:
/home/snip/snap/snip/src/plugins/dis...
chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
#

When uploading a file to discord it would be great if supplying a Content-Description header set the description field of the attachment object. The current system of providing a partial attachment object with the ids being repurposed as indices is clunky.

Furthermore, discord ignores the Content-Type header, choosing instead to rely on file extensions. I'm unsure why this is the case.

chilly siloBOT
chilly siloBOT
#
--19893b0f
Content-Disposition:form-data;name="file1";filename="file-1.txt"
Content-Description:exactly as you would expect,
Content-Type:text/plain; charset=UTF-8

Hello world!
--19893b0f
Content-Disposition:form-data;name="file2";filename="file-2.txt"
Content-Description:it to work,
Content-Type:text/plain; charset=UTF-8

Hello world!
--19893b0f
Content-Disposition:form-data;name="file3";filename="file-3.txt"
Content-Description:for multiple files.
Content-Type:text/plai...
chilly siloBOT
#

Description

In the verification form, when the form is disabled (if your bot has suspicious growth, or such), it is still possible to type in dropdown menus and select stuff

Steps to Reproduce

  1. Have an unverified bot with suspicious growth, or a different reason for the verification form to be disabled
  2. Try to select menu items in the verification form

Expected Behavior

It is not possible to select items from dropdowns.

Current Behavior

It is possibl...

chilly siloBOT
chilly siloBOT
chilly siloBOT
#

Furthermore the docs link works.
It doesn't work for me, as this lil gif shows:
https://i.gyazo.com/627110dfa7cef630ed082e2aed6554b0.mp4

Unless I'm doing something wrong?

you should be reading the docs on https://discord.dev, not on GitHub

I see, however there are docs on the github. I'm just fixing a link. I got linked here by another library. It's just a tiny quality of life change.

chilly siloBOT
#

I see, however there are docs on the github. I'm just fixing a link. I got linked here by another library. It's just a tiny quality of life change.

No!

https://discord.dev is gettin build from this repository.
Therefore this special linking is needed.
You can't just change something to get it here working.
The links won't work the .md's here.

Please close this pull request and inform the other library that they should link to the official docs which is https://discord.com/develo...

chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
#

I understand why the value is null, but as far as I am aware, this is the only place in the API where null indicates the existence of something rather than an absence. Because of this edge-case, I have to re-engineer my JSON parsing. If other people have solved this problem and moved on, please forgive my ignorance, but in my experience, there is no elegant solution here, and I don't think that this inconsistency is fairly justified by an implementation detail.


A little bit...

chilly siloBOT
chilly siloBOT
#

Description

There are several missing opcodes in the documentation.

Steps to Reproduce

Read the Voice Opcodes documentation and take note that there's no mention of opcode 12, 15 or 16. Now open developer tools in the Discord client, select the network tab, filter by WS, and press CTRL+R to refresh the client. Join a voice channel and activate screen sharing and video sharing. Select the request in the network tab that says ?v=6. Select the messages tab of the request and s...

chilly siloBOT
#

In addition to using a different endpoint for the command, the options should be at the level of the command. so no needing to traverse through the nested options and no need to update the codebase when refactoring a group name.

  "name": "config",
  "description": "Customize.",
  "options": [
    {
      "name": "server",
      "type": 2,
      "description": "Customize server.",
      "options": [
        {
          "name": "matchmaking",
          "type": 1,
          "d...
chilly siloBOT
chilly siloBOT
#

If a server has require 2FA for moderation, the API will record that a person have moderation perms only when they have mod perms and have 2FA enabled
Like this: (example in dpy, author have administrator perms):
@commands.has_permissions(administrator=True) #always return True if the author turned on 2fa

@commands.has_permissions(administrator=True) #return False if the author did not turn on 2FA and the server required 2FA for moderation

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

the NSFW filter has lots of issues with false positives

That is the very reason we want such an event type. We would be able to tell whether our bot is working badly, or Discord's filter is working badly.

If you're looking to make sure your bot isn't posting NSFW, an audit log entry is the wrong way to approach this. First of all you'd have to poll audit logs in every server the bot is in, and second you should just be able to look at the response body to see if the filter was t...

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

I have a partial solution to fix the coupling between group/subgroups and slash commands. The one drawback is that each slash command name needs to be unique. So you can't have a command structure like this since both use kick.

/bot kick:@somebot
/member kick:@somemember
const x = {
    "options": [
        {
            "name": "server",
            "options": [
                {
                    "name": "matchmaking",
                    "options": [
        ...
chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
#

It would be nice to able to create a guild template that also allowed including bots and their configs in the json.

{
  "code": "hgM48av5Q69A",
  "name": "Friends & Family",
  "description": "",
  "usage_count": 49605,
  "creator_id": "132837293881950208",
  "creator": {
    "id": "132837293881950208",
    "username": "hoges",
    "avatar": "79b0d9f8c340f2d43e1f78b09f175b62",
    "discriminator": "0001",
    "public_flags": 129
  },
  "created_at": "2020-04-02T21:10:3...
chilly siloBOT
chilly siloBOT
chilly siloBOT
#

discord-py-interactions is a very simple API wrapper intended to exclusively make use of the new interactions released by Discord into their Public API.

Originally a "monkey-patch" and 3rd party addon to the well renowned public library discord.py, this library now aims to be fully independent of its parent library -- able to handle the basic necessities that a lib must require in order to function, e.g. the Gateway, sane HTTP requests, and dispatched event data as callbacks. These a...

chilly siloBOT
#

Just handling 429 responses is not enough to handle rate limits.

I only programmed these specific codes which I considered as "breaking" for a bot to continue running without being handled after an HTTP request: 300, 401, 403, 404 and 429. When I originally began implementing this to handle "sane" requests, I figured that this meant that once a 429 or likewise code was received back from the API, that the library was supposed to avoid making any further requests. Is it supp...

chilly siloBOT
#

I agree with Minn - this implementation of rate limit handling is not sufficient. You have to actually handle the rate limit buckets and handle locking and timing your requests to avoid hitting 429s in the first place - you can't just ignore all rate limit buckets and then try to walk it off once you hit one.

All the other libraries in the community resources (to my knowledge) handle rate limits properly, so if you want to stand among them, you need to at least meet this base requirement.

chilly siloBOT
#

Description

Webhook-transported application command interactions load infinitely in the client with specific kinds of invalid data.
I've only tested this with CHAT_INPUT application command interactions, it could apply to other kinds of interactions and other kids of invalid data

Steps to Reproduce

  1. Make sure you're using the webhook transport
  2. Respond to a CHAT_INPUT application command interaction with { "type": 4 }

Expected Behavior

The interaction ...

chilly siloBOT
#

After asking for some clarification in the DAPI server, I fully agree. And I believe that with this being an interactions exclusive library, we can achieve 100% sane limiting by checking the remaining header instead of doing a cooldown only after the rate limit is detected. I wholeheartedly agree that this should be a base requirement too, so i will be working on this either tonight or tomorrow to make sure it's implemented in.

Small thanks to those from the DAPI server who also gave me some...

chilly siloBOT
#

I think this is confusing because of frontend implementation details on our end. We use the term Cancel Event on the client, but what the client sends is a DELETE request, because our product decision here is to delete the event immediately rather than update status to CANCELED for this user flow. This is why a GUILD_SCHEDULED_EVENT_DELETE gateway event is sent rather than GUILD_SCHEDULED_EVENT_UPDATE. And when we delete an event we don't update the status, we just delete.

We don't h...

chilly siloBOT
#

I think it would be easier on both library developers and bot developers to continue using 1 as the status when a GUILD_SCHEDULED_EVENT_DELETE event is dispatched. Library developers should already be checking for which type of event is being dispatched, so the modeled data makes sense because it's returning the original information about the event.

@hemu for clarification, I assume that the DELETE request when successfully ran will also update the original event when you try to ru...

chilly siloBOT
chilly siloBOT
#

Why can't we open another Modal after a Modal has been submitted? That would make a lot of sense in various scenarios where subsequent input fields depend on the entered data in the first modal, or where we need larger forms than a single modal can hold

This tbh. The limits on current modals are really small- 5 action rows, 1 text box per row, for only 5 boxes per modal! I was really looking forward to using these for my form bot, but with that I'm already trying to work around the 2...

chilly siloBOT
#

Given from some feedback and critique, I've made some changes respectively to how HTTP requests work when interacting with the Web API:

chilly siloBOT
chilly siloBOT
chilly siloBOT
#

@hemu No, This is confusing because of the statement on GUILD_SCHEDULED_EVENT_DELETE event. Quoting:

See Guild Scheduled Event Status to determine how the event was deleted.

This can be misleading especially in this context, it's a fair point - we can remove this from the docs or clarify it. I think what I'm trying to say here is if the client UI text was "Delete Event" instead of "Cancel Event"...

chilly siloBOT
#

These are not actually separate objects, so we don't want to document them as such 🥲 🙏

I didn't really mean to document them as separate objects, more-so as overloads of the same object. You may notice that everywhere else in the documentation the links stayed as "channel object". Did I not make this clear enough?

Is the issue here that the Discord API cannot guarantee these fields as @Mehgugs explained?

chilly siloBOT
chilly siloBOT
#
z64

@Mehgugs

Can we just make that into a sentence that explains you're allowed to start anytime within heartbeat_interval miliseconds from HELLO and then every heartbeat_interval miliseconds thereafter.

This is more or less what I originally suggested when I reworded this section: https://github.com/discord/discord-api-docs/pull/1527#pullrequestreview-396737905

I'd expected this to be left as an implementation detail to the user; I only wanted to document what the gateway would allow...

chilly siloBOT
#

Previously with message commands, many bots deleted command responses when the initial command message was deleted. Interaction responses can only be deleted by server moderators, despite the message stating who ran a command. This causes issues if you for example ran a command in the wrong channel or accidentally put something in command arguments that you didn't mean to share.

The solution would be a new flag you can apply to an interaction response, similar to ephemeral, which allows the ...

#

It looks like you have the beginnings of an implementation here, however it's not quite there yet

As per the docs, ratelimits should not be hard coded, but rather the headers returned used to preemptively avoid hitting ratelimits:

Because we may change rate limits at any time and rate limits can be different per application, rate limits should not be hard coded into your bot/application.

Setting a hard 50/s is not a quick fi...

#

In general OpenGraph scraping can fail when:

  • the server is blocking us
  • we've been captcha'd because the server thinks we're a bot (which we are)
  • we've been IP blocked
  • the server is not using a supported version/cipher for TLS**
  • the page is not returning valid OpenGraph metadata (if it's an HTML page, not a direct image/video link): https://ogp.me/
  • the direct image/video link has content which is too large to embed

** Supported Cipher Suites

// TLS1.3 suites
TLS13...
chilly siloBOT
chilly siloBOT
chilly siloBOT
#

Description

When you have multiple commands with the same prefix, e.g. /tag and /taglist, typing /tag foo on desktop without pressing Tab after /tag will send it as a regular message rather than interpreting it as a command.

On iOS, simply typing it gets correctly interpreted as a command, there's no need to tap the suggestion that comes up.

Steps to Reproduce

  1. Create two slash commands in a bot: /tag and /taglist.
  2. Go to a channel with the bot on ...
chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
#

I think what I'm trying to say here is if the client UI text was "Delete Event" instead of "Cancel Event", would the current behavior be less confusing?

As you mentioned, Client's UI text is not source of truth which is understandable.

There's no problem if the data in event is the one from point of deletion, The statement on docs just led to the confusion.

chilly siloBOT
#

Description

When "Use external emojis" permission is disabled, and a webhook tries to use an external emoji that has the same name as a default unicode emoji, it will show up as the unicode emoji instead.

Steps to Reproduce

  • Upload an emoji to a server and name it the same as a default emoji (for example, :smile:)
  • Disable "Use external emoji" for the @everyone role
  • Send the emoji in a message

Expected Behavior

The emoji name will show up as text.
This is w...

chilly siloBOT
#

Description
The Discord Developer portal returns a 500 error code whenever I try to enter an interactions endpoint url.

Steps to Reproduce
Using this repository run a rocket webserver with the PUBLIC_KEY environment variable set.

Expected Behavior
When entering the link to the url it returns that the endpoint is invalid or accepts it.

Current Behavior
It just states that there was an error...

chilly siloBOT
#

Description
The ETF gateway is leaking Shared.EmbeddedActivity whenever somebody is using an embedded activity on a Discord server.

Steps to Reproduce
Write a bot in Elixir using the Nostrum library.

Expected Behavior
The bot doesn't crash.

Current Behavior
The bot crashes due to an unexpected struct in the data that Nostrum doesn't know about.

Screenshots/Videos
Related issue in the library repo: https://github.com/Kraigie/nostrum/issues/351
Example er...

chilly siloBOT
chilly siloBOT
#

No, interaction responses can ping any role/@everyone/@here, which is controlled by the allowed_mentions field. Discord had disabled role, @everyone and @here mentions by default (meaning that by deafult these will depend upon if the @everyone role has the permissions to ping any role or not) because of this being exploited in raids. You can enable those in the allowed_mentions object if you wish to.

Even with the allowed_mentions object, interaction responses don't ping ro...

chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
#

Description

When I try to add/update alt text in call to PATCH /channels/{channel.id}/messages/{message.id}, nothing changes.

Steps to Reproduce

  • Request 1:
    POST /channels/{channel.id}/messages
--boundary
Content-Disposition: form-data; name="files[0]"; filename="file.png"
Content-Type: image/png

[image bytes]
--boundary
  • Request 2 on message created in previous request (123... in the payload is the actual ID of the attachment from the previous requ...
chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
#

Description

Discord API returns more than 1 focused: true value if your slash command has multiple options with auto completion.
image

Steps to Reproduce

Create an application (over webhook) and register slash command (to a specific guild) with at least 2 options where you set autocomplete: true

Expected Behavior

According to docs:
![image](https://user-im...

chilly siloBOT
#

Looks like since Discord just partnered with Samsung years ago, they don't want to give the freedom to non-samsung users to have game activity presence. Honestly if there's limitations over how android works, couldn't discord make an api for games/apps to send stats about the current user and use oauth2 for integrating apps presence with discord app. Honestly, it would make so many devs' life easier if presence could be managed over discord oauth2. What is the reason even to have rpc and acti...

#

I can also say that, the vscode presence is used the most, and I rarely see any person playing, and out of 0.001% of them play on samsung galaxy. The vscode presence plugin itself runs on rpc rather than your gamesdk discord.
This is also another point why you rebranded to community rather than as gaming space. Also since you want to have whitelisted games only, and since they're closed from a year ago (I think more before than that, but I can definitely say atleast an year ago), there's no ...

#

This is good idea for sure ios users don’t have Spotify presence on there phone as android users have I would like to see this put in

In the first case, spotify actually partnershipped with discord too, so they don't talk over ipc or websockets for rpc/game-sdk They talk over secret api with discord. Thats what connections on discord are for sadly.

![screenshot_05-12-2021_19-48-00](https://user-images.githubusercontent.com/92968534/144750484-c6ef17ea-de2e-4172-9b07-cbbab5a2d03f....

chilly siloBOT
chilly siloBOT
#

I'm curious when / where the Moderation plans are on the roadmap going forward as these changes are extremely beneficial and revolutionizing, they also seem like a huge part of what the whole interaction API was about. Getting what you already have into a solid state seems like it should be a greater priority to constantly introducing new features, as then the development focus just grows exponentially thin as it's stretched out to continuously maintain all of the features, rather than perfec...

chilly siloBOT
#

The command permissions update is currently being worked on, the API side is done and the frontend is in progress https://msciotti.notion.site/msciotti/Command-Permissions-V2-4d113cb49090409f998f3bd80a06c3bd

The bots team has many people and is working on multiple things, including the permissions update, attachment options, and modals.

This is awesome to hear. My bad really, I should pay more attention to the discord announcements and event info.

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

If you don't want to change how the permission works, would you consider adding additional tools/settings to allow server-admins and/or users to fine-tune which embeds are shown?

Right now i have disabled link previews in my account settings because i prefer compact text chats and link embeds by random users disrupt my reading.

But this also prevents me from reading any messages by the official github bot that exclusively uses embeds.

I'd like to be able to override the global option...

chilly siloBOT
chilly siloBOT
#

If you don't want to change how the permission works, would you consider adding additional tools/settings to allow server-admins and/or users to fine-tune which embeds are shown?

That already exists as the "Embed Links" permission

Thanks for the pointer, this gives server admins more control than i thought. Great!

But if you disable link preview as a user in user settings > text & images it still doesn't show the embed by github bot even if the server/channel has "Embed Link...

chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
chilly siloBOT
#

Description
The documentation states that the endpoint supports the X-Audit-Log-Reason header, however it does not show the reason in the audit log.

Steps to Reproduce
Send a request to delete/close a channel with the X-Audit-Log-Reason header.

Expected Behavior
Adds a reason to the audit log entry.

Current Behavior
Does not add a reason to the audit log entry.

**Screenshots/Videos...

chilly siloBOT
#

But if you disable link preview as a user in user settings > text & images it still doesn't show the embed by github bot even if the server/channel has "Embed Links" permission enabled

Personally I think the user settings induced issue should be solved in the front-end of discord.
I think the simplest and most useful solution would be to display a system message to the user like this:
![image](https://user-images.githubusercontent.com/22574513/144914814-6e604bca-035b-46f0-8d26-960c1d0c...

#

Description

All slash command interactions with autocomplete give me 'Invalid interaction application command' instantly. I am using global commands and this issue has been happening for around 3 weeks, and happens on every server. Have even deleted and remade the commands a few times but it doesn't help. JSON I'm using is:

`[{"name":"about","description":"About this bot.","options":[]},{"name":"ban","description":"Bans a user.","options":[{"type":6,"name":"user","description":"The...

chilly siloBOT
#

Description

{'type': 8, 'data': {'choices': [{'name': 'number', 'value': 22335}]}}```
 to `POST` `/interactions/{webhook_id}/{webhook_token}/callback`
 
in the discord client, this is meant to autocomplete in `22335` into the field, but it completely ignores (and doesnt even show) the value.
As my field is an integer, this then shows the **invalid integer** warning too

**Steps to Reproduce**


- post a type 8 with a choices field on the interaction autocomplete...
chilly siloBOT
#

I'm try to create button with Steam URI for lobby link and I can't because

...node_modules\discord.js\src\rest\RequestHandler.js:349
throw new DiscordAPIError(data, res.status, request);
            ^
            
DiscordAPIError: Invalid Form Body
data.components[0].components[0].url: Scheme "steam" is not supported. Scheme must be one of ('http', 'https', 'discord').

What about to add some of these URI (of at lea...

chilly siloBOT
chilly siloBOT
chilly siloBOT
#

It does explain the discrepancy but I do feel it would make sense for the documentation to indicate that this field might be an object for events of type STAGE_INSTANCE (especially that it says "This field is required to be null"). It certainly makes sense not to document the speaker_ids field inside it though since as you said, it's not publically supported.

#

I filed this issue because I thought that the documentation states that this is possible and I observed different behavior while testing it. But looking at the documentation today, it seems like I must have read it wrong because both the documentation of Edit Message endpoint and the Uploading Files section in Reference document say that being able to add description only applies to new attachments so I probably just missed that detail while reading it before.

Since there's no actual iss...

#

Description

When I try to add/update alt text in call to PATCH /channels/{channel.id}/messages/{message.id}, nothing changes.

Steps to Reproduce

  • Request 1:
    POST /channels/{channel.id}/messages
--boundary
Content-Disposition: form-data; name="files[0]"; filename="file.png"
Content-Type: image/png

[image bytes]
--boundary
  • Request 2 on message created in previous request (123... in the payload is the actual ID of the attachment from the previous requ...
#

I filed this issue because I thought that the documentation states that this is possible and I observed different behavior while testing it. But looking at the documentation today, it seems like I must have read it wrong because both the documentation of Edit Message endpoint and the Uploading Files section in Reference document say that being able to add description only applies to new attachments so I probably just missed that detail while reading it before.

Since there's no actual iss...

#

It does explain the discrepancy but I do feel it would make sense for the documentation to indicate that this field might be an object for events of type STAGE_INSTANCE (especially that it says "This field is required to be null"). It certainly makes sense not to document the speaker_ids field inside it though since as you said, it's not publically supported.

This was to avoid confusion because e.g. sending a non-null metadata field value for a voice channel event when updating the...

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

I don't know where should I send answer, so I write it in suggestion and below your answer.

I'm try to create button with Steam URI for lobby link and I can't because

...node_modules\discord.js\src\rest\RequestHandler.js:349
throw new DiscordAPIError(data, res.status, request);
            ^
            
DiscordAPIError: Invalid Form Body
data.components[0].components[0].url: Scheme "steam" is not supported. Scheme must be one of ('http', 'https', 'discord').

What ab...

chilly siloBOT
chilly siloBOT
chilly siloBOT
#

Description

Basically the title. If you set the username in execute webhook payload to spaces, the webhook gets sent with the original name.

Steps to Reproduce

Execute a webhook with username field set to a bunch of spaces, or a bunch of zero-width spaces.

Expected Behavior

I would expect one of two things:

  • An error is thrown
  • The webhook is shown with an empty name (similarly to the example at the bottom of my screenshot)

Current Behavior

The `us...

chilly siloBOT
#

There are many endpoints that allow for referencing the current user via a special pseudo-snowflake (@me).

This is great, because it doesn't require knowing what the ID of the current user is, and shows express intent when written in code somewhere.

This is used in many places, such as [/oauth2]/users/@me, /thread-members/@me, and even /guilds/members/@me

There are obviously many many more, but the latter of those three is especially important.

That endpoint allows for P...

chilly siloBOT
#

Is there any update on this? I'm writing a bot to help with moderation, and it creates temporary channels and logs everything in them, including the eventual deletion of the channel. Everything works great, except obviously logging message deletions. This is intended to be used for discussing breaches of policy with offenders, and so there's some expectation that people will type messages in anger, then delete them.

Given this is for dealing with offenders, it feels important that we are a...

chilly siloBOT
chilly siloBOT
chilly siloBOT
#

No. All data from a user profile should be accessible by bots for review and moderation concerns.
The server I moderate, which is a support server for a software service managed by the company I work for, CONSTANTLY has an influx of scam account pretending to be tech support.
As it stands, right now there is NO WAY for me to detect this user account unless I monitor literally EVERY SINGLE JOIN EVEN which is simply not acceptable.
![image](https://user-images.githubusercontent.com/9062578/...

chilly siloBOT
chilly siloBOT
chilly siloBOT