@effect-ak/tg-bot-client 0.1.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/bot/factory/_service.js +59 -0
- package/dist/cjs/bot/factory/client-config.js +68 -0
- package/dist/cjs/bot/factory/make-bot.js +59 -0
- package/dist/cjs/bot/message-handler/_service.js +51 -0
- package/dist/cjs/bot/message-handler/types.js +5 -0
- package/dist/cjs/bot/message-handler/utils.js +19 -0
- package/dist/cjs/bot/run.js +10 -0
- package/dist/cjs/bot/update-poller/_service.js +78 -0
- package/dist/cjs/bot/update-poller/errors.js +5 -0
- package/dist/cjs/bot/update-poller/fetch-updates.js +109 -0
- package/dist/cjs/bot/update-poller/poll-and-handle.js +89 -0
- package/dist/cjs/bot/update-poller/settings.js +23 -0
- package/dist/cjs/client/_client.js +56 -14
- package/dist/cjs/client/config.js +56 -0
- package/dist/cjs/client/errors.js +47 -9
- package/dist/cjs/client/execute-request/_service.js +59 -0
- package/dist/cjs/client/execute-request/execute.js +98 -0
- package/dist/cjs/client/{request.js → execute-request/payload.js} +2 -2
- package/dist/cjs/client/file/_service.js +61 -0
- package/dist/cjs/client/file/get-file.js +77 -0
- package/dist/cjs/client/guards.js +12 -0
- package/dist/cjs/const.js +20 -0
- package/dist/cjs/index.js +24 -22
- package/dist/dts/bot/factory/_service.d.ts +37 -0
- package/dist/dts/bot/factory/client-config.d.ts +3 -0
- package/dist/dts/bot/factory/make-bot.d.ts +7 -0
- package/dist/dts/bot/message-handler/_service.d.ts +6 -0
- package/dist/dts/bot/message-handler/types.d.ts +16 -0
- package/dist/dts/bot/message-handler/utils.d.ts +6 -0
- package/dist/dts/bot/run.d.ts +7 -0
- package/dist/dts/bot/update-poller/_service.d.ts +21 -0
- package/dist/dts/bot/update-poller/errors.d.ts +1 -0
- package/dist/dts/bot/update-poller/fetch-updates.d.ts +17 -0
- package/dist/dts/bot/update-poller/poll-and-handle.d.ts +16 -0
- package/dist/dts/bot/update-poller/settings.d.ts +6 -0
- package/dist/dts/client/_client.d.ts +6 -17
- package/dist/dts/client/config.d.ts +8 -0
- package/dist/dts/client/errors.d.ts +6 -4
- package/dist/dts/client/execute-request/_service.d.ts +15 -0
- package/dist/dts/client/execute-request/execute.d.ts +5 -0
- package/dist/dts/client/file/_service.d.ts +16 -0
- package/dist/dts/client/file/get-file.d.ts +5 -0
- package/dist/dts/client/guards.d.ts +17 -0
- package/dist/dts/index.d.ts +4 -1
- package/dist/dts/specification/api.d.ts +14 -14
- package/dist/dts/specification/types.d.ts +77 -77
- package/dist/esm/bot/factory/_service.js +49 -0
- package/dist/esm/bot/factory/client-config.js +57 -0
- package/dist/esm/bot/factory/make-bot.js +46 -0
- package/dist/esm/bot/message-handler/_service.js +41 -0
- package/dist/esm/bot/message-handler/types.js +2 -0
- package/dist/esm/bot/message-handler/utils.js +16 -0
- package/dist/esm/bot/run.js +10 -0
- package/dist/esm/bot/update-poller/_service.js +68 -0
- package/dist/esm/bot/update-poller/errors.js +2 -0
- package/dist/esm/bot/update-poller/fetch-updates.js +86 -0
- package/dist/esm/bot/update-poller/poll-and-handle.js +74 -0
- package/dist/esm/bot/update-poller/settings.js +19 -0
- package/dist/esm/client/_client.js +50 -12
- package/dist/esm/client/config.js +46 -0
- package/dist/esm/client/errors.js +42 -8
- package/dist/esm/client/execute-request/_service.js +49 -0
- package/dist/esm/client/execute-request/execute.js +74 -0
- package/dist/esm/client/{request.js → execute-request/payload.js} +7 -5
- package/dist/esm/client/file/_service.js +51 -0
- package/dist/esm/client/file/get-file.js +61 -0
- package/dist/esm/client/guards.js +13 -0
- package/dist/esm/const.js +17 -0
- package/dist/esm/index.js +21 -4
- package/dist/esm/specification/api.js +2 -1
- package/dist/esm/specification/types.js +2 -1
- package/package.json +13 -9
- package/readme.md +75 -25
- package/dist/cjs/client/const.js +0 -20
- package/dist/cjs/client/download-file.js +0 -44
- package/dist/cjs/client/execute-request.js +0 -69
- package/dist/cjs/client/response.js +0 -22
- package/dist/dts/client/download-file.d.ts +0 -13
- package/dist/dts/client/execute-request.d.ts +0 -13
- package/dist/dts/client/response.d.ts +0 -7
- package/dist/esm/client/const.js +0 -13
- package/dist/esm/client/download-file.js +0 -36
- package/dist/esm/client/execute-request.js +0 -62
- package/dist/esm/client/response.js +0 -15
- /package/dist/dts/client/{request.d.ts → execute-request/payload.d.ts} +0 -0
- /package/dist/dts/{client/const.d.ts → const.d.ts} +0 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import * as Micro from "effect/Micro";
|
|
2
|
+
import type { ClientExecuteRequestServiceInterface } from "../../client/execute-request/_service.js";
|
|
3
|
+
import type { BotMessageHandlerSettings } from "../../bot/message-handler/types.js";
|
|
4
|
+
export type State = {
|
|
5
|
+
lastUpdateId: number | undefined;
|
|
6
|
+
emptyResponses: number;
|
|
7
|
+
};
|
|
8
|
+
export type PollAndHandleInput = {
|
|
9
|
+
settings: BotMessageHandlerSettings;
|
|
10
|
+
execute: ClientExecuteRequestServiceInterface["execute"];
|
|
11
|
+
};
|
|
12
|
+
export declare const pollAndHandle: (input: PollAndHandleInput) => Micro.Micro<{
|
|
13
|
+
updates: import("../../index.js").Update[];
|
|
14
|
+
lastSuccessId: number | undefined;
|
|
15
|
+
hasError: boolean;
|
|
16
|
+
}, import("../../client/errors.js").TgBotClientError, never>;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { BotMessageHandlerSettings } from "../../bot/message-handler/types.js";
|
|
2
|
+
export type SafeSettings = ReturnType<typeof makeSettingsFrom>;
|
|
3
|
+
export declare const makeSettingsFrom: (input: BotMessageHandlerSettings) => {
|
|
4
|
+
readonly limit: number;
|
|
5
|
+
readonly timeout: number;
|
|
6
|
+
};
|
|
@@ -1,19 +1,8 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
baseUrl: string;
|
|
5
|
-
};
|
|
1
|
+
import { ClientFileServiceInterface } from "./file/_service.js";
|
|
2
|
+
import { Api } from "../specification/api.js";
|
|
3
|
+
import type { TgBotClientSettingsInput } from "./guards.js";
|
|
6
4
|
export type TgBotClient = ReturnType<typeof makeTgBotClient>;
|
|
7
|
-
export declare const makeTgBotClient: (
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
}) => Promise<{
|
|
11
|
-
success?: File;
|
|
12
|
-
error?: import("./errors.js").TgBotClientError;
|
|
13
|
-
}>;
|
|
14
|
-
readonly execute: <M extends keyof import("../specification/api.js").Api>(method: M, input: Parameters<import("../specification/api.js").Api[M]>[0]) => Promise<{
|
|
15
|
-
success?: ReturnType<import("../specification/api.js").Api[M]>;
|
|
16
|
-
error?: import("./errors.js").TgBotClientError;
|
|
17
|
-
}>;
|
|
18
|
-
readonly unsafeExecute: <M extends keyof import("../specification/api.js").Api>(method: M, input: Parameters<import("../specification/api.js").Api[M]>[0]) => Promise<ReturnType<import("../specification/api.js").Api[M]>>;
|
|
5
|
+
export declare const makeTgBotClient: (input: TgBotClientSettingsInput) => {
|
|
6
|
+
execute: <M extends keyof Api>(method: M, input: Parameters<Api[M]>[0]) => Promise<ReturnType<Api[M]>>;
|
|
7
|
+
getFile: (input: Parameters<ClientFileServiceInterface["getFile"]>[0]) => Promise<File>;
|
|
19
8
|
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import * as Context from "effect/Context";
|
|
2
|
+
import { TgBotClientSettingsInput } from "./guards.js";
|
|
3
|
+
export type TgBotClientConfigObject = Required<TgBotClientSettingsInput>;
|
|
4
|
+
export declare const makeTgBotClientConfig: (input: TgBotClientSettingsInput) => Required<TgBotClientSettingsInput>;
|
|
5
|
+
declare const TgBotClientConfig_base: Context.TagClass<TgBotClientConfig, "TgBotClientConfig", Required<TgBotClientSettingsInput>>;
|
|
6
|
+
export declare class TgBotClientConfig extends TgBotClientConfig_base {
|
|
7
|
+
}
|
|
8
|
+
export {};
|
|
@@ -12,10 +12,12 @@ type ErrorReason = {
|
|
|
12
12
|
readonly type: "UnableToGetFile";
|
|
13
13
|
readonly cause: unknown;
|
|
14
14
|
};
|
|
15
|
-
|
|
16
|
-
readonly
|
|
17
|
-
|
|
18
|
-
|
|
15
|
+
declare const TgBotClientError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").Equals<A, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }) => import("effect/Cause").YieldableError & {
|
|
16
|
+
readonly _tag: "TgBotClientError";
|
|
17
|
+
} & Readonly<A>;
|
|
18
|
+
export declare class TgBotClientError extends TgBotClientError_base<{
|
|
19
|
+
reason: ErrorReason;
|
|
20
|
+
}> {
|
|
19
21
|
static readonly missingSuccess: TgBotClientError;
|
|
20
22
|
}
|
|
21
23
|
export {};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import * as Micro from "effect/Micro";
|
|
2
|
+
import * as Context from "effect/Context";
|
|
3
|
+
import type { Api } from "../../specification/api.js";
|
|
4
|
+
import { TgBotClientError } from "../errors.js";
|
|
5
|
+
import { TgBotClientConfig } from "../config.js";
|
|
6
|
+
export type ClientExecuteRequestServiceInterface = Micro.Micro.Success<typeof ClientExecuteRequestServiceDefault>;
|
|
7
|
+
declare const ClientExecuteRequestService_base: Context.TagClass<ClientExecuteRequestService, "ClientExecuteRequestService", {
|
|
8
|
+
execute: <M extends keyof Api>(method: M, input: Parameters<Api[M]>[0]) => Micro.Micro<ReturnType<Api[M]>, TgBotClientError>;
|
|
9
|
+
}>;
|
|
10
|
+
export declare class ClientExecuteRequestService extends ClientExecuteRequestService_base {
|
|
11
|
+
}
|
|
12
|
+
export declare const ClientExecuteRequestServiceDefault: Micro.Micro<{
|
|
13
|
+
readonly execute: <M extends keyof Api>(method: M, input: Parameters<Api[M]>[0]) => Micro.Micro<ReturnType<Api[M]>, TgBotClientError, never>;
|
|
14
|
+
}, never, TgBotClientConfig>;
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import * as Micro from "effect/Micro";
|
|
2
|
+
import type { Api } from "../../specification/api.js";
|
|
3
|
+
import { TgBotClientError } from "../errors.js";
|
|
4
|
+
import { TgBotClientConfigObject } from "../config.js";
|
|
5
|
+
export declare const execute: <M extends keyof Api>(config: TgBotClientConfigObject, method: M, input: Parameters<Api[M]>[0]) => Micro.Micro<ReturnType<Api[M]>, TgBotClientError>;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import * as Micro from "effect/Micro";
|
|
2
|
+
import * as Context from "effect/Context";
|
|
3
|
+
import { TgBotClientConfig } from "../config.js";
|
|
4
|
+
import { getFile } from "./get-file.js";
|
|
5
|
+
export type ClientFileServiceInterface = Context.Tag.Service<typeof ClientFileService>;
|
|
6
|
+
declare const ClientFileService_base: Context.TagClass<ClientFileService, "ClientFileService", {
|
|
7
|
+
getFile: (input: {
|
|
8
|
+
file_id: string;
|
|
9
|
+
}) => ReturnType<typeof getFile>;
|
|
10
|
+
}>;
|
|
11
|
+
export declare class ClientFileService extends ClientFileService_base {
|
|
12
|
+
}
|
|
13
|
+
export declare const ClientFileServiceDefault: Micro.Micro<{
|
|
14
|
+
readonly getFile: (input: Parameters<ClientFileServiceInterface["getFile"]>[0]) => Micro.Micro<File, import("../errors.js").TgBotClientError, never>;
|
|
15
|
+
}, never, TgBotClientConfig>;
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import * as Micro from "effect/Micro";
|
|
2
|
+
import { TgBotClientError } from "../errors.js";
|
|
3
|
+
import { TgBotClientConfigObject } from "../config.js";
|
|
4
|
+
import { ClientExecuteRequestServiceInterface } from "../execute-request/_service.js";
|
|
5
|
+
export declare const getFile: (fileId: string, config: TgBotClientConfigObject, execute: ClientExecuteRequestServiceInterface) => Micro.Micro<File, TgBotClientError>;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export type FileContent = {
|
|
2
|
+
file_content: Uint8Array;
|
|
3
|
+
file_name: string;
|
|
4
|
+
};
|
|
5
|
+
export declare const isFileContent: (input: unknown) => input is FileContent;
|
|
6
|
+
export type TgBotApiResponseSchema = {
|
|
7
|
+
ok: boolean;
|
|
8
|
+
error_code?: number;
|
|
9
|
+
description?: string;
|
|
10
|
+
result?: unknown;
|
|
11
|
+
};
|
|
12
|
+
export declare const isTgBotApiResponse: (input: unknown) => input is TgBotApiResponseSchema;
|
|
13
|
+
export type TgBotClientSettingsInput = {
|
|
14
|
+
["bot-token"]: string;
|
|
15
|
+
["base-url"]?: string;
|
|
16
|
+
};
|
|
17
|
+
export declare const isTgBotClientSettingsInput: (input: unknown) => input is TgBotClientSettingsInput;
|
package/dist/dts/index.d.ts
CHANGED
|
@@ -196,7 +196,7 @@ export interface CopyMessageInput {
|
|
|
196
196
|
message_id: number;
|
|
197
197
|
message_thread_id?: number;
|
|
198
198
|
caption?: string;
|
|
199
|
-
parse_mode?:
|
|
199
|
+
parse_mode?: "HTML" | "MarkdownV2";
|
|
200
200
|
caption_entities?: T.MessageEntity[];
|
|
201
201
|
show_caption_above_media?: boolean;
|
|
202
202
|
disable_notification?: boolean;
|
|
@@ -329,7 +329,7 @@ export interface EditMessageCaptionInput {
|
|
|
329
329
|
message_id?: number;
|
|
330
330
|
inline_message_id?: string;
|
|
331
331
|
caption?: string;
|
|
332
|
-
parse_mode?:
|
|
332
|
+
parse_mode?: "HTML" | "MarkdownV2";
|
|
333
333
|
caption_entities?: T.MessageEntity[];
|
|
334
334
|
show_caption_above_media?: boolean;
|
|
335
335
|
reply_markup?: T.InlineKeyboardMarkup;
|
|
@@ -368,7 +368,7 @@ export interface EditMessageTextInput {
|
|
|
368
368
|
chat_id?: number | string;
|
|
369
369
|
message_id?: number;
|
|
370
370
|
inline_message_id?: string;
|
|
371
|
-
parse_mode?:
|
|
371
|
+
parse_mode?: "HTML" | "MarkdownV2";
|
|
372
372
|
entities?: T.MessageEntity[];
|
|
373
373
|
link_preview_options?: T.LinkPreviewOptions;
|
|
374
374
|
reply_markup?: T.InlineKeyboardMarkup;
|
|
@@ -553,7 +553,7 @@ export interface SendAnimationInput {
|
|
|
553
553
|
height?: number;
|
|
554
554
|
thumbnail?: T.InputFile | string;
|
|
555
555
|
caption?: string;
|
|
556
|
-
parse_mode?:
|
|
556
|
+
parse_mode?: "HTML" | "MarkdownV2";
|
|
557
557
|
caption_entities?: T.MessageEntity[];
|
|
558
558
|
show_caption_above_media?: boolean;
|
|
559
559
|
has_spoiler?: boolean;
|
|
@@ -570,7 +570,7 @@ export interface SendAudioInput {
|
|
|
570
570
|
business_connection_id?: string;
|
|
571
571
|
message_thread_id?: number;
|
|
572
572
|
caption?: string;
|
|
573
|
-
parse_mode?:
|
|
573
|
+
parse_mode?: "HTML" | "MarkdownV2";
|
|
574
574
|
caption_entities?: T.MessageEntity[];
|
|
575
575
|
duration?: number;
|
|
576
576
|
performer?: string;
|
|
@@ -623,7 +623,7 @@ export interface SendDocumentInput {
|
|
|
623
623
|
message_thread_id?: number;
|
|
624
624
|
thumbnail?: T.InputFile | string;
|
|
625
625
|
caption?: string;
|
|
626
|
-
parse_mode?:
|
|
626
|
+
parse_mode?: "HTML" | "MarkdownV2";
|
|
627
627
|
caption_entities?: T.MessageEntity[];
|
|
628
628
|
disable_content_type_detection?: boolean;
|
|
629
629
|
disable_notification?: boolean;
|
|
@@ -649,7 +649,7 @@ export interface SendGiftInput {
|
|
|
649
649
|
user_id: number;
|
|
650
650
|
gift_id: string;
|
|
651
651
|
text?: string;
|
|
652
|
-
text_parse_mode?:
|
|
652
|
+
text_parse_mode?: "HTML" | "MarkdownV2";
|
|
653
653
|
text_entities?: T.MessageEntity[];
|
|
654
654
|
}
|
|
655
655
|
export interface SendInvoiceInput {
|
|
@@ -716,7 +716,7 @@ export interface SendMessageInput {
|
|
|
716
716
|
text: string;
|
|
717
717
|
business_connection_id?: string;
|
|
718
718
|
message_thread_id?: number;
|
|
719
|
-
parse_mode?:
|
|
719
|
+
parse_mode?: "HTML" | "MarkdownV2";
|
|
720
720
|
entities?: T.MessageEntity[];
|
|
721
721
|
link_preview_options?: T.LinkPreviewOptions;
|
|
722
722
|
disable_notification?: boolean;
|
|
@@ -733,7 +733,7 @@ export interface SendPaidMediaInput {
|
|
|
733
733
|
business_connection_id?: string;
|
|
734
734
|
payload?: string;
|
|
735
735
|
caption?: string;
|
|
736
|
-
parse_mode?:
|
|
736
|
+
parse_mode?: "HTML" | "MarkdownV2";
|
|
737
737
|
caption_entities?: T.MessageEntity[];
|
|
738
738
|
show_caption_above_media?: boolean;
|
|
739
739
|
disable_notification?: boolean;
|
|
@@ -748,7 +748,7 @@ export interface SendPhotoInput {
|
|
|
748
748
|
business_connection_id?: string;
|
|
749
749
|
message_thread_id?: number;
|
|
750
750
|
caption?: string;
|
|
751
|
-
parse_mode?:
|
|
751
|
+
parse_mode?: "HTML" | "MarkdownV2";
|
|
752
752
|
caption_entities?: T.MessageEntity[];
|
|
753
753
|
show_caption_above_media?: boolean;
|
|
754
754
|
has_spoiler?: boolean;
|
|
@@ -765,14 +765,14 @@ export interface SendPollInput {
|
|
|
765
765
|
options: T.InputPollOption[];
|
|
766
766
|
business_connection_id?: string;
|
|
767
767
|
message_thread_id?: number;
|
|
768
|
-
question_parse_mode?:
|
|
768
|
+
question_parse_mode?: "HTML" | "MarkdownV2";
|
|
769
769
|
question_entities?: T.MessageEntity[];
|
|
770
770
|
is_anonymous?: boolean;
|
|
771
771
|
type?: string;
|
|
772
772
|
allows_multiple_answers?: boolean;
|
|
773
773
|
correct_option_id?: number;
|
|
774
774
|
explanation?: string;
|
|
775
|
-
explanation_parse_mode?:
|
|
775
|
+
explanation_parse_mode?: "HTML" | "MarkdownV2";
|
|
776
776
|
explanation_entities?: T.MessageEntity[];
|
|
777
777
|
open_period?: number;
|
|
778
778
|
close_date?: number;
|
|
@@ -826,7 +826,7 @@ export interface SendVideoInput {
|
|
|
826
826
|
height?: number;
|
|
827
827
|
thumbnail?: T.InputFile | string;
|
|
828
828
|
caption?: string;
|
|
829
|
-
parse_mode?:
|
|
829
|
+
parse_mode?: "HTML" | "MarkdownV2";
|
|
830
830
|
caption_entities?: T.MessageEntity[];
|
|
831
831
|
show_caption_above_media?: boolean;
|
|
832
832
|
has_spoiler?: boolean;
|
|
@@ -859,7 +859,7 @@ export interface SendVoiceInput {
|
|
|
859
859
|
business_connection_id?: string;
|
|
860
860
|
message_thread_id?: number;
|
|
861
861
|
caption?: string;
|
|
862
|
-
parse_mode?:
|
|
862
|
+
parse_mode?: "HTML" | "MarkdownV2";
|
|
863
863
|
caption_entities?: T.MessageEntity[];
|
|
864
864
|
duration?: number;
|
|
865
865
|
disable_notification?: boolean;
|