CLI command
social communities
The rules and rate Echo takes part in a community under: every dispatched action naming a declared community is counted, and one past its rate is refused before it reaches Weles.
Invocation#
echo-cli social communities list
echo-cli social communities set --platform <p> --community <r/name|channel id> --actions <action,...> --max <n> --days <n> --rules <text> --by <who>
echo-cli social communities remove --platform <p> --community <r/name|channel id>
echo-cli social communities refusals --days <n>Inputs and output#
list writes every declared community, set the one it stored and remove the one it removed: platform, community, actions, max_actions, window_days, rules, declared_by and declared_at. refusals writes the refusals of the last days, newest first: id, platform, community, action, account_id, reason and refused_at.
State effect#
The verbs call Echo Web's authenticated /api/analytics/community-rules with ECHO_INTERNAL_BEARER at ECHO_WEB_BASE_URL; the Community rules section of the ecosystem's Reddit review tab and of Echo Desktop's GEO screen do the same, and echo-mcp runs them as echo_community_rules, echo_community_rule_set, echo_community_rule_remove and echo_community_refusals. Platform and community are stored lower-cased in community_rules, one row per community. Every action Echo dispatches (dispatchJob: account actions, routines, approved Reddit comments) whose action is one of a rule's --actions on its platform and whose params name the community — a param equal to it or to its last segment (saas for r/saas), or an address whose path holds it — is counted against the rate from Echo's action history over the last --days, and is stored with the community in its params. Past the rate it is refused before it reaches Weles and the refusal is recorded in community_refusals; an approved Reddit comment refused this way stays approved. A reply Echo drafts for a cited Reddit thread (echo-cli geo sources threads) is drafted under the --rules of every community the thread's address names, handed to the drafting route word for word.
Refusals#
- A wrong invocation is refused before anything is sent: "social communities takes list; set …; remove …; refusals --days <n>; got <word>", "social communities <verb> does not take <flag>; it takes …", "<flag> needs a value" and "social communities <verb> needs <flag>".
- Echo Web answers a bad request with "platform is required: the platform the community is on, such as reddit", "community is required: the community, such as r/saas or a channel id", "actions is required: the dispatched actions that count against the rate, such as reddit_comment, as a non-empty list", "max_actions must be a whole number above zero: how many counted actions the community allows in the window; got <value>", "window_days must be a whole number above zero: the days the rate is counted over; got <value>", "rules is required: the community's rules as the operator declares them" or "declared_by is required: an internal caller has no signed-in user, so it names who is acting"; not found with "<community> on <platform> has no declared rules". The command prints Echo Web's sentence and exits 1.
- An action past a rate is refused with 409 by /api/accounts/actions and the Reddit comment post: "<community> on <platform> allows <max_actions> of <actions> per <window_days> days under its declared rules, and <n> were sent since <time>; <action> was not dispatched"; a routine reports the same sentence for the account it skipped.