The setup
Run this in any channel where the bot can see you:
/connect sleeper_username: yourname
Ash looks up the NBA leagues attached to that username for the current season. In one league, it connects immediately. In several, it shows a menu and you pick. It then starts pulling your players' numbers in the background, so your first real question is fast rather than a wait.
That's the whole setup. There's no password step because Sleeper's league data is public through their API — a username is enough to find your leagues.
What Ash reads
- Your roster — who you have, and who's starting.
- Your league's scoring settings — whether turnovers count, what each category is worth. This is why the same player can be a good pickup in your league and a bad one in someone else's.
- The other teams — which players are rostered, which means everyone else is a free agent.
- Your weekly matchup — who you're playing and where the categories stand.
On top of that it pulls recent NBA numbers for the players involved: per-game averages, and the minutes trend over the last five games against the last fifteen. Minutes are the first thing that moves when a role changes, well before the points do.
What it can't do
Ash reads. It doesn't write. It can't set your lineup, submit a waiver claim, accept a trade or drop a player. Every move stays in the Sleeper app where you make it yourself.
This is deliberate. A bot with write access to your team is a bot that can lose your season through a bug, and the convenience isn't worth that.
Why Sleeper basketball is underserved
Sleeper grew on the back of fantasy football, and the tooling followed the crowd. Almost every Sleeper bot you can find posts football scores, football matchups and football waiver alerts.
Sleeper supports NBA leagues perfectly well — the same API works, the league structure is the same — but far less has been built for it. If you play basketball on Sleeper, you have probably noticed that the tools people recommend to you were all written for a different sport.
Several managers, one server
Each person connects their own league. Answers are private per user, so two managers in the same league can both ask Ash about the same trade and neither sees the other's question or the other's answer.
That also means a Discord server can host managers from several different leagues at once without anyone's data mixing.
If something goes wrong
"No Sleeper user called that." The username is the one in your Sleeper profile, not your display name in the league. They're often different.
"No NBA leagues for this season." Sleeper organises leagues by season and sport. If your league is from an earlier season, or if it's a football league, it won't show up in an NBA search.
Numbers look stale. During the off-season there are no new games, so Ash works from the most recently completed season and says so in the reply. It doesn't pretend last April's averages are tonight's.
Common questions
Does Ash need my Sleeper password?
No, and it will never ask for one. A username is enough.
Can it make moves for me?
No. It reads and advises; you decide and act.
What about Yahoo and ESPN?
Yahoo support is in progress, pending API approval. ESPN isn't supported yet. Sleeper works today.
Is my league data shared with anyone?
Your question and the relevant part of your roster go to Anthropic to generate the answer. Nothing is sold or shared with advertisers. The privacy policy lists every service that touches your data and why.