S3 review: overview pool-cap check, membership re-read on pool_full (server-26#225)
- guild_overview offered an invite link to a full pool bot whenever it was in ANY server (`if member` tested the non-empty guild_ids list, not membership of this guild). Now: in this guild, or invitable. - start_stream re-reads membership once on pool_full as it already does on no_bot_in_guild, so a full pool bot an admin just invited by hand is found. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
2c2cf9d9be
commit
8bdcfcae9c
@@ -626,7 +626,7 @@ async def _start_locked(*, org_id: str, guild_id: str, channel_id: str, system_i
|
||||
res = await leases.lease_for_stream(stream_id, node_id=node["node_id"], org_id=org_id,
|
||||
preferred_token_id=preferred_token_id, stream_fields=fields,
|
||||
soft_preferred_token_id=soft_pref, perms=perms)
|
||||
if not res.ok and res.error == "no_bot_in_guild" and not refreshed:
|
||||
if not res.ok and res.error in ("no_bot_in_guild", "pool_full") and not refreshed:
|
||||
# Membership is cached on the token doc; someone may have just
|
||||
# invited a bot. Re-read it from Discord once, then retry.
|
||||
refreshed = True
|
||||
|
||||
@@ -95,7 +95,7 @@ async def guild_overview(guild_id: str, _: dict = Depends(require_service_key_or
|
||||
"member": None if member is None else guild_id in member,
|
||||
# A pool bot at discord_pool_bot_guild_cap is never offered (#225, owner Q3).
|
||||
"invite_url": (leases.invite_url(t.get("application_id"), guild_id)
|
||||
if member or leases.invitable(t) else None),
|
||||
if guild_id in (member or []) or leases.invitable(t) else None),
|
||||
})
|
||||
return {
|
||||
"guild_id": guild_id,
|
||||
|
||||
Reference in New Issue
Block a user