diff --git a/types/node-telegram-bot-api/index.d.ts b/types/node-telegram-bot-api/index.d.ts index 9d9616b813..2238e37ee4 100644 --- a/types/node-telegram-bot-api/index.d.ts +++ b/types/node-telegram-bot-api/index.d.ts @@ -36,6 +36,8 @@ declare namespace TelegramBot { type DocumentMimeType = 'application/pdf' | 'application/zip'; + type MessageType = 'text' | 'animation' | 'audio' | 'channel_chat_created' | 'contact' | 'delete_chat_photo' | 'document' | 'game' | 'group_chat_created' | 'invoice' | 'left_chat_member' | 'location' | 'migrate_from_chat_id' | 'migrate_to_chat_id' | 'new_chat_members' | 'new_chat_photo' | 'new_chat_title' | 'passport_data' | 'photo' | 'pinned_message' | 'sticker' | 'successful_payment' | 'supergroup_chat_created' | 'video' | 'video_note' | 'voice'; + type MessageEntityType = 'mention' | 'hashtag' | 'bot_command' | 'url' | 'email' | 'bold' | 'italic' | 'code' | 'pre' | 'text_link' | 'text_mention'; type ParseMode = 'Markdown' | 'HTML'; @@ -887,6 +889,10 @@ declare namespace TelegramBot { user: User; score: number; } + + interface Metadata { + type?: MessageType; + } } declare class TelegramBot extends EventEmitter { @@ -1031,6 +1037,128 @@ declare class TelegramBot extends EventEmitter { answerShippingQuery(shippingQueryId: string, ok: boolean, options?: TelegramBot.AnswerShippingQueryOptions): Promise; answerPreCheckoutQuery(preCheckoutQueryId: string, ok: boolean, options?: TelegramBot.AnswerPreCheckoutQueryOptions): Promise; + + addListener(event: TelegramBot.MessageType | 'message', listener: (message: TelegramBot.Message, metadata: TelegramBot.Metadata) => void): this; + + addListener(event: 'callback_query', listener: (query: TelegramBot.CallbackQuery) => void): this; + + addListener(event: 'inline_query', listener: (query: TelegramBot.InlineQuery) => void): this; + + addListener(event: 'chosen_inline_result', listener: (result: TelegramBot.ChosenInlineResult) => void): this; + + addListener(event: 'channel_post' | 'edited_message' | 'edited_message_text' | 'edited_message_caption' | 'edited_channel_post' | 'edited_channel_post_text' | 'edited_channel_post_caption', listener: (message: TelegramBot.Message) => void): this; + + addListener(event: 'shipping_query', listener: (query: TelegramBot.ShippingQuery) => void): this; + + addListener(event: 'pre_checkout_query', listener: (query: TelegramBot.PreCheckoutQuery) => void): this; + + addListener(event: 'polling_error' | 'webhook_error' | 'error', listener: (error: Error) => void): this; + + on(event: TelegramBot.MessageType | 'message', listener: (message: TelegramBot.Message, metadata: TelegramBot.Metadata) => void): this; + + on(event: 'callback_query', listener: (query: TelegramBot.CallbackQuery) => void): this; + + on(event: 'inline_query', listener: (query: TelegramBot.InlineQuery) => void): this; + + on(event: 'chosen_inline_result', listener: (result: TelegramBot.ChosenInlineResult) => void): this; + + on(event: 'channel_post' | 'edited_message' | 'edited_message_text' | 'edited_message_caption' | 'edited_channel_post' | 'edited_channel_post_text' | 'edited_channel_post_caption', listener: (message: TelegramBot.Message) => void): this; + + on(event: 'shipping_query', listener: (query: TelegramBot.ShippingQuery) => void): this; + + on(event: 'pre_checkout_query', listener: (query: TelegramBot.PreCheckoutQuery) => void): this; + + on(event: 'polling_error' | 'webhook_error' | 'error', listener: (error: Error) => void): this; + + once(event: TelegramBot.MessageType | 'message', listener: (message: TelegramBot.Message, metadata: TelegramBot.Metadata) => void): this; + + once(event: 'callback_query', listener: (query: TelegramBot.CallbackQuery) => void): this; + + once(event: 'inline_query', listener: (query: TelegramBot.InlineQuery) => void): this; + + once(event: 'chosen_inline_result', listener: (result: TelegramBot.ChosenInlineResult) => void): this; + + once(event: 'channel_post' | 'edited_message' | 'edited_message_text' | 'edited_message_caption' | 'edited_channel_post' | 'edited_channel_post_text' | 'edited_channel_post_caption', listener: (message: TelegramBot.Message) => void): this; + + once(event: 'shipping_query', listener: (query: TelegramBot.ShippingQuery) => void): this; + + once(event: 'pre_checkout_query', listener: (query: TelegramBot.PreCheckoutQuery) => void): this; + + once(event: 'polling_error' | 'webhook_error' | 'error', listener: (error: Error) => void): this; + + prependListener(event: TelegramBot.MessageType | 'message', listener: (message: TelegramBot.Message, metadata: TelegramBot.Metadata) => void): this; + + prependListener(event: 'callback_query', listener: (query: TelegramBot.CallbackQuery) => void): this; + + prependListener(event: 'inline_query', listener: (query: TelegramBot.InlineQuery) => void): this; + + prependListener(event: 'chosen_inline_result', listener: (result: TelegramBot.ChosenInlineResult) => void): this; + + prependListener(event: 'channel_post' | 'edited_message' | 'edited_message_text' | 'edited_message_caption' | 'edited_channel_post' | 'edited_channel_post_text' | 'edited_channel_post_caption', listener: (message: TelegramBot.Message) => void): this; + + prependListener(event: 'shipping_query', listener: (query: TelegramBot.ShippingQuery) => void): this; + + prependListener(event: 'pre_checkout_query', listener: (query: TelegramBot.PreCheckoutQuery) => void): this; + + prependListener(event: 'polling_error' | 'webhook_error' | 'error', listener: (error: Error) => void): this; + + prependOnceListener(event: TelegramBot.MessageType | 'message', listener: (message: TelegramBot.Message, metadata: TelegramBot.Metadata) => void): this; + + prependOnceListener(event: 'callback_query', listener: (query: TelegramBot.CallbackQuery) => void): this; + + prependOnceListener(event: 'inline_query', listener: (query: TelegramBot.InlineQuery) => void): this; + + prependOnceListener(event: 'chosen_inline_result', listener: (result: TelegramBot.ChosenInlineResult) => void): this; + + prependOnceListener(event: 'channel_post' | 'edited_message' | 'edited_message_text' | 'edited_message_caption' | 'edited_channel_post' | 'edited_channel_post_text' | 'edited_channel_post_caption', listener: (message: TelegramBot.Message) => void): this; + + prependOnceListener(event: 'shipping_query', listener: (query: TelegramBot.ShippingQuery) => void): this; + + prependOnceListener(event: 'pre_checkout_query', listener: (query: TelegramBot.PreCheckoutQuery) => void): this; + + prependOnceListener(event: 'polling_error' | 'webhook_error' | 'error', listener: (error: Error) => void): this; + + removeListener(event: TelegramBot.MessageType | 'message', listener: (message: TelegramBot.Message, metadata: TelegramBot.Metadata) => void): this; + + removeListener(event: 'callback_query', listener: (query: TelegramBot.CallbackQuery) => void): this; + + removeListener(event: 'inline_query', listener: (query: TelegramBot.InlineQuery) => void): this; + + removeListener(event: 'chosen_inline_result', listener: (result: TelegramBot.ChosenInlineResult) => void): this; + + removeListener(event: 'channel_post' | 'edited_message' | 'edited_message_text' | 'edited_message_caption' | 'edited_channel_post' | 'edited_channel_post_text' | 'edited_channel_post_caption', listener: (message: TelegramBot.Message) => void): this; + + removeListener(event: 'shipping_query', listener: (query: TelegramBot.ShippingQuery) => void): this; + + removeListener(event: 'pre_checkout_query', listener: (query: TelegramBot.PreCheckoutQuery) => void): this; + + removeListener(event: 'polling_error' | 'webhook_error' | 'error', listener: (error: Error) => void): this; + + off(event: TelegramBot.MessageType | 'message', listener: (message: TelegramBot.Message, metadata: TelegramBot.Metadata) => void): this; + + off(event: 'callback_query', listener: (query: TelegramBot.CallbackQuery) => void): this; + + off(event: 'inline_query', listener: (query: TelegramBot.InlineQuery) => void): this; + + off(event: 'chosen_inline_result', listener: (result: TelegramBot.ChosenInlineResult) => void): this; + + off(event: 'channel_post' | 'edited_message' | 'edited_message_text' | 'edited_message_caption' | 'edited_channel_post' | 'edited_channel_post_text' | 'edited_channel_post_caption', listener: (message: TelegramBot.Message) => void): this; + + off(event: 'shipping_query', listener: (query: TelegramBot.ShippingQuery) => void): this; + + off(event: 'pre_checkout_query', listener: (query: TelegramBot.PreCheckoutQuery) => void): this; + + off(event: 'polling_error' | 'webhook_error' | 'error', listener: (error: Error) => void): this; + + removeAllListeners(event: TelegramBot.MessageType | 'message' | 'callback_query' | 'inline_query' | 'chosen_inline_result' | 'channel_post' | 'edited_message' | 'edited_message_text' | 'edited_message_caption' | 'edited_channel_post' | 'edited_channel_post_text' | 'edited_channel_post_caption' | 'shipping_query' | 'pre_checkout_query' | 'polling_error' | 'webhook_error' | 'error'): this; + + listeners(event: TelegramBot.MessageType | 'message' | 'callback_query' | 'inline_query' | 'chosen_inline_result' | 'channel_post' | 'edited_message' | 'edited_message_text' | 'edited_message_caption' | 'edited_channel_post' | 'edited_channel_post_text' | 'edited_channel_post_caption' | 'shipping_query' | 'pre_checkout_query' | 'polling_error' | 'webhook_error' | 'error'): Function[]; + + rawListeners(event: TelegramBot.MessageType | 'message' | 'callback_query' | 'inline_query' | 'chosen_inline_result' | 'channel_post' | 'edited_message' | 'edited_message_text' | 'edited_message_caption' | 'edited_channel_post' | 'edited_channel_post_text' | 'edited_channel_post_caption' | 'shipping_query' | 'pre_checkout_query' | 'polling_error' | 'webhook_error' | 'error'): Function[]; + + eventNames(): (TelegramBot.MessageType | 'message' | 'callback_query' | 'inline_query' | 'chosen_inline_result' | 'channel_post' | 'edited_message' | 'edited_message_text' | 'edited_message_caption' | 'edited_channel_post' | 'edited_channel_post_text' | 'edited_channel_post_caption' | 'shipping_query' | 'pre_checkout_query' | 'polling_error' | 'webhook_error' | 'error')[]; + + listenerCount(event: TelegramBot.MessageType | 'message' | 'callback_query' | 'inline_query' | 'chosen_inline_result' | 'channel_post' | 'edited_message' | 'edited_message_text' | 'edited_message_caption' | 'edited_channel_post' | 'edited_channel_post_text' | 'edited_channel_post_caption' | 'shipping_query' | 'pre_checkout_query' | 'polling_error' | 'webhook_error' | 'error'): number; } export = TelegramBot; diff --git a/types/node-telegram-bot-api/node-telegram-bot-api-tests.ts b/types/node-telegram-bot-api/node-telegram-bot-api-tests.ts index 49368e74ec..b2d7cea2e6 100644 --- a/types/node-telegram-bot-api/node-telegram-bot-api-tests.ts +++ b/types/node-telegram-bot-api/node-telegram-bot-api-tests.ts @@ -92,3 +92,63 @@ MyTelegramBot.answerShippingQuery('shippingQueryId', true, { shipping_options: [ }] }] }); MyTelegramBot.answerPreCheckoutQuery('preCheckoutQueryId', true, { error_message: 'Bar' }); +MyTelegramBot.addListener('message', (message: TelegramBot.Message, { type }) => { }); +MyTelegramBot.addListener('callback_query', (query: TelegramBot.CallbackQuery) => { }); +MyTelegramBot.addListener('inline_query', (query: TelegramBot.InlineQuery) => { }); +MyTelegramBot.addListener('chosen_inline_result', (result: TelegramBot.ChosenInlineResult) => { }); +MyTelegramBot.addListener('channel_post', (message: TelegramBot.Message) => { }); +MyTelegramBot.addListener('shipping_query', (query: TelegramBot.ShippingQuery) => { }); +MyTelegramBot.addListener('pre_checkout_query', (query: TelegramBot.PreCheckoutQuery) => { }); +MyTelegramBot.addListener('polling_error', (error: Error) => { }); +MyTelegramBot.on('message', (message: TelegramBot.Message, { type }) => { }); +MyTelegramBot.on('callback_query', (query: TelegramBot.CallbackQuery) => { }); +MyTelegramBot.on('inline_query', (query: TelegramBot.InlineQuery) => { }); +MyTelegramBot.on('chosen_inline_result', (result: TelegramBot.ChosenInlineResult) => { }); +MyTelegramBot.on('channel_post', (message: TelegramBot.Message) => { }); +MyTelegramBot.on('shipping_query', (query: TelegramBot.ShippingQuery) => { }); +MyTelegramBot.on('pre_checkout_query', (query: TelegramBot.PreCheckoutQuery) => { }); +MyTelegramBot.on('polling_error', (error: Error) => { }); +MyTelegramBot.once('message', (message: TelegramBot.Message, { type }) => { }); +MyTelegramBot.once('callback_query', (query: TelegramBot.CallbackQuery) => { }); +MyTelegramBot.once('inline_query', (query: TelegramBot.InlineQuery) => { }); +MyTelegramBot.once('chosen_inline_result', (result: TelegramBot.ChosenInlineResult) => { }); +MyTelegramBot.once('channel_post', (message: TelegramBot.Message) => { }); +MyTelegramBot.once('shipping_query', (query: TelegramBot.ShippingQuery) => { }); +MyTelegramBot.once('pre_checkout_query', (query: TelegramBot.PreCheckoutQuery) => { }); +MyTelegramBot.once('polling_error', (error: Error) => { }); +MyTelegramBot.prependListener('message', (message: TelegramBot.Message, { type }) => { }); +MyTelegramBot.prependListener('callback_query', (query: TelegramBot.CallbackQuery) => { }); +MyTelegramBot.prependListener('inline_query', (query: TelegramBot.InlineQuery) => { }); +MyTelegramBot.prependListener('chosen_inline_result', (result: TelegramBot.ChosenInlineResult) => { }); +MyTelegramBot.prependListener('channel_post', (message: TelegramBot.Message) => { }); +MyTelegramBot.prependListener('shipping_query', (query: TelegramBot.ShippingQuery) => { }); +MyTelegramBot.prependListener('pre_checkout_query', (query: TelegramBot.PreCheckoutQuery) => { }); +MyTelegramBot.prependListener('polling_error', (error: Error) => { }); +MyTelegramBot.prependOnceListener('message', (message: TelegramBot.Message, { type }) => { }); +MyTelegramBot.prependOnceListener('callback_query', (query: TelegramBot.CallbackQuery) => { }); +MyTelegramBot.prependOnceListener('inline_query', (query: TelegramBot.InlineQuery) => { }); +MyTelegramBot.prependOnceListener('chosen_inline_result', (result: TelegramBot.ChosenInlineResult) => { }); +MyTelegramBot.prependOnceListener('channel_post', (message: TelegramBot.Message) => { }); +MyTelegramBot.prependOnceListener('shipping_query', (query: TelegramBot.ShippingQuery) => { }); +MyTelegramBot.prependOnceListener('pre_checkout_query', (query: TelegramBot.PreCheckoutQuery) => { }); +MyTelegramBot.prependOnceListener('polling_error', (error: Error) => { }); +MyTelegramBot.removeListener('message', (message: TelegramBot.Message, { type }) => { }); +MyTelegramBot.removeListener('callback_query', (query: TelegramBot.CallbackQuery) => { }); +MyTelegramBot.removeListener('inline_query', (query: TelegramBot.InlineQuery) => { }); +MyTelegramBot.removeListener('chosen_inline_result', (result: TelegramBot.ChosenInlineResult) => { }); +MyTelegramBot.removeListener('channel_post', (message: TelegramBot.Message) => { }); +MyTelegramBot.removeListener('shipping_query', (query: TelegramBot.ShippingQuery) => { }); +MyTelegramBot.removeListener('pre_checkout_query', (query: TelegramBot.PreCheckoutQuery) => { }); +MyTelegramBot.removeListener('polling_error', (error: Error) => { }); +MyTelegramBot.off('message', (message: TelegramBot.Message, { type }) => { }); +MyTelegramBot.off('callback_query', (query: TelegramBot.CallbackQuery) => { }); +MyTelegramBot.off('inline_query', (query: TelegramBot.InlineQuery) => { }); +MyTelegramBot.off('chosen_inline_result', (result: TelegramBot.ChosenInlineResult) => { }); +MyTelegramBot.off('channel_post', (message: TelegramBot.Message) => { }); +MyTelegramBot.off('shipping_query', (query: TelegramBot.ShippingQuery) => { }); +MyTelegramBot.off('pre_checkout_query', (query: TelegramBot.PreCheckoutQuery) => { }); +MyTelegramBot.off('polling_error', (error: Error) => { }); +MyTelegramBot.removeAllListeners('message'); +MyTelegramBot.listeners('message'); +MyTelegramBot.rawListeners('message'); +MyTelegramBot.listenerCount('message');