teleproto 1.214.0
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/CryptoFile.d.ts +2 -0
- package/CryptoFile.js +37 -0
- package/Helpers.d.ts +150 -0
- package/Helpers.js +477 -0
- package/LICENSE +23 -0
- package/Password.d.ts +14 -0
- package/Password.js +270 -0
- package/README.md +98 -0
- package/Utils.d.ts +227 -0
- package/Utils.js +1247 -0
- package/Version.d.ts +1 -0
- package/Version.js +4 -0
- package/client/2fa.d.ts +48 -0
- package/client/2fa.js +108 -0
- package/client/TelegramClient.d.ts +1043 -0
- package/client/TelegramClient.js +1181 -0
- package/client/account.d.ts +0 -0
- package/client/account.js +1 -0
- package/client/auth.d.ts +92 -0
- package/client/auth.js +388 -0
- package/client/bots.d.ts +6 -0
- package/client/bots.js +23 -0
- package/client/buttons.d.ts +4 -0
- package/client/buttons.js +86 -0
- package/client/chats.d.ts +45 -0
- package/client/chats.js +350 -0
- package/client/dialogs.d.ts +52 -0
- package/client/dialogs.js +174 -0
- package/client/downloads.d.ts +156 -0
- package/client/downloads.js +614 -0
- package/client/fs.d.ts +1 -0
- package/client/fs.js +17 -0
- package/client/index.d.ts +15 -0
- package/client/index.js +64 -0
- package/client/messageParse.d.ts +17 -0
- package/client/messageParse.js +191 -0
- package/client/messages.d.ts +263 -0
- package/client/messages.js +813 -0
- package/client/os.d.ts +2 -0
- package/client/os.js +37 -0
- package/client/path.d.ts +2 -0
- package/client/path.js +7 -0
- package/client/telegramBaseClient.d.ts +237 -0
- package/client/telegramBaseClient.js +368 -0
- package/client/updates.d.ts +33 -0
- package/client/updates.js +260 -0
- package/client/uploads.d.ts +136 -0
- package/client/uploads.js +514 -0
- package/client/users.d.ts +29 -0
- package/client/users.js +490 -0
- package/crypto/AuthKey.d.ts +19 -0
- package/crypto/AuthKey.js +76 -0
- package/crypto/CTR.d.ts +5 -0
- package/crypto/CTR.js +16 -0
- package/crypto/Factorizator.d.ts +19 -0
- package/crypto/Factorizator.js +74 -0
- package/crypto/IGE.d.ts +11 -0
- package/crypto/IGE.js +115 -0
- package/crypto/RSA.d.ts +14 -0
- package/crypto/RSA.js +70 -0
- package/crypto/converters.d.ts +19 -0
- package/crypto/converters.js +52 -0
- package/crypto/crypto.d.ts +19 -0
- package/crypto/crypto.js +58 -0
- package/crypto/words.d.ts +6 -0
- package/crypto/words.js +47 -0
- package/define.d.ts +77 -0
- package/entityCache.d.ts +7 -0
- package/entityCache.js +79 -0
- package/errors/Common.d.ts +71 -0
- package/errors/Common.js +122 -0
- package/errors/RPCBaseErrors.d.ts +84 -0
- package/errors/RPCBaseErrors.js +134 -0
- package/errors/RPCErrorList.d.ts +37 -0
- package/errors/RPCErrorList.js +117 -0
- package/errors/index.d.ts +11 -0
- package/errors/index.js +32 -0
- package/events/Album.d.ts +36 -0
- package/events/Album.js +104 -0
- package/events/CallbackQuery.d.ts +73 -0
- package/events/CallbackQuery.js +193 -0
- package/events/DeletedMessage.d.ts +45 -0
- package/events/DeletedMessage.js +63 -0
- package/events/EditedMessage.d.ts +30 -0
- package/events/EditedMessage.js +41 -0
- package/events/NewMessage.d.ts +89 -0
- package/events/NewMessage.js +182 -0
- package/events/Raw.d.ts +29 -0
- package/events/Raw.js +43 -0
- package/events/common.d.ts +66 -0
- package/events/common.js +141 -0
- package/events/index.d.ts +2 -0
- package/events/index.js +8 -0
- package/extensions/AsyncQueue.d.ts +10 -0
- package/extensions/AsyncQueue.js +32 -0
- package/extensions/BinaryReader.d.ts +99 -0
- package/extensions/BinaryReader.js +242 -0
- package/extensions/BinaryWriter.d.ts +6 -0
- package/extensions/BinaryWriter.js +15 -0
- package/extensions/Deferred.d.ts +8 -0
- package/extensions/Deferred.js +16 -0
- package/extensions/Logger.d.ts +54 -0
- package/extensions/Logger.js +128 -0
- package/extensions/MessagePacker.d.ts +21 -0
- package/extensions/MessagePacker.js +154 -0
- package/extensions/PendingState.d.ts +12 -0
- package/extensions/PendingState.js +29 -0
- package/extensions/PromisedNetSockets.d.ts +24 -0
- package/extensions/PromisedNetSockets.js +192 -0
- package/extensions/PromisedWebSockets.d.ts +18 -0
- package/extensions/PromisedWebSockets.js +124 -0
- package/extensions/html.d.ts +5 -0
- package/extensions/html.js +228 -0
- package/extensions/index.d.ts +7 -0
- package/extensions/index.js +17 -0
- package/extensions/markdown.d.ts +5 -0
- package/extensions/markdown.js +76 -0
- package/extensions/markdownv2.d.ts +5 -0
- package/extensions/markdownv2.js +51 -0
- package/extensions/net.d.ts +1 -0
- package/extensions/net.js +17 -0
- package/extensions/socks.d.ts +1 -0
- package/extensions/socks.js +17 -0
- package/index.d.ts +14 -0
- package/index.js +62 -0
- package/inspect.d.ts +1 -0
- package/inspect.js +5 -0
- package/network/Authenticator.d.ts +12 -0
- package/network/Authenticator.js +192 -0
- package/network/MTProtoPlainSender.d.ts +19 -0
- package/network/MTProtoPlainSender.js +74 -0
- package/network/MTProtoSender.d.ts +290 -0
- package/network/MTProtoSender.js +873 -0
- package/network/MTProtoState.d.ts +102 -0
- package/network/MTProtoState.js +267 -0
- package/network/RequestState.d.ts +18 -0
- package/network/RequestState.js +35 -0
- package/network/connection/Connection.d.ts +69 -0
- package/network/connection/Connection.js +162 -0
- package/network/connection/TCPAbridged.d.ts +19 -0
- package/network/connection/TCPAbridged.js +58 -0
- package/network/connection/TCPFull.d.ts +16 -0
- package/network/connection/TCPFull.js +61 -0
- package/network/connection/TCPMTProxy.d.ts +49 -0
- package/network/connection/TCPMTProxy.js +121 -0
- package/network/connection/TCPObfuscated.d.ts +18 -0
- package/network/connection/TCPObfuscated.js +78 -0
- package/network/connection/index.d.ts +4 -0
- package/network/connection/index.js +11 -0
- package/network/index.d.ts +11 -0
- package/network/index.js +23 -0
- package/package.json +50 -0
- package/requestIter.d.ts +24 -0
- package/requestIter.js +109 -0
- package/sessions/Abstract.d.ts +103 -0
- package/sessions/Abstract.js +6 -0
- package/sessions/Memory.d.ts +38 -0
- package/sessions/Memory.js +272 -0
- package/sessions/StoreSession.d.ts +14 -0
- package/sessions/StoreSession.js +77 -0
- package/sessions/StringSession.d.ts +32 -0
- package/sessions/StringSession.js +116 -0
- package/sessions/index.d.ts +4 -0
- package/sessions/index.js +11 -0
- package/sessions/localStorage.d.ts +1 -0
- package/sessions/localStorage.js +4 -0
- package/tl/AllTLObjects.d.ts +3 -0
- package/tl/AllTLObjects.js +17 -0
- package/tl/MTProtoRequest.d.ts +18 -0
- package/tl/MTProtoRequest.js +38 -0
- package/tl/api.d.ts +32488 -0
- package/tl/api.js +507 -0
- package/tl/apiTl.d.ts +2 -0
- package/tl/apiTl.js +2209 -0
- package/tl/core/GZIPPacked.d.ts +15 -0
- package/tl/core/GZIPPacked.js +51 -0
- package/tl/core/MessageContainer.d.ts +12 -0
- package/tl/core/MessageContainer.js +42 -0
- package/tl/core/RPCResult.d.ts +14 -0
- package/tl/core/RPCResult.js +32 -0
- package/tl/core/TLMessage.d.ts +10 -0
- package/tl/core/TLMessage.js +14 -0
- package/tl/core/index.d.ts +6 -0
- package/tl/core/index.js +16 -0
- package/tl/custom/button.d.ts +24 -0
- package/tl/custom/button.js +78 -0
- package/tl/custom/chatGetter.d.ts +29 -0
- package/tl/custom/chatGetter.js +116 -0
- package/tl/custom/dialog.d.ts +30 -0
- package/tl/custom/dialog.js +40 -0
- package/tl/custom/draft.d.ts +21 -0
- package/tl/custom/draft.js +48 -0
- package/tl/custom/file.d.ts +21 -0
- package/tl/custom/file.js +68 -0
- package/tl/custom/forward.d.ts +15 -0
- package/tl/custom/forward.js +47 -0
- package/tl/custom/index.d.ts +1 -0
- package/tl/custom/index.js +5 -0
- package/tl/custom/inlineResult.d.ts +32 -0
- package/tl/custom/inlineResult.js +87 -0
- package/tl/custom/inlineResults.d.ts +20 -0
- package/tl/custom/inlineResults.js +26 -0
- package/tl/custom/message.d.ts +427 -0
- package/tl/custom/message.js +716 -0
- package/tl/custom/messageButton.d.ts +54 -0
- package/tl/custom/messageButton.js +152 -0
- package/tl/custom/senderGetter.d.ts +28 -0
- package/tl/custom/senderGetter.js +55 -0
- package/tl/generateModule.d.ts +1 -0
- package/tl/generateModule.js +17 -0
- package/tl/generationHelpers.d.ts +11 -0
- package/tl/generationHelpers.js +289 -0
- package/tl/index.d.ts +3 -0
- package/tl/index.js +10 -0
- package/tl/patched/index.d.ts +2 -0
- package/tl/patched/index.js +76 -0
- package/tl/schemaTl.d.ts +2 -0
- package/tl/schemaTl.js +64 -0
- package/tl/types-generator/generate.d.ts +1 -0
- package/tl/types-generator/generate.js +84 -0
- package/tl/types-generator/template.d.ts +6 -0
- package/tl/types-generator/template.js +257 -0
package/events/Album.js
ADDED
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AlbumEvent = exports.Album = void 0;
|
|
4
|
+
const common_1 = require("./common");
|
|
5
|
+
const tl_1 = require("../tl");
|
|
6
|
+
const Logger_1 = require("../extensions/Logger");
|
|
7
|
+
const _ALBUM_DELAY = 500; // 0.5 sec
|
|
8
|
+
/**
|
|
9
|
+
* Occurs whenever an album (multiple grouped messages with media) arrive.
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* // Albums are basically a list of messages. so event is a list
|
|
13
|
+
* async function listenForAlbums(event: AlbumEvent) {
|
|
14
|
+
* const messages = event.messages;
|
|
15
|
+
* for (const message of messages){
|
|
16
|
+
* console.log("Caption is",message.text);
|
|
17
|
+
* console.log("Message id is",message.id);
|
|
18
|
+
* console.log("Chat id is",message.chatId);
|
|
19
|
+
* }
|
|
20
|
+
* }
|
|
21
|
+
* // adds an event handler for new messages
|
|
22
|
+
* client.addEventHandler(listenForAlbums, new Album({}));
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
class Album extends common_1.EventBuilder {
|
|
26
|
+
constructor(albumParams) {
|
|
27
|
+
let { chats, func, blacklistChats = false } = albumParams;
|
|
28
|
+
super({ chats, blacklistChats, func });
|
|
29
|
+
}
|
|
30
|
+
build(update, dispatch) {
|
|
31
|
+
if (!("message" in update && update.message instanceof tl_1.Api.Message)) {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
const groupedId = update.message.groupedId;
|
|
35
|
+
if (!groupedId) {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
const albums = this.client._ALBUMS;
|
|
39
|
+
const oldTimeout = albums.get(groupedId.toString());
|
|
40
|
+
let oldValues = [];
|
|
41
|
+
if (oldTimeout) {
|
|
42
|
+
clearTimeout(oldTimeout[0]);
|
|
43
|
+
oldValues.push(...oldTimeout[1]);
|
|
44
|
+
}
|
|
45
|
+
albums.set(groupedId.toString(), [
|
|
46
|
+
setTimeout(() => {
|
|
47
|
+
const values = albums.get(groupedId.toString());
|
|
48
|
+
albums.delete(groupedId.toString());
|
|
49
|
+
if (!values) {
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
const updates = values[1];
|
|
53
|
+
if (!updates) {
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
const messages = [];
|
|
57
|
+
for (const update of updates) {
|
|
58
|
+
// there is probably an easier way
|
|
59
|
+
if ("message" in update &&
|
|
60
|
+
update.message instanceof tl_1.Api.Message) {
|
|
61
|
+
messages.push(update.message);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
const event = new AlbumEvent(messages, values[1]);
|
|
65
|
+
event._setClient(this.client);
|
|
66
|
+
event._entities = messages[0]._entities;
|
|
67
|
+
dispatch(event);
|
|
68
|
+
}, _ALBUM_DELAY),
|
|
69
|
+
[...oldValues, update],
|
|
70
|
+
]);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
exports.Album = Album;
|
|
74
|
+
class AlbumEvent extends common_1.EventCommon {
|
|
75
|
+
constructor(messages, originalUpdates) {
|
|
76
|
+
super({
|
|
77
|
+
msgId: messages[0].id,
|
|
78
|
+
chatPeer: messages[0].peerId,
|
|
79
|
+
broadcast: messages[0].post,
|
|
80
|
+
});
|
|
81
|
+
this.originalUpdates = originalUpdates;
|
|
82
|
+
this.messages = messages;
|
|
83
|
+
}
|
|
84
|
+
_setClient(client) {
|
|
85
|
+
super._setClient(client);
|
|
86
|
+
for (let i = 0; i < this.messages.length; i++) {
|
|
87
|
+
try {
|
|
88
|
+
// todo make sure this never fails
|
|
89
|
+
this.messages[i]._finishInit(client, this.originalUpdates[i]._entities || new Map(), undefined);
|
|
90
|
+
}
|
|
91
|
+
catch (e) {
|
|
92
|
+
client._log.error("Got error while trying to finish init message with id " +
|
|
93
|
+
this.messages[i].id);
|
|
94
|
+
if (client._errorHandler) {
|
|
95
|
+
client._errorHandler(e);
|
|
96
|
+
}
|
|
97
|
+
if (client._log.canSend(Logger_1.LogLevel.ERROR)) {
|
|
98
|
+
console.error(e);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
exports.AlbumEvent = AlbumEvent;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { EntityLike } from "../define";
|
|
2
|
+
import { EventBuilder, EventCommonSender } from "./common";
|
|
3
|
+
import { Api } from "../tl";
|
|
4
|
+
import { TelegramClient } from "..";
|
|
5
|
+
import { EditMessageParams, SendMessageParams } from "../client/messages";
|
|
6
|
+
export interface NewCallbackQueryInterface {
|
|
7
|
+
chats: EntityLike[];
|
|
8
|
+
func?: {
|
|
9
|
+
(event: CallbackQuery): boolean;
|
|
10
|
+
};
|
|
11
|
+
fromUsers: EntityLike[];
|
|
12
|
+
blacklistUsers: EntityLike[];
|
|
13
|
+
pattern?: RegExp;
|
|
14
|
+
}
|
|
15
|
+
export declare const NewCallbackQueryDefaults: NewCallbackQueryInterface;
|
|
16
|
+
/**
|
|
17
|
+
* Occurs whenever you sign in as a bot and a user
|
|
18
|
+
* clicks one of the inline buttons on your messages.
|
|
19
|
+
* Note that the `chats` parameter will **not** work with normal
|
|
20
|
+
* IDs or peers if the clicked inline button comes from a "via bot"
|
|
21
|
+
* message. The `chats` parameter also supports checking against the
|
|
22
|
+
* `chat_instance` which should be used for inline callbacks.
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```ts
|
|
26
|
+
* async function printQuery(event: NewCallbackQueryEvent) {
|
|
27
|
+
* // TODO
|
|
28
|
+
* }
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
export declare class CallbackQuery extends EventBuilder {
|
|
32
|
+
match?: RegExp;
|
|
33
|
+
private _noCheck;
|
|
34
|
+
constructor(inlineQueryParams?: Partial<NewCallbackQueryInterface>);
|
|
35
|
+
build(update: Api.TypeUpdate | Api.TypeUpdates, callback: undefined, selfId?: undefined): CallbackQueryEvent | undefined;
|
|
36
|
+
filter(event: CallbackQueryEvent): any;
|
|
37
|
+
}
|
|
38
|
+
export interface AnswerCallbackQueryParams {
|
|
39
|
+
message: string;
|
|
40
|
+
cacheTime: number;
|
|
41
|
+
url: string;
|
|
42
|
+
alert: boolean;
|
|
43
|
+
}
|
|
44
|
+
export declare class CallbackQueryEvent extends EventCommonSender {
|
|
45
|
+
/**
|
|
46
|
+
* The original {@link Api.UpdateBotCallbackQuery} or {@link Api.UpdateInlineBotCallbackQuery} object.
|
|
47
|
+
*/
|
|
48
|
+
query: Api.UpdateBotCallbackQuery | Api.UpdateInlineBotCallbackQuery;
|
|
49
|
+
/**
|
|
50
|
+
* The regex match object returned from successfully matching the
|
|
51
|
+
* query `data` with the provided pattern in your event handler.
|
|
52
|
+
*/
|
|
53
|
+
patternMatch: RegExpMatchArray | undefined;
|
|
54
|
+
private _message;
|
|
55
|
+
private _answered;
|
|
56
|
+
constructor(query: Api.UpdateBotCallbackQuery | Api.UpdateInlineBotCallbackQuery, peer: Api.TypePeer, msgId: number);
|
|
57
|
+
_setClient(client: TelegramClient): void;
|
|
58
|
+
get id(): import("big-integer").BigInteger;
|
|
59
|
+
get messageId(): number;
|
|
60
|
+
get data(): Api.bytes | undefined;
|
|
61
|
+
get chatInstance(): import("big-integer").BigInteger;
|
|
62
|
+
getMessage(): Promise<Api.Message>;
|
|
63
|
+
_refetchSender(): Promise<void>;
|
|
64
|
+
answer({ message, cacheTime, url, alert, }?: Partial<AnswerCallbackQueryParams>): Promise<boolean | undefined>;
|
|
65
|
+
get viaInline(): boolean;
|
|
66
|
+
respond(params?: SendMessageParams): Promise<void>;
|
|
67
|
+
reply(params?: SendMessageParams): Promise<void>;
|
|
68
|
+
edit(params: EditMessageParams): Promise<Api.Message>;
|
|
69
|
+
delete({ revoke }?: {
|
|
70
|
+
revoke: boolean;
|
|
71
|
+
}): Promise<Api.messages.AffectedMessages[] | undefined>;
|
|
72
|
+
get sender(): import("../define").Entity | undefined;
|
|
73
|
+
}
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CallbackQueryEvent = exports.CallbackQuery = exports.NewCallbackQueryDefaults = void 0;
|
|
4
|
+
const common_1 = require("./common");
|
|
5
|
+
const tl_1 = require("../tl");
|
|
6
|
+
const Helpers_1 = require("../Helpers");
|
|
7
|
+
const Utils_1 = require("../Utils");
|
|
8
|
+
exports.NewCallbackQueryDefaults = {
|
|
9
|
+
chats: [],
|
|
10
|
+
fromUsers: [],
|
|
11
|
+
blacklistUsers: [],
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Occurs whenever you sign in as a bot and a user
|
|
15
|
+
* clicks one of the inline buttons on your messages.
|
|
16
|
+
* Note that the `chats` parameter will **not** work with normal
|
|
17
|
+
* IDs or peers if the clicked inline button comes from a "via bot"
|
|
18
|
+
* message. The `chats` parameter also supports checking against the
|
|
19
|
+
* `chat_instance` which should be used for inline callbacks.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```ts
|
|
23
|
+
* async function printQuery(event: NewCallbackQueryEvent) {
|
|
24
|
+
* // TODO
|
|
25
|
+
* }
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
class CallbackQuery extends common_1.EventBuilder {
|
|
29
|
+
constructor(inlineQueryParams = {}) {
|
|
30
|
+
const { chats, func, pattern } = inlineQueryParams;
|
|
31
|
+
super({ chats, func, blacklistChats: false });
|
|
32
|
+
this.match = pattern;
|
|
33
|
+
this._noCheck = [this.chats, this.func, this.match].every((i) => i === null || i === undefined);
|
|
34
|
+
}
|
|
35
|
+
build(update, callback, selfId = undefined) {
|
|
36
|
+
if (update instanceof tl_1.Api.UpdateBotCallbackQuery) {
|
|
37
|
+
return new CallbackQueryEvent(update, update.peer, update.msgId);
|
|
38
|
+
}
|
|
39
|
+
else if (update instanceof tl_1.Api.UpdateInlineBotCallbackQuery) {
|
|
40
|
+
const b = (0, Helpers_1.toSignedLittleBuffer)(update.msgId.id, 8);
|
|
41
|
+
const msgId = b.readInt32LE(0);
|
|
42
|
+
const peerId = b.readInt32LE(4);
|
|
43
|
+
const peer = peerId < 0
|
|
44
|
+
? new tl_1.Api.PeerChannel({ channelId: (0, Helpers_1.returnBigInt)(-peerId) })
|
|
45
|
+
: new tl_1.Api.PeerUser({ userId: (0, Helpers_1.returnBigInt)(peerId) });
|
|
46
|
+
return new CallbackQueryEvent(update, peer, msgId);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
filter(event) {
|
|
50
|
+
if (this._noCheck)
|
|
51
|
+
return event;
|
|
52
|
+
if (this.chats) {
|
|
53
|
+
let inside = this.chats.includes(event.query.chatInstance.toString());
|
|
54
|
+
if (event.chatId) {
|
|
55
|
+
inside = inside || this.chats.includes(event.chatId.toString());
|
|
56
|
+
}
|
|
57
|
+
if (inside === this.blacklistChats) {
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
if (this.match) {
|
|
62
|
+
const data = new TextDecoder().decode(event.query.data);
|
|
63
|
+
const result = this.match.exec(data);
|
|
64
|
+
this.match.lastIndex = 0;
|
|
65
|
+
if (result) {
|
|
66
|
+
event.patternMatch = result;
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
if (this.func) {
|
|
73
|
+
return this.func(event);
|
|
74
|
+
}
|
|
75
|
+
return true;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
exports.CallbackQuery = CallbackQuery;
|
|
79
|
+
class CallbackQueryEvent extends common_1.EventCommonSender {
|
|
80
|
+
constructor(query, peer, msgId) {
|
|
81
|
+
super({
|
|
82
|
+
msgId,
|
|
83
|
+
chatPeer: peer,
|
|
84
|
+
broadcast: false,
|
|
85
|
+
});
|
|
86
|
+
this.query = query;
|
|
87
|
+
this.patternMatch = undefined;
|
|
88
|
+
this._senderId = (0, Helpers_1.returnBigInt)(query.userId);
|
|
89
|
+
this._message = undefined;
|
|
90
|
+
this._answered = false;
|
|
91
|
+
}
|
|
92
|
+
_setClient(client) {
|
|
93
|
+
super._setClient(client);
|
|
94
|
+
const [sender, inputSender] = (0, Utils_1._getEntityPair)(this._senderId.toString(), this._entities, client._entityCache);
|
|
95
|
+
this._sender = sender;
|
|
96
|
+
this._inputSender = inputSender;
|
|
97
|
+
}
|
|
98
|
+
get id() {
|
|
99
|
+
return this.query.queryId;
|
|
100
|
+
}
|
|
101
|
+
get messageId() {
|
|
102
|
+
return this._messageId;
|
|
103
|
+
}
|
|
104
|
+
get data() {
|
|
105
|
+
return this.query.data;
|
|
106
|
+
}
|
|
107
|
+
get chatInstance() {
|
|
108
|
+
return this.query.chatInstance;
|
|
109
|
+
}
|
|
110
|
+
async getMessage() {
|
|
111
|
+
if (this._message) {
|
|
112
|
+
return this._message;
|
|
113
|
+
}
|
|
114
|
+
const chat = this.isChannel ? await this.getInputChat() : undefined;
|
|
115
|
+
const messages = await this._client.getMessages(chat, {
|
|
116
|
+
ids: this._messageId,
|
|
117
|
+
});
|
|
118
|
+
this._message = messages[0];
|
|
119
|
+
return this._message;
|
|
120
|
+
}
|
|
121
|
+
async _refetchSender() {
|
|
122
|
+
if (this._entities.has(this.senderId.toString())) {
|
|
123
|
+
this._sender = this._entities.get(this.senderId.toString());
|
|
124
|
+
}
|
|
125
|
+
if (!this._sender)
|
|
126
|
+
return;
|
|
127
|
+
this._inputSender = (0, Utils_1.getInputPeer)(this._chat);
|
|
128
|
+
if (!this._inputSender.hasOwnProperty("accessHash")) {
|
|
129
|
+
try {
|
|
130
|
+
this._inputSender = this._client._entityCache.get(this._senderId);
|
|
131
|
+
}
|
|
132
|
+
catch (e) {
|
|
133
|
+
const m = await this.getMessage();
|
|
134
|
+
if (m) {
|
|
135
|
+
this._sender = m._sender;
|
|
136
|
+
this._inputSender = m._inputSender;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
async answer({ message, cacheTime, url, alert, } = {}) {
|
|
142
|
+
if (this._answered)
|
|
143
|
+
return;
|
|
144
|
+
return await this._client.invoke(new tl_1.Api.messages.SetBotCallbackAnswer({
|
|
145
|
+
queryId: this.query.queryId,
|
|
146
|
+
cacheTime,
|
|
147
|
+
alert,
|
|
148
|
+
message,
|
|
149
|
+
url,
|
|
150
|
+
})).then((res) => {
|
|
151
|
+
this._answered = true;
|
|
152
|
+
return res;
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
get viaInline() {
|
|
156
|
+
return this.query instanceof tl_1.Api.UpdateInlineBotCallbackQuery;
|
|
157
|
+
}
|
|
158
|
+
async respond(params = {}) {
|
|
159
|
+
await this.answer();
|
|
160
|
+
const inputChat = await this.getInputChat();
|
|
161
|
+
await this._client.sendMessage(inputChat, params);
|
|
162
|
+
}
|
|
163
|
+
async reply(params = {}) {
|
|
164
|
+
await this.answer();
|
|
165
|
+
params.replyTo = this.messageId;
|
|
166
|
+
const inputChat = await this.getInputChat();
|
|
167
|
+
await this._client.sendMessage(inputChat, params);
|
|
168
|
+
}
|
|
169
|
+
async edit(params) {
|
|
170
|
+
if (this.query.msgId instanceof tl_1.Api.InputBotInlineMessageID) {
|
|
171
|
+
return await this._client.editMessage(this.messageId, params).then(async (res) => {
|
|
172
|
+
await this.answer();
|
|
173
|
+
return res;
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
const inputChat = await this.getInputChat();
|
|
178
|
+
return await this._client.editMessage(inputChat, params).then(async (res) => {
|
|
179
|
+
await this.answer();
|
|
180
|
+
return res;
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
async delete({ revoke } = { revoke: false }) {
|
|
185
|
+
if (this._client) {
|
|
186
|
+
return this._client.deleteMessages(await this.getInputChat(), [this.messageId], { revoke });
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
get sender() {
|
|
190
|
+
return this._sender;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
exports.CallbackQueryEvent = CallbackQueryEvent;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { EntityLike } from "../define";
|
|
2
|
+
import { Api } from "../tl";
|
|
3
|
+
import { EventBuilder, EventCommon, DefaultEventInterface } from "./common";
|
|
4
|
+
/**
|
|
5
|
+
* Occurs whenever a message is deleted. Note that this event isn't 100%
|
|
6
|
+
* reliable, since Telegram doesn't always notify the clients that a message
|
|
7
|
+
* was deleted.
|
|
8
|
+
*
|
|
9
|
+
* @remarks
|
|
10
|
+
* Telegram **does not** send information about *where* a message
|
|
11
|
+
* was deleted if it occurs in private conversations with other users
|
|
12
|
+
* or in small group chats, because message IDs are *unique* and you
|
|
13
|
+
* can identify the chat with the message ID alone if you saved it
|
|
14
|
+
* previously.
|
|
15
|
+
*
|
|
16
|
+
* teleproto **does not** save information of where messages occur,
|
|
17
|
+
* so it cannot know in which chat a message was deleted (this will
|
|
18
|
+
* only work in channels, where the channel ID *is* present).
|
|
19
|
+
*
|
|
20
|
+
* This means that the `chats:` parameter will not work reliably,
|
|
21
|
+
* unless you intend on working with channels and super-groups only.
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```ts
|
|
25
|
+
* async function deletedMessageEventPrint(event: DeletedMessageEvent) {
|
|
26
|
+
*
|
|
27
|
+
* for (let index = 0; index < update.deletedIds.length; index++) {
|
|
28
|
+
* const deletedMsgId = update.deletedIds[index];
|
|
29
|
+
* console.log(`Message ${deletedMsgId} was deleted.`)
|
|
30
|
+
* }
|
|
31
|
+
*
|
|
32
|
+
* }
|
|
33
|
+
* // adds an event handler for deleted messages
|
|
34
|
+
* client.addEventHandler(deletedMessageEventPrint, new DeletedMessage({}));
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
export declare class DeletedMessage extends EventBuilder {
|
|
38
|
+
constructor(eventParams: DefaultEventInterface);
|
|
39
|
+
build(update: Api.TypeUpdate | Api.TypeUpdates, callback: undefined, selfId: bigInt.BigInteger): DeletedMessageEvent | undefined;
|
|
40
|
+
}
|
|
41
|
+
export declare class DeletedMessageEvent extends EventCommon {
|
|
42
|
+
deletedIds: number[];
|
|
43
|
+
peer?: EntityLike;
|
|
44
|
+
constructor(deletedIds: number[], peer?: EntityLike);
|
|
45
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DeletedMessageEvent = exports.DeletedMessage = void 0;
|
|
4
|
+
const tl_1 = require("../tl");
|
|
5
|
+
const common_1 = require("./common");
|
|
6
|
+
/**
|
|
7
|
+
* Occurs whenever a message is deleted. Note that this event isn't 100%
|
|
8
|
+
* reliable, since Telegram doesn't always notify the clients that a message
|
|
9
|
+
* was deleted.
|
|
10
|
+
*
|
|
11
|
+
* @remarks
|
|
12
|
+
* Telegram **does not** send information about *where* a message
|
|
13
|
+
* was deleted if it occurs in private conversations with other users
|
|
14
|
+
* or in small group chats, because message IDs are *unique* and you
|
|
15
|
+
* can identify the chat with the message ID alone if you saved it
|
|
16
|
+
* previously.
|
|
17
|
+
*
|
|
18
|
+
* teleproto **does not** save information of where messages occur,
|
|
19
|
+
* so it cannot know in which chat a message was deleted (this will
|
|
20
|
+
* only work in channels, where the channel ID *is* present).
|
|
21
|
+
*
|
|
22
|
+
* This means that the `chats:` parameter will not work reliably,
|
|
23
|
+
* unless you intend on working with channels and super-groups only.
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```ts
|
|
27
|
+
* async function deletedMessageEventPrint(event: DeletedMessageEvent) {
|
|
28
|
+
*
|
|
29
|
+
* for (let index = 0; index < update.deletedIds.length; index++) {
|
|
30
|
+
* const deletedMsgId = update.deletedIds[index];
|
|
31
|
+
* console.log(`Message ${deletedMsgId} was deleted.`)
|
|
32
|
+
* }
|
|
33
|
+
*
|
|
34
|
+
* }
|
|
35
|
+
* // adds an event handler for deleted messages
|
|
36
|
+
* client.addEventHandler(deletedMessageEventPrint, new DeletedMessage({}));
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
class DeletedMessage extends common_1.EventBuilder {
|
|
40
|
+
constructor(eventParams) {
|
|
41
|
+
super(eventParams);
|
|
42
|
+
}
|
|
43
|
+
build(update, callback, selfId) {
|
|
44
|
+
if (update instanceof tl_1.Api.UpdateDeleteChannelMessages) {
|
|
45
|
+
return new DeletedMessageEvent(update.messages, new tl_1.Api.PeerChannel({ channelId: update.channelId }));
|
|
46
|
+
}
|
|
47
|
+
else if (update instanceof tl_1.Api.UpdateDeleteMessages) {
|
|
48
|
+
return new DeletedMessageEvent(update.messages);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
exports.DeletedMessage = DeletedMessage;
|
|
53
|
+
class DeletedMessageEvent extends common_1.EventCommon {
|
|
54
|
+
constructor(deletedIds, peer) {
|
|
55
|
+
super({
|
|
56
|
+
chatPeer: peer,
|
|
57
|
+
msgId: Array.isArray(deletedIds) ? deletedIds[0] : 0,
|
|
58
|
+
});
|
|
59
|
+
this.deletedIds = deletedIds;
|
|
60
|
+
this.peer = peer;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
exports.DeletedMessageEvent = DeletedMessageEvent;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Api } from "../tl";
|
|
2
|
+
import { NewMessage, NewMessageEvent, NewMessageInterface } from "./NewMessage";
|
|
3
|
+
export interface EditedMessageInterface extends NewMessageInterface {
|
|
4
|
+
func?: {
|
|
5
|
+
(event: EditedMessageEvent): boolean;
|
|
6
|
+
};
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Occurs whenever a text message or a message with media was edited.
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* async function editedEventPrint(event: EditedMessageEvent) {
|
|
13
|
+
* const message = event.message as Api.Message;
|
|
14
|
+
*
|
|
15
|
+
* console.log(`Message ${message.id} from channel ${message.chatId!.toString();} was edited at ${message.editDate}`)
|
|
16
|
+
* }
|
|
17
|
+
* // adds an event handler for edited messages
|
|
18
|
+
* client.addEventHandler(editedEventPrint, new EditedMessage({}));
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export declare class EditedMessage extends NewMessage {
|
|
22
|
+
func?: {
|
|
23
|
+
(event: EditedMessageEvent): boolean;
|
|
24
|
+
};
|
|
25
|
+
constructor(editedMessageParams: EditedMessageInterface);
|
|
26
|
+
build(update: Api.TypeUpdate | Api.TypeUpdates, callback: undefined, selfId: bigInt.BigInteger): EditedMessageEvent | undefined;
|
|
27
|
+
}
|
|
28
|
+
export declare class EditedMessageEvent extends NewMessageEvent {
|
|
29
|
+
constructor(message: Api.Message, originalUpdate: Api.TypeUpdate | Api.TypeUpdates);
|
|
30
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EditedMessageEvent = exports.EditedMessage = void 0;
|
|
4
|
+
const tl_1 = require("../tl");
|
|
5
|
+
const NewMessage_1 = require("./NewMessage");
|
|
6
|
+
/**
|
|
7
|
+
* Occurs whenever a text message or a message with media was edited.
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* async function editedEventPrint(event: EditedMessageEvent) {
|
|
11
|
+
* const message = event.message as Api.Message;
|
|
12
|
+
*
|
|
13
|
+
* console.log(`Message ${message.id} from channel ${message.chatId!.toString();} was edited at ${message.editDate}`)
|
|
14
|
+
* }
|
|
15
|
+
* // adds an event handler for edited messages
|
|
16
|
+
* client.addEventHandler(editedEventPrint, new EditedMessage({}));
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
class EditedMessage extends NewMessage_1.NewMessage {
|
|
20
|
+
constructor(editedMessageParams) {
|
|
21
|
+
super(editedMessageParams);
|
|
22
|
+
}
|
|
23
|
+
build(update, callback, selfId) {
|
|
24
|
+
if (update instanceof tl_1.Api.UpdateEditChannelMessage ||
|
|
25
|
+
update instanceof tl_1.Api.UpdateEditMessage) {
|
|
26
|
+
if (!(update.message instanceof tl_1.Api.Message)) {
|
|
27
|
+
return undefined;
|
|
28
|
+
}
|
|
29
|
+
const event = new EditedMessageEvent(update.message, update);
|
|
30
|
+
this.addAttributes(event);
|
|
31
|
+
return event;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
exports.EditedMessage = EditedMessage;
|
|
36
|
+
class EditedMessageEvent extends NewMessage_1.NewMessageEvent {
|
|
37
|
+
constructor(message, originalUpdate) {
|
|
38
|
+
super(message, originalUpdate);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
exports.EditedMessageEvent = EditedMessageEvent;
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { DefaultEventInterface, EventBuilder, EventCommon } from "./common";
|
|
2
|
+
import type { Entity, EntityLike } from "../define";
|
|
3
|
+
import type { TelegramClient } from "..";
|
|
4
|
+
import { Api } from "../tl";
|
|
5
|
+
import bigInt from "big-integer";
|
|
6
|
+
export interface NewMessageInterface extends DefaultEventInterface {
|
|
7
|
+
func?: {
|
|
8
|
+
(event: NewMessageEvent): boolean;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* If set to `true`, only **incoming** messages will be handled.
|
|
12
|
+
Mutually exclusive with ``outgoing`` (can only set one of either).
|
|
13
|
+
*/
|
|
14
|
+
incoming?: boolean;
|
|
15
|
+
/**
|
|
16
|
+
* If set to `true`, only **outgoing** messages will be handled.
|
|
17
|
+
* Mutually exclusive with ``incoming`` (can only set one of either).
|
|
18
|
+
*/
|
|
19
|
+
outgoing?: boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Unlike `chats`, this parameter filters the *senders* of the
|
|
22
|
+
* message. That is, only messages *sent by these users* will be
|
|
23
|
+
* handled. Use `chats` if you want private messages with this/these
|
|
24
|
+
* users. `from_users` lets you filter by messages sent by *one or
|
|
25
|
+
* more* users across the desired chats (doesn't need a list).
|
|
26
|
+
*/
|
|
27
|
+
fromUsers?: EntityLike[];
|
|
28
|
+
/**
|
|
29
|
+
* Whether forwarded messages should be handled or not. By default,
|
|
30
|
+
* both forwarded and normal messages are included. If it's `True`
|
|
31
|
+
* **only** forwards will be handled. If it's `False` only messages
|
|
32
|
+
* that are *not* forwards will be handled.
|
|
33
|
+
*/
|
|
34
|
+
forwards?: boolean;
|
|
35
|
+
/**
|
|
36
|
+
* If set, only messages matching this pattern will be handled.
|
|
37
|
+
*/
|
|
38
|
+
pattern?: RegExp;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Occurs whenever a new text message or a message with media arrives.
|
|
42
|
+
* @example
|
|
43
|
+
* ```ts
|
|
44
|
+
* async function eventPrint(event: NewMessageEvent) {
|
|
45
|
+
* const message = event.message;
|
|
46
|
+
*
|
|
47
|
+
* // Checks if it's a private message (from user or bot)
|
|
48
|
+
* if (event.isPrivate){
|
|
49
|
+
* // prints sender id
|
|
50
|
+
* console.log(message.senderId);
|
|
51
|
+
* // read message
|
|
52
|
+
* if (message.text == "hello"){
|
|
53
|
+
* const sender = await message.getSender();
|
|
54
|
+
* console.log("sender is",sender);
|
|
55
|
+
* await client.sendMessage(sender,{
|
|
56
|
+
* message:`hi your id is ${message.senderId}`
|
|
57
|
+
* });
|
|
58
|
+
* }
|
|
59
|
+
* }
|
|
60
|
+
* }
|
|
61
|
+
* // adds an event handler for new messages
|
|
62
|
+
* client.addEventHandler(eventPrint, new NewMessage({}));
|
|
63
|
+
* ```
|
|
64
|
+
*/
|
|
65
|
+
export declare class NewMessage extends EventBuilder {
|
|
66
|
+
func?: {
|
|
67
|
+
(event: NewMessageEvent): boolean;
|
|
68
|
+
};
|
|
69
|
+
incoming?: boolean;
|
|
70
|
+
outgoing?: boolean;
|
|
71
|
+
fromUsers?: EntityLike[];
|
|
72
|
+
forwards?: boolean;
|
|
73
|
+
pattern?: RegExp;
|
|
74
|
+
/** @hidden */
|
|
75
|
+
private readonly _noCheck;
|
|
76
|
+
constructor(newMessageParams?: NewMessageInterface);
|
|
77
|
+
_resolve(client: TelegramClient): Promise<void>;
|
|
78
|
+
build(update: Api.TypeUpdate | Api.TypeUpdates, callback: undefined, selfId: bigInt.BigInteger): NewMessageEvent | undefined;
|
|
79
|
+
filter(event: NewMessageEvent): EventCommon | import("./common").EventCommonSender | undefined;
|
|
80
|
+
addAttributes(update: any): void;
|
|
81
|
+
}
|
|
82
|
+
export declare class NewMessageEvent extends EventCommon {
|
|
83
|
+
message: Api.Message;
|
|
84
|
+
originalUpdate: (Api.TypeUpdate | Api.TypeUpdates) & {
|
|
85
|
+
_entities?: Map<number, Entity>;
|
|
86
|
+
};
|
|
87
|
+
constructor(message: Api.Message, originalUpdate: Api.TypeUpdate | Api.TypeUpdates);
|
|
88
|
+
_setClient(client: TelegramClient): void;
|
|
89
|
+
}
|