A slash command that answers from a live feed. The data half is four lines; the rest is Discord's embed format, which is the part people actually get stuck on.
No key, no auth header, no signup — which is what makes this viable for a community bot that might be installed in a hundred servers before anyone thinks about quotas.
Sentiment maps cleanly onto Discord's embed colour, which is the whole reason this reads better than a link dump: the channel sees the mood before it reads the headline.
Produced by running the code above against the live API, not written by hand.
The live response behind the command, 15 Sep 2026. sentiment is the integer that picks the colour; sentiment_score is the decimal shown in the footer. Note the third row: a Bitcoin options headline came back under tags=ethereum, because one article legitimately carries several project tags.
The same shape, pointed somewhere else. Every figure below came back from the live API.
Trending instead of latest
/items/news/trending/ ranks by engagement across the corpus rather than by recency. Better for a /whatsup command that should return something interesting rather than something new.
A governance channel
Point the same embed builder at /items/dao/ and colour by time remaining instead of sentiment. Proposals carry ends_at, which is the field that makes urgency renderable.
Autocomplete the project argument
The tag taxonomy is queryable, so the project argument can autocomplete against real slugs rather than letting users guess — which is what produces the empty result the code above has to handle.
Some tags return zero for a project that clearly has coverage
tags=lido returns 0 governance items. A tag only matches content through its keywords, and a tag filed with none never matches anything. Check a tag returns results before building a scheduled job on it.
Sentiment is per article, not per project
Each news item carries sentiment (-2 to +2) and sentiment_score. There is no project-level mood field — averaging is your call, and a mean over 50 articles can read positive in a week whose single biggest story scored -2.
Alert on DAO proposals closing soon
~15 min · Python, stdlib only
Give Claude live crypto news
~2 min · No code