gogo1951 / groupie Goto Github PK
View Code? Open in Web Editor NEWA better LFG tool for Classic WoW.
License: MIT License
A better LFG tool for Classic WoW.
License: MIT License
TODO
When you see a Friend or a Guildie post to Guild or LFG, we'll have the option to auto-respond with your current spec and gear stats when a group they post matches what you're after.
Should turn itself off if you are:
In a group.
In a battle ground or arena queue.
TODO
Sorry... the wires were shit here.
Needs to have a default value, can't start empty.
Values should be:
Recommended Dungeon Level Range
Default Suggested Levels
+1 - I've Done This Before
+2 - I've Got Enchanted Heirlooms
+3 - I'm Playing a Healer
Note, the bonus here would only apply to the lower-end of the dungeon level requirements. So like if the range was 13-19, someone who set +3 would start seeing messages for the dungeon show up once they hit 10, but they would still cap out at 19.
3rd Option...
Warcraft Logs Link
{rt3} Groupie : Warcraft Logs Link https://classic.warcraftlogs.com/character/us/faerlina/gogodruid
Easy format... https://classic.warcraftlogs.com/character/REGION/SERVER/CHARACTER
100% OK if we can only do US to start.
https://classic.warcraftlogs.com/character/us/faerlina/gogodruid
https://classic.warcraftlogs.com/character/EU/Lakeshire/Keepar
https://classic.warcraftlogs.com/character/kr/로크홀라/로크홀라제일냥꾼
Oof the non-roman encoding may be a shit show. OK if we don't do that to start.
Sound should only fire when a group posted by friends matches your interests.
Sound should only fire when you aren't already in a group, battleground, or arena.
We'll also need an option to turn that sound off, under Character Options.
https://www.wowhead.com/wotlk/sound=17318/lfg-dungeonready
/script PlaySound(17318)
So... this "bug" happens when a guild spams saying, "We do 37 X, Y, Z Raids every week!"
If we can RegEx guild recruitment patterns and tuck those away in the "Other Groups" or just say any time there's more than 1 dungeon it gets stuck in the "Other Groups" bin... that'd be good. Hate seeing 1 message clutter up the list like this.
Taking an idea from a past project.
I think we ended up doing this by UnitID, not name. It had a lag with just name as we had to do a few lookups per mouseover.
Message should say:
{rt3} Groupie : Team Member
Ideally it'd be great if we could customize the message per person. So like "Team Member" or "Special Thanks" sort of thing.
I'll dig up a list of characters when we're ready to do this. Need to include everyone who has helped, on all their alts. Takes a bit ot get it assembled.
Missing 2nd option for Frost DKs.
Values should default, not empty on load.
Frost DKs and Feral Druids have 2 options, just default them both to Melee DPS.
Change Label to:
Role for Spec 1 : Frost
Role for Spec 2 : Blood
Good to hide Spec 2 if they haven't purchased dual spec, or set any talent points yet. Classes seem to have a "default" spec, that's fine for Spec 1. Once a user sets ability points it'll re-adjust, just make sure you fire the check on load of the game AND load of the Options window.
{rt4} LFM [[70] Grulloc Has Two Skulls (10995)][[70] Maggoc's Treasure Chest (10996)][[70] Even Gronn Have Standards (10997)] - Need Heals and 1 DPS
We can look for Questie Links and classify those as "Quests" and make a tab for them.
Nice if this data stayed a little longer... often you'll be questing and you'll post and it'd nice nice if these slow-fill groups hung around a bit longer on the board. 10 minutes maybe.
Hey mate, there's a popular add-on called LFGBB, and I'm looking to extend it.
LFGBB summarizes text from an in-game looking for group channel, and creates an organized list of people looking for dungeon groups.
The LFGBB add-on is not being well maintained, but is permissively licensed. So we can likely use it as a starting point.
I'd like to extend LFGBB to include some auto-messaging capabilities. So when a group shows up from someone you know, and that you're interested in, you'd automatically shoot a message to the group's creator, "Hey I'm a Tank, and I'd like to do Dungeon XYZ."
Then, to close the loop, I want to have a little tool that gives them a summarized response dashboard (similar to what LFGBB does for the LFG channel, but just for private message you receive while building a group) that the group-maker can use to quickly review those who are interested and invite people to the group. On larger servers, the auto-responses would likely pile up fast, but even if they get 100 messages the dashboard will keep it clean. And... a nice touch, when a group is full I'd like the add-on to automatically send people, "Thanks anyway..." messages.
Please note that this project is for Classic WoW, specifically Classic Wrath. The APIs will work differently than retail, or even Classic TBC. If it works in Classic TBC it'll likely work in Classic Wrath; but a few features will be Wrath-only, specifically anything to do with Achievements.
So there are a few parts to this...
There are two add-ons that I think are worth looking in to for inspiration, LFGBB, and Enchanter (which does automatic messages). Here are a few relevant links for context.
https://www.curseforge.com/wow/addons/lfg-group-finder-bulletin-board-tbc
May be useful to see if we can show "Fully Gemmed and Enchanted!" messages using the existing API.
https://wowwiki-archive.fandom.com/wiki/API_GetSocketTypes
https://wowwiki-archive.fandom.com/wiki/API_GetWeaponEnchantInfo
This is not for MVP. Just ideas for future state.
Originally posted by @Gogo1951 in #7 (comment)
Some add-ons to review.
GogoLoot
https://github.com/Gogo1951/GogoLoot
Look at the UI components of Ace I want to use this for UI of Groupie.
LFG BB
The add-on we're replacing. Lots of stuff here can probably be used for inspiration. It's permissively licensed, we'll credit them where applicable.
https://www.curseforge.com/wow/addons/lfg-group-finder-bulletin-board-tbc
Enchanter
A tool that does auto-messages. Good to take a look at the code.
https://www.curseforge.com/wow/addons/enchanter
WoW API
https://wowwiki-archive.fandom.com/wiki/API_GetAchievementLink
https://wowwiki-archive.fandom.com/wiki/API_GetSavedInstanceInfo
https://wowwiki-archive.fandom.com/wiki/API_GetInventorySlotInfo
Feedback welcome, but for 5-man, it'd just follow this pattern.
If someone was looking for a Violet Hold group, Groupie would link the best achievement that person had completed.
As a WoW Classic Player, far too often we group with people we like but don't make an effort to connect with them.
Windows shows as soon as you leave a group that killed a dungeon boss or raid boss.
Shows on party or raid.
If you hit "Add to Friends" and have "Send Message..." enabled:
"{rt4} Groupie : I added you as a friend! Cheers!”
Needs to use class color for the names.
Also needs the option to "Enable After Party" in the Character-specific settings.
Any friend added should be added to the "Groupie Global Friends List" not the in-game Friend List. #20
Also need a "Delete" button on the Global Friends List, for "Groupie Friends" -- can't delete character friends or guildies since we import those on load.
TODO
Groupie makes heavy use of "friends" and "guildies" for the auto-response tool to work.
The in-game friends list is limited to 100 names, and it's character-specific. The in-game ignore list is also limited to 100 names.
We need a global friend (and ideally global ignore list) so that all your friends and enemies are known to you no matter what character you are on.
Not trying to sync the friends' list... instead we'll read from it, and populate a Groupie friends' list that is shared between all toons on your account.
There are too many issues with the list only supporting 100 friends, and rather than deal with that we'll just have Groupie consume whatever friends are on a list at load, and then update the Groupie list whenever someone is added or removed.
Here are a few places to start. I just want to create a global friends list for an account.
Thoughts on MVP workflow.
In this situation, if you had 2 toons in a guild, and you left the guild on one of them, you would still see the Guildies on your Global Friends List.
Likewise, if you had 2 toons in a guild and you left the guild, you would still see the Guildies on your Global Friends List until you logged in with a toon that was in that guild so the tool could properly update.
So like... your Groupie Friends List might say... if you've got a lot of toons and a lot of guilds, it'll be quite long.
Name | Class | Level | Groupie Auto Note | Your Note | Action |
---|---|---|---|---|---|
Aevala | Priest | 80 | Friend : Fathom | Gud Priest | |
Beth | Priest | 80 | Guild : Guild XYZ, Friend: Fathom | ||
Gogohunter | Hunter | 80 | Friend : Fathom, Notaevala | *Multiple Notes | |
Gogomage | Mage | 1 | Friend : Notaevala | ||
Gogopaladin | Paladin | 80 | Groupie Global Friend | Remove | |
Sally | Warlock | 80 | Guild : Guild XYZ |
Name | Groupie Auto Note | Your Note |
---|---|---|
Cunthunter | Ignore : Fathom | Shitfuck bad DPS hunter |
Cuntmage | Ignore : Notaevala | Rude shit ass face |
Cuntpaladin | Ignore : Fathom, Not Aevala | *Multiple Notes |
Lastly, when you are in a group with someone, it should silently push an update... "Hey here are all my atls..." along with a note so you know why random toons were added to your friends or ignore lists.
Not MVP...
The ability to sync your toons with your friends automatically behind the scenes; so on my side in a Tooltip it'd say, "Fathom" on all your toons, and any time you posted a LFG message I could auto respond, "Hey bud, let's go!" It'll need to be something we can turn off, and I'll work up UI for it when we're ready.
And at some point I want Ignore notes to maybe show up in tooltips for your friends. So you group with someone, sync your ignore list, and presto that note now shows up in their tooltips: "Gogo : This fuck ninja'd from me in SWP." Future idea just brainstorming a bit.
Block users on the Global Ignore List... need a way to filter them from showing up in messages and in chat. Global Ignore list addon does this, we can look at their logic.
LOW
CurseForge Link - https://www.curseforge.com/wow/addons/groupie-lfg
Discord Link - https://discord.gg/6xccnxcRbt
Github Link - https://github.com/Gogo1951/Groupie-LFG
This is the part that listens to /4 and guild channels and converts "LFM BRD..." to a Blackrock Depths Group in the list, and knows if you are the right level and if you're saved to that dungeon / raid already.
Hopefully we can re-use some of the LFGBB logic, but they wrote the tool before Heroic Dungeons were a thing, so they sort of bolt a lot of stuff together. No concept of "Group Types" like GDKP, or SR, or Ticket Run... no concept of 10/25-man Raids, or achievements, etc. So like we can look at their base logic, but it's going to take a good amount of tweaks to get the data clean enough for all the categorization we know about today.
Check out #12 & #13 before getting started.
I've started a document for instance data. Likely will need Instance IDs so we can match them to achievements.
I don't quite know where to put this... just a random note. I want the data that the add-on captures from /g or /lfg to remain in the add-on when you switch characters. The settings will be character-specific, but the groups captures will stay until they expire. So if you switch from one toon to another, you don't start with a blank slate... you start with the data that made you want to switch toons in the first place... but with your current toon's level range, and other filters applied.
And just to be clear, the goal should be to capture and classify every message from the channels (LFG / Guild) but only show messages that match the right filter settings. That way if a user changes toons, or changes their settings, we can still show groups that they have saved... by default we'll save groups for 2 minutes, but allow users to extend that up to 5 in the options.
Typing /groupie
should open Groupie.
As mentioned in #2
I don't quite know where to put this... just a random note. I want the data that the add-on captures from /g or /lfg to remain in the add-on when you switch characters. The settings will be character-specific, but the groups captures will stay until they expire. So if you switch from one toon to another, you don't start with a blank slate... you start with the data that made you want to switch toons in the first place... but with your current toon's level range, and other filters applied.
Future Option...
When a Groupie detects someone has posted the same message too quickly to the same channel, everyone with Groupie who had the "anti-spammer" option turned on would respond to the spammer.
Message 1 - maid total will proclaim dependence freighter housing
Message 2 - effort way intensify liberty calculation economist pool
Message 3 - {rt3} Groupie : Getting spammed doesn't feel very good, does it? Knock it off! Don't post the same message to the same channel more than once every 30 seconds.
Randomly pick 4-8 words and send them as the first 2 messages, the send a Groupie message telling the person how to avoid getting spammed.
I just used this (https://randomwordgenerator.com/), but it wouldn't be hard to do something like this with a simple word list, wouldn't even have to be all that long.
Came from a conversation:
https://discord.com/channels/909277299260670032/909277299810107405/1012064184877457438
I kind of love the idea, but I think it's solved by the bulletin board more than this. But man... I hate it when people post the same message 3-4 times in a row. When everyone does this, that's when chat becomes totally unusable.
Need to use the font and size selected in the options for other UI panels when we make them
To sanity check messages, we can add a time-stamp in seconds to every message someone sends, and then check it on the receiver side to ensure it was a message generated by Groupie. This will prevent fake messages where users spoof their item-level or achievement links.
"Groupie {rt3} : Tank LFG! Level 80 Blood Death Knight in 234 item-level gear. English-speaking Player. 86400 [Relevant Achievement Link]"
"Groupie {rt3} : Tank LFG! Level 80 Blood Death Knight in 234 item-level gear. English-Speaking Player. 00034 [Relevant Achievement Link]"
Raw time-stamps in seconds (that seems shortest) may work, but open to other suggestions. Maybe do some light hash type thing on the 5-digit number so it's not totally apparent it's a time-stamp.
This wouldn't be totally spoof-proof, but it would stop most of the annoying people.
All we'd have to do is could cross check the seconds counter against the time stamp on the message (give it 2 seconds forgiveness) and then if we spot an issue with someone faking an achievement we can auto respond, ""Groupie {rt3} : Fake news!"
I remember how annoying the fake links were in Wrath. It would be good to take a step to prevent them if we can.
Include ACE 3
Once we can safely send the current spec, we'll need to update the message (and remove option to send 2nd Spec from Right Click Menu and Bulletin Board Window). We'll just send details on the current spec and current gear equipped.
/w Person "{rt3} Groupie : {Current Role} LFG! Level {Level} {Current Spec} {Class} wearing {Average Item level} item-level gear. Other Spec is {Other Spec} ({Other Role}). {Locale}-speaking Player."
/w Person "{rt3} Groupie : Tank LFG! Level 80 Blood Death Knight wearing 193 item-level gear. Other Spec is Frost (Melee DPS). English-speaking Player."
https://www.tukui.org/download.php?ui=elvui
When I try and load both, Groupie doesn't show up.
Elv isn't quite ready for Wrath yet... still alpha, so this is just something we'll have to keep an eye on.
We're going to have conflicts with the Global Ignore Lists, maybe Badboy (hopefully not!), likely LFG BB... need to start making that list and giving a warning when people have multiple conflicting add-ons installed.
Needs to be able to summarize spec, and gear.
Let's just leave it to "Current Spec" for now. Just one option for MVP, the spec you're in and the gear you're in when you hit the button.
MVP Output:
/w Person "{rt4} Groupie : {Role} LFG! Level {Level} {Spec} {Class} wearing {Average Item level} average item-level gear. {Locale} Speaking Player."
/w Person "{rt4} Groupie : Tank LFG! Level 80 Blood Death Knight wearing 234 average item-level gear. English-Speaking Player."
We won't have an options UI for setting role yet, so fine to set it with a slash-command for now.
/groupie role Tank
/groupie role Healer
/groupie role Melee DPS
/groupie role Ranged DPS
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.