grammy-guard
Version:
Guard middlewares for grammY
31 lines (30 loc) • 1.25 kB
TypeScript
import { Chat, ChatMember, ChatMemberUpdated, Context, Filter, User } from "./deps.js";
export type MaybePromise<T> = T | Promise<T>;
export type Predicate<C extends Context> = (ctx: C) => MaybePromise<boolean>;
type UserType = {
from: User;
};
export type UserContext<C extends Context = Context> = C & UserType;
type SenderChatType = {
senderChat: Chat;
};
export type SenderChatContext<C extends Context = Context> = C & SenderChatType;
type MyChatMemberType<T extends ChatMember["status"]> = {
myChatMember: ChatMemberUpdated & {
new_chat_member: {
status: T;
};
};
};
export type MyChatMemberContext<C extends Context = Context, T extends ChatMember["status"] = ChatMember["status"]> = C & MyChatMemberType<T>;
type ChatMemberType<T extends ChatMember["status"]> = {
chatMember: ChatMemberUpdated & {
new_chat_member: {
status: T;
};
};
};
export type ChatMemberContext<C extends Context = Context, T extends ChatMember["status"] = ChatMember["status"]> = C & ChatMemberType<T>;
export type UserSharedContext<C extends Context = Context> = Filter<C, ":user_shared">;
export type ChatSharedContext<C extends Context = Context> = Filter<C, ":chat_shared">;
export {};