The following approach is needed because Discord has effectively abandoned the voice status feature.
It is not documented in the official Discord API documentation, which means it is considered unstable and may change at any time without notice.
That level of uncertainty is not ideal for a library like discord.py. The behavior described below is not necessarily undocumented or explicitly discouraged, but you are largely on your own. You are working directly with the raw data that the Discord API sends to the library, before it is parsed or exposed through any higher-level abstractions.
For more information or questions about this approach, you can ask in the discord.py server.
Also see discord/discord-api-docs#6398