INNER CODE UNIT · TypeScript
passesRateLimit
Beever-AI/beever-atlas · bot/src/index.ts:265
async function passesRateLimit(
thread: PostableThread,
message: { author?: { userId?: string } },
): Promise<boolean> {
const key = `${extractPlatform(thread.id)}:${extractChannelId(thread.id)}:${message.author?.userId || "unknown"}`;
const decision = rateLimiter.check(key);
if (decision.allowed) return true;
if (noticeLimiter.check(key).allowed) {
const secs = Math.max(1, Math.ceil(decision.retryAfterMs / 1000));
try {
await postNotice(
thread,
message.author,
`You're asking a lot — give me a moment 🙂 (try again in ~${secs}s)`,
);
} catch (err) {
console.error("Failed to post rate-limit notice:", safeErrorMessage(err));
}