feat: flag accounts Reddit considers unestablished and re-test them
New accounts cannot start chats until Reddit considers them established. Until now the bot would burn a candidate on every invitation Reddit was always going to reject, with nothing in the dashboard explaining why the account looked idle. Two signals feed the verdict. A periodic profile check reads the account's own age, karma and email verification from about.json and compares them against configurable thresholds — that is what flags a brand new account before it wastes anything. A rejected invitation is authoritative: Reddit has told us directly, so the account is held out of sending with a backoff that doubles per rejection, and a delivered invitation clears the flag outright. An unestablished account takes no new posts (canAcceptPost), raises an attention item, reports an `unestablished` sending state, and shows its age/karma evidence on the Accounts page. An unchecked account is always allowed through, so a first run is never blocked. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
c43e534cf1
commit
89eb4583f8
25 files changed
+1425
-11
No files matched your search
@@ -456,6 +456,27 @@ export function runMigrations(db: Database.Database): void {
|
||||
CREATE INDEX IF NOT EXISTS idx_reddit_recipient_account_status_due
|
||||
ON reddit_recipient_account_status(checked_at);
|
||||
`),
|
||||
() => db.exec(`
|
||||
CREATE TABLE IF NOT EXISTS reddit_account_establishment (
|
||||
account_id TEXT PRIMARY KEY,
|
||||
state TEXT NOT NULL CHECK(state IN ('unknown', 'established', 'unestablished')),
|
||||
reasons_json TEXT NOT NULL DEFAULT '[]',
|
||||
account_created_at INTEGER,
|
||||
link_karma INTEGER,
|
||||
comment_karma INTEGER,
|
||||
total_karma INTEGER,
|
||||
has_verified_email INTEGER,
|
||||
profile_checked_at INTEGER,
|
||||
last_probe_at INTEGER,
|
||||
last_probe_failure TEXT,
|
||||
probe_failure_count INTEGER NOT NULL DEFAULT 0,
|
||||
retry_at INTEGER,
|
||||
updated_at INTEGER NOT NULL,
|
||||
FOREIGN KEY (account_id) REFERENCES reddit_accounts(account_id) ON DELETE CASCADE
|
||||
);
|
||||
CREATE INDEX IF NOT EXISTS idx_reddit_account_establishment_state
|
||||
ON reddit_account_establishment(state, retry_at);
|
||||
`),
|
||||
];
|
||||
|
||||
let currentVersion = db.pragma('user_version', { simple: true }) as number;
|
||||
|
||||
Reference in new issue
Block a user