fredemmott / StreamDeck-Discord

Control the Discord application with the Elgato StreamDeck
MIT License
275 stars 23 forks source link

Channel status complete profile #51

Open acatoire opened 3 years ago

acatoire commented 3 years ago

Is your feature request related to a problem? Please describe. I use discord at work, and a clear view of people in my actual voice channel would be a must. I start to develop it in python but I think that your plugin already have all the things needed (auth...) It may be better to add the feature to your plugin.

Describe the solution you'd like When I enter in a voice channel, the button of my stream deck take the avatar/name of the other peoples in the channel. This will allow a quick view of the meeting any time. Each button could then lead to a specific action on the user, possible action: direct call on discord, open the direct text message channel of the user, mute the user....

It could be a complete dynamic profile (like some stream deck games) or individual button, as I don't know the complexity.

With a 15 keys stream deck it give a good control over most meeting that are inferior to 10 peoples.

Describe alternatives you've considered I started a python app than get the avatars of connected people and discover your plugin then.

Additional context This feature would be for me a killing feature for home office, it could then be created for other voice conference programs (teams, skype, zoom...) As a developer I will try to have a try starting the implementation, but my C++ is a little rusty.

fredemmott commented 3 years ago

As a developer I will try to have a try starting the implementation, but my C++ is a little rusty.

You'll need to thread through the current position in the streamdeck, or add an option; this is available, just not directly exposed in ESDAction

https://discord.com/developers/docs/topics/rpc is pretty much how it communicates - it talks about websockets, but there's also a named pipe/unix socket, which works slightly different: for example, over the websocket, mute/deafen only affects the client app, not discord as a whole. If you end up doing it over python, you probalby want to use the named pipe too.

https://github.com/fredemmott/StreamDeck-Discord/commit/225787f9d4461bcbfb317faa2cfd2eba49887982 shows how to call GET_CHANNEL ; https://github.com/fredemmott/StreamDeck-Discord/blob/225787f9d4461bcbfb317faa2cfd2eba49887982/Sources/DiscordPayloads.h#L71 and to_json/from_json would need extending to include the voice_states elements documented at https://discord.com/developers/docs/topics/rpc#getchannel - if the example output there is accurate, it does include the user's name/id/avatar info which can be used to fetch their profile image - but it also says that it returns a 'voice_state' object which does not include name/avatar: https://discord.com/developers/docs/resources/voice

if it doesn't, you're likely to hit into the same rate limiting issues that are making #50 a bit of work (and that make the commit I linked earlier impractical), and to need the same solutions

acatoire commented 3 years ago

Which IDE, and dev environment should I use if I want to quick start with your repo?

fredemmott commented 3 years ago

If windows: you need cmake, the microsoft C++ compiler, and standard windows C++ development kit. IDE is entirely your preference.

If you don't have a preference, it's probably easiest to get started by installing visual studio 2019 community edition