mtcute/packages/dispatcher/src/handler.ts

125 lines
3.2 KiB
TypeScript
Raw Normal View History

import {
MaybeAsync,
Message,
TelegramClient,
InlineQuery,
2021-05-05 01:50:04 +03:00
CallbackQuery,
PeersIndex,
ChatMemberUpdate,
PollVoteUpdate,
UserStatusUpdate,
ChosenInlineResult,
HistoryReadUpdate,
DeleteMessageUpdate,
PollUpdate,
UserTypingUpdate,
2022-05-09 17:25:38 +03:00
BotStoppedUpdate,
BotChatJoinRequestUpdate,
ChatJoinRequestUpdate,
2021-08-05 20:38:24 +03:00
} from '@mtcute/client'
import { tl } from '@mtcute/tl'
import { PropagationAction } from './propagation'
2021-04-08 12:19:38 +03:00
interface BaseUpdateHandler<Name, Handler, Checker> {
name: Name
2021-04-08 12:19:38 +03:00
callback: Handler
check?: Checker
}
type ParsedUpdateHandler<Name, Update, State = never> = BaseUpdateHandler<
Name,
(update: Update, state: State) => MaybeAsync<void | PropagationAction>,
2021-05-27 01:02:31 +03:00
(update: Update, state: State) => MaybeAsync<boolean>
2021-04-08 12:19:38 +03:00
>
export type RawUpdateHandler = BaseUpdateHandler<
'raw',
(
client: TelegramClient,
update: tl.TypeUpdate | tl.TypeMessage,
peers: PeersIndex
) => MaybeAsync<void | PropagationAction>,
2021-04-08 12:19:38 +03:00
(
client: TelegramClient,
update: tl.TypeUpdate | tl.TypeMessage,
peers: PeersIndex
2021-04-08 12:19:38 +03:00
) => MaybeAsync<boolean>
>
// begin-codegen
2021-05-27 01:02:31 +03:00
export type NewMessageHandler<T = Message, S = never> = ParsedUpdateHandler<
'new_message',
2021-05-27 01:02:31 +03:00
T,
S
>
2021-05-27 01:02:31 +03:00
export type EditMessageHandler<T = Message, S = never> = ParsedUpdateHandler<
'edit_message',
2021-05-27 01:02:31 +03:00
T,
S
>
export type DeleteMessageHandler<T = DeleteMessageUpdate> = ParsedUpdateHandler<
'delete_message',
T
>
export type ChatMemberUpdateHandler<T = ChatMemberUpdate> = ParsedUpdateHandler<
'chat_member',
T
>
export type InlineQueryHandler<T = InlineQuery> = ParsedUpdateHandler<
'inline_query',
T
>
2022-05-09 17:25:38 +03:00
export type ChosenInlineResultHandler<T = ChosenInlineResult> =
ParsedUpdateHandler<'chosen_inline_result', T>
2021-05-27 01:02:31 +03:00
export type CallbackQueryHandler<
T = CallbackQuery,
S = never
> = ParsedUpdateHandler<'callback_query', T, S>
export type PollUpdateHandler<T = PollUpdate> = ParsedUpdateHandler<'poll', T>
export type PollVoteHandler<T = PollVoteUpdate> = ParsedUpdateHandler<
'poll_vote',
T
>
export type UserStatusUpdateHandler<T = UserStatusUpdate> = ParsedUpdateHandler<
'user_status',
T
>
export type UserTypingHandler<T = UserTypingUpdate> = ParsedUpdateHandler<
'user_typing',
T
>
export type HistoryReadHandler<T = HistoryReadUpdate> = ParsedUpdateHandler<
'history_read',
T
>
2021-08-04 13:23:39 +03:00
export type BotStoppedHandler<T = BotStoppedUpdate> = ParsedUpdateHandler<
'bot_stopped',
T
>
2022-05-09 17:25:38 +03:00
export type BotChatJoinRequestHandler<T = BotChatJoinRequestUpdate> =
ParsedUpdateHandler<'bot_chat_join_request', T>
export type ChatJoinRequestHandler<T = ChatJoinRequestUpdate> =
ParsedUpdateHandler<'chat_join_request', T>
2021-04-08 12:19:38 +03:00
export type UpdateHandler =
| RawUpdateHandler
| NewMessageHandler
| EditMessageHandler
| DeleteMessageHandler
| ChatMemberUpdateHandler
| InlineQueryHandler
| ChosenInlineResultHandler
2021-05-05 01:50:04 +03:00
| CallbackQueryHandler
| PollUpdateHandler
| PollVoteHandler
| UserStatusUpdateHandler
| UserTypingHandler
| HistoryReadHandler
2021-08-04 13:23:39 +03:00
| BotStoppedHandler
2022-05-09 17:25:38 +03:00
| BotChatJoinRequestHandler
| ChatJoinRequestHandler
// end-codegen