Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(member): implement new voice states endpoints #1217

Merged
merged 18 commits into from
Nov 29, 2024

Conversation

Snipy7374
Copy link
Collaborator

@Snipy7374 Snipy7374 commented Aug 8, 2024

Summary

I did not implement Get Current User Voice State % GET /guilds/{guild.id#DOCS_RESOURCES_GUILD/guild-object}/voice-states/@me because you can get the bot's voice state by doing Guild.me.fetch_voice_state using the common endpoint, let me know if i should implement the other too. Also in Member.fetch_voice_state i'm currently propagating the NotFound error, maybe we could catch it and return None?

Checklist

  • If code changes were made, then they have been tested
    • I have updated the documentation to reflect the changes
    • I have formatted the code properly by running pdm lint
    • I have type-checked the code by running pdm pyright
  • This PR fixes an issue
  • This PR adds something new (e.g. new method or parameters)
  • This PR is a breaking change (e.g. methods or parameters removed/renamed)
  • This PR is not a code change (e.g. documentation, README, ...)

disnake/http.py Outdated Show resolved Hide resolved
@shiftinv shiftinv added t: enhancement New feature t: api support Support of Discord API features s: needs review Issue/PR is awaiting reviews labels Aug 8, 2024
Copy link
Member

@shiftinv shiftinv left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good so far, thanks c:

Updating the cache is definitely a cool idea, though it conflicts with the part you mentioned -

Also in Member.fetch_voice_state i'm currently propagating the NotFound error, maybe we could catch it and return None?

Propagating the NotFound error is the right move, but it does mean voice states added to the cache this way would never get removed again (assuming no voice state intent, since the fetch method is pointless if enabled).

disnake/member.py Outdated Show resolved Hide resolved
disnake/member.py Outdated Show resolved Hide resolved
@Snipy7374 Snipy7374 requested a review from shiftinv August 9, 2024 15:35
Copy link
Member

@shiftinv shiftinv left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I also thought implementing /voice-states/@me would be unnecessary considering /voice-states/{bot.user.id} would be identical, but there actually appears to be one difference - if the bot gets moved to a channel it normally wouldn't have connect perms for, the former endpoint still works, while the latter doesn't.
Special-casing the bot's user ID and using the @me endpoint in fetch_voice_state should be a pretty straightforward fix for this.

disnake/member.py Outdated Show resolved Hide resolved
disnake/member.py Outdated Show resolved Hide resolved
@Snipy7374
Copy link
Collaborator Author

Special-casing the bot's user ID and using the @me endpoint in fetch_voice_state should be a pretty straightforward fix for this.

At this point I think we should keep this separated. The best thing is to implement a method on the Client class.

@shiftinv
Copy link
Member

At this point I think we should keep this separated. The best thing is to implement a method on the Client class.

On Guild, sure; I don't think it makes sense to have this on Client, though. Being able to fetch a member's voice state without needing to have a Member object in the first place would be a nice bonus.

@Snipy7374
Copy link
Collaborator Author

At this point I think we should keep this separated. The best thing is to implement a method on the Client class.

On Guild, sure; I don't think it makes sense to have this on Client, though. Being able to fetch a member's voice state without needing to have a Member object in the first place would be a nice bonus.

What do we do with the method implemented on the Member class, it looks useless now

@Snipy7374 Snipy7374 requested a review from shiftinv November 26, 2024 16:46
@Snipy7374
Copy link
Collaborator Author

At this point I think we should keep this separated. The best thing is to implement a method on the Client class.

On Guild, sure; I don't think it makes sense to have this on Client, though. Being able to fetch a member's voice state without needing to have a Member object in the first place would be a nice bonus.

What do we do with the method implemented on the Member class, it looks useless now

I removed it

disnake/guild.py Outdated Show resolved Hide resolved
disnake/guild.py Show resolved Hide resolved
disnake/guild.py Outdated Show resolved Hide resolved
Snipy7374 and others added 3 commits November 28, 2024 21:03
Co-authored-by: vi <[email protected]>
Signed-off-by: Snipy7374 <[email protected]>
Co-authored-by: vi <[email protected]>
Signed-off-by: Snipy7374 <[email protected]>
Co-authored-by: vi <[email protected]>
Signed-off-by: Snipy7374 <[email protected]>
@shiftinv shiftinv merged commit bb65a60 into DisnakeDev:master Nov 29, 2024
28 checks passed
@shiftinv shiftinv added this to the disnake v2.10 milestone Nov 29, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
s: needs review Issue/PR is awaiting reviews t: api support Support of Discord API features t: enhancement New feature
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

implement new voice state endpoints
2 participants