diff --git a/src/packages/socket/src/components/ServerBotsTab.tsx b/src/packages/socket/src/components/ServerBotsTab.tsx
index dd21bca06..f709ec2b5 100644
--- a/src/packages/socket/src/components/ServerBotsTab.tsx
+++ b/src/packages/socket/src/components/ServerBotsTab.tsx
@@ -21,6 +21,8 @@ type BotEntry = {
awaitingClaim: boolean;
createdAt: string | Date;
decidedAt: string | Date | null;
+ /** Asked for since it was let in (GRYT-2006). An older server sends none. */
+ more?: string[];
};
/**
@@ -63,6 +65,9 @@ export function ServerBotsTab({
if (b.status === "pending" && !next[b.registrationId]) {
next[b.registrationId] = new Set(b.requested);
}
+ if (b.status === "approved" && b.more?.length && !next[b.registrationId]) {
+ next[b.registrationId] = new Set(b.more);
+ }
}
return next;
});
@@ -103,6 +108,7 @@ export function ServerBotsTab({
};
const pending = useMemo(() => (bots ?? []).filter((b) => b.status === "pending"), [bots]);
+ const wantsMore = useMemo(() => (bots ?? []).filter((b) => b.status === "approved" && (b.more?.length ?? 0) > 0), [bots]);
const settled = useMemo(() => (bots ?? []).filter((b) => b.status !== "pending"), [bots]);
if (!bots) {
@@ -113,8 +119,8 @@ export function ServerBotsTab({
A bot is a member like any other — it holds only what you give it, and it can never
- give itself more. What it asked for is fixed the first time it turns up, so a bot
- that has been tampered with since cannot come back asking for the keys.
+ give itself more. If it asks for more later, it keeps what it has and the new ask
+ waits here for you, so a bot that has been tampered with can ask but can't take.
@@ -177,10 +183,66 @@ export function ServerBotsTab({