Fields present on both arms, so a gate reading only these needs no kindkind narrowing. Every field except corecore is nullable here, since an event may carry no user or guild.
interface GateContextBase
interface GateContextBase
// an agnostic gate reads only the base fields, so it fits any handlerconst NeedsUser = defineGate('NeedsUser', (ctx: GateContextBase) => { if (!ctx.user) throw new NoUserNotice();});
// an agnostic gate reads only the base fields, so it fits any handlerconst NeedsUser = defineGate('NeedsUser', (ctx: GateContextBase) => { if (!ctx.user) throw new NoUserNotice();});