DennisRas / AlterEgo

AlterEgo is a World of Warcraft addon to track the Mythic+ progress of all your characters
11 stars 7 forks source link

Announce Keystone to other channels #112

Open choss opened 8 months ago

choss commented 8 months ago

Hi, can we add the functionality to announce keystones to either communities (single channel) or battle-net communities (multi-channel, across more than wow)

This would make organization of events much easier, than having to manually copy/paste the key info.

Relevant APIs are C_Club.GetSubscribedClubs() -- lists all communities person is member of local streams = C_Club.GetStreams(123456789); -- get all channels in a community

The communities have a type... which says what kind they are

DennisRas commented 7 months ago

Hey there @choss

Appreciate your input. Sorry for the delay.

I've actually never been in or used a community before, so I didn't think of this. The same goes for Bnet communities :smile:

I'm sure this would be easy to implement, however how would the user set this up/use this with the settings/announce button, considering Bnet communities have multiple channels? Nested dropdown for multi-channel communities?

choss commented 7 months ago

No worries about the delay. I an fine with that. I also am not quite there yet with a full working code sample. I noticed there a multiple types of communities of course

  1. Single channel -> I kind of would put them into the drop down, just like another random channel we have
  2. Bnet Communities -> I think nested dropdown would be perfect, but something like " -> " in the drop down would also help immensely I think.

As a value add, it would be of course even greater, if we could configure the contents of the drop-down somewhere in the settings. For a minimal concept which would solve my issue, it would be even enough to have it somewhere in the settings where I could manually add a channel with the "parameters" to give to SendChatMessage (SendChatMessage( ,"CHANNEL" ,nil,)). The hard part is getting the correct channel-id actually and also passing that through the methods.

As for the use-case: The realms where I am on have communities which basically organize cross-realm, cross-faction, cross-guild M+. The guilds tend to be more around a group of friends and not a specific goal. Communities help a lot there and also we like to post our keys into the Community to see what is available for running on a given night. I don't know how this translates to other peoples situation, but i think this might help a lot.

DennisRas commented 7 months ago

Good feedback and suggestions.

I am worried that having the user "add" the streams (channels) manually from one area in the GUI to another, would be too complex compared to the current simplicity of a single dropdown for settings. I'd prefer a simple checkbox (with nested streams in multi-channel clubs).

I don't use communities/clubs, so I don't know how many communities people usually end up having (or what the limit is), but I think just adding the streams (single or nested for Bnet) to the Announce button and settings dropdown (auto-announcement) is probably the quickest and easiest way to work with.

Now... here comes a new "challenge" to factor in: Clubs per character? I assume communities are managed for each character individually and not account-wide yeah? Similar to guilds. If that's the case then I'll have to introduce character-based settings as everything right now is global.

Edit: Actually nevermind. The activated streams for announcement don't cross over between characters anyway and won't announce anything on a different character that isn't in the same club/channel, so the settings are still global.

DennisRas commented 7 months ago

Bad news @choss

Blizzard protected the messaging to only work on hardware input (clicking, typing etc.) according to the warcraft wiki. I guess people just automated too much spam unfortunately and they had to restrict it in the patch afterwards.

Patch 8.1.0 (2018-12-11): Protected. May only be called in response to a hardware event.

Reference: https://warcraft.wiki.gg/wiki/API_C_Club.SendMessage

choss commented 7 months ago

Ah sorry for making you investigate this and for all the work. This sucks :( I would have assumed that a click on the report button is a hardware event

DennisRas commented 7 months ago

Ah sorry for making you investigate this and for all the work. This sucks :( I would have assumed that a click on the report button is a hardware event

My bad. You're right. The Announce dropdown will most likely work fine. It's the auto-announcement that won't work. And you're not wasting my time. I appreciate you :+1:

I'll look into adding communities to the Announce button and see if it works.

choss commented 7 months ago

That would be fantastic and I will happily test it and give feedback. My quick tests with wowlua addon say that at least for in game communities it works. For the Bnet communities I need to figure out, if I am dumb or if it's the blizzard api 😄

Also thank you for the appreciation! I btw love your addon!

choss commented 7 months ago

Also just a quick note: with my standard method of testing I found out:

But for this to work, you need to add the chat to your local chat tab. (in the community interface you can select this) Then they get a channel number and the c_club message actually works (with the community prefix, channel prefix)

I assume it is the same as the restrictions to guilds: you need to be actively subscribed to the channel in order to be able to post into it.

Source for the last sentence: https://wowwiki-archive.fandom.com/wiki/API_SendChatMessage

Relevant excerpt: "The earliest you can send a chat message to "GUILD" is after the event "CLUB_STREAM_SUBSCRIBED" is fired, as this is when the Community channel is loaded. (Guild is a Community channel)"