slarkbot / slarkbot

Telegram bot for fetching dota 2 statistics
4 stars 3 forks source link

/synergy #56

Open HaddyTheShark opened 3 years ago

HaddyTheShark commented 3 years ago

Slarkbot should be able to let a player know what hero synergizes well with others heros. For example, Darkseer works well with..

image

cschuijt commented 3 years ago

There's no nice way to fetch this list from the dota 2 wiki, the closest you can get is heroes that have a high combined winrate through opendota and that's not quite the same thing

KameronEX commented 3 years ago

Tbh I'd like to see this too somewhere cause the list on the dota 2 wiki is kinda of outdated but there is literally no place that just has hero comboes apart from like the overwolf app I think

cschuijt commented 3 years ago

I've looked into this some more, and the OpenDota site/API only has endpoints for pro data, like here. The "advantage" is a Wilson score, the endpoint only gives amount of games/wins with a hero. An endpoint for public data/winrates is not available, and a form like this one only gives the last 10 games, also on the API, no winrate. Is this still worth implementing if we've only got pro games to work with?

connormullett commented 3 years ago

Pro games give good insight into what top tier players are doing. Maybe we can create a proof of concept. The issue I see we'll come across is in lower tier brackets where the conversation generally becomes "anything can counter anything or anything goes good with XXX hero" when higher rated players discuss lower mmr brackets. Or, a lower mmr player "thinks" that a hero does well against a hero but doesn't in higher levels. This also depends on if we can get data from pro-player's pub games or if its solely restricted to pro-matches against other pro teams. The meta in pro dota isn't as divergent from pub games as much as it is in league for example.

connormullett commented 3 years ago

A potential solution is to implement a web scraper to scrape that subset of data from the wiki rather than using an API. Might be a fun challenge and could create a pattern to extract data from more sources rather than being limited by one singular API for fetching.

We can also implement caching on this implementation so that new heroes requested by this command will save that data to a database so future requests will be much quicker.

cschuijt commented 3 years ago

The only data on heroes/:id/matchups is from tournament games, it's why the sample size is relatively small. I'm not too concerned about winrates by rank because that should even out in the long run (and something like a Wilson score will weigh the results accordingly and point out the biggest outliers), it's just that we don't have that data available to us right now. I might reach out to the OD developers and ask if I'm missing anything/whether this can be implemented, else running with what's on the wiki is probably the easiest way to make this happen.

connormullett commented 3 years ago

Sounds like in the meantime a web scraper is going to be the easiest for finding heroes that work well with each other.