From 05d7ae7b12a3750b1fbc29bd719724a1f3647738 Mon Sep 17 00:00:00 2001
From: Aleksandr Bukhalo
Date: Fri, 14 Aug 2020 01:21:33 +0300
Subject: [PATCH 1/6] feat: add new @Update decorator
---
lib/decorators/index.ts | 1 +
lib/decorators/update.decorator.ts | 8 ++++++++
lib/telegraf.constants.ts | 1 +
3 files changed, 10 insertions(+)
create mode 100644 lib/decorators/update.decorator.ts
diff --git a/lib/decorators/index.ts b/lib/decorators/index.ts
index 37dcea4..76f6f1a 100644
--- a/lib/decorators/index.ts
+++ b/lib/decorators/index.ts
@@ -14,3 +14,4 @@ export * from './telegraf-cashtag.decorator';
export * from './telegraf-action.decorator';
export * from './telegraf-inline-query.decorator';
export * from './telegraf-game-query.decorator';
+export * from './update.decorator';
diff --git a/lib/decorators/update.decorator.ts b/lib/decorators/update.decorator.ts
new file mode 100644
index 0000000..985bb8e
--- /dev/null
+++ b/lib/decorators/update.decorator.ts
@@ -0,0 +1,8 @@
+import { SetMetadata } from '@nestjs/common';
+import { DECORATORS } from '../telegraf.constants';
+
+/**
+ * `@Update` decorator, it's like NestJS `@Controller` decorator,
+ * only for Telegram Bot API updates.
+ */
+export const Update = (): ClassDecorator => SetMetadata(DECORATORS.UPDATE, {});
diff --git a/lib/telegraf.constants.ts b/lib/telegraf.constants.ts
index 59f27a2..b21ebd4 100644
--- a/lib/telegraf.constants.ts
+++ b/lib/telegraf.constants.ts
@@ -18,4 +18,5 @@ export const DECORATORS = {
ACTION: `${DECORATORS_PREFIX}/ACTION`,
INLINE_QUERY: `${DECORATORS_PREFIX}/INLINE_QUERY`,
GAME_QUERY: `${DECORATORS_PREFIX}/GAME_QUERY`,
+ UPDATE: `${DECORATORS_PREFIX}/UPDATE`,
};
From 0f06e4b930a218eb6c628f2101ee53e70900f8fb Mon Sep 17 00:00:00 2001
From: Aleksandr Bukhalo
Date: Fri, 14 Aug 2020 12:42:57 +0300
Subject: [PATCH 2/6] feat: remove "Telegraf" prefix from decorator names
---
README.md | 18 ++++----
...ction.decorator.ts => action.decorator.ts} | 19 +++++---
lib/decorators/cashtag.decorator.ts | 25 +++++++++++
lib/decorators/command.decorator.ts | 25 +++++++++++
lib/decorators/entity.decorator.ts | 30 +++++++++++++
lib/decorators/game-query.decorator.ts | 19 ++++++++
lib/decorators/hashtag.decorator.ts | 25 +++++++++++
...-hears.decorator.ts => hears.decorator.ts} | 19 +++++---
lib/decorators/help.decorator.ts | 19 ++++++++
lib/decorators/index.ts | 30 ++++++-------
...decorator.ts => inline-query.decorator.ts} | 19 +++++---
lib/decorators/mention.decorator.ts | 25 +++++++++++
...legraf-on.decorator.ts => on.decorator.ts} | 19 +++++---
lib/decorators/phone.decorator.ts | 25 +++++++++++
lib/decorators/settings.decorator.ts | 19 ++++++++
lib/decorators/start.decorator.ts | 19 ++++++++
lib/decorators/telegraf-cashtag.decorator.ts | 20 ---------
lib/decorators/telegraf-command.decorator.ts | 20 ---------
lib/decorators/telegraf-entity.decorator.ts | 23 ----------
.../telegraf-game-query.decorator.ts | 11 -----
lib/decorators/telegraf-hashtag.decorator.ts | 20 ---------
lib/decorators/telegraf-help.decorator.ts | 11 -----
lib/decorators/telegraf-mention.decorator.ts | 20 ---------
lib/decorators/telegraf-phone.decorator.ts | 18 --------
lib/decorators/telegraf-settings.decorator.ts | 11 -----
lib/decorators/telegraf-start.decorator.ts | 11 -----
lib/decorators/telegraf-use.decorator.ts | 11 -----
lib/decorators/use.decorator.ts | 19 ++++++++
lib/telegraf-metadata.accessor.ts | 43 +++++++++----------
lib/telegraf.explorer.ts | 40 ++++++++---------
30 files changed, 363 insertions(+), 270 deletions(-)
rename lib/decorators/{telegraf-action.decorator.ts => action.decorator.ts} (53%)
create mode 100644 lib/decorators/cashtag.decorator.ts
create mode 100644 lib/decorators/command.decorator.ts
create mode 100644 lib/decorators/entity.decorator.ts
create mode 100644 lib/decorators/game-query.decorator.ts
create mode 100644 lib/decorators/hashtag.decorator.ts
rename lib/decorators/{telegraf-hears.decorator.ts => hears.decorator.ts} (54%)
create mode 100644 lib/decorators/help.decorator.ts
rename lib/decorators/{telegraf-inline-query.decorator.ts => inline-query.decorator.ts} (51%)
create mode 100644 lib/decorators/mention.decorator.ts
rename lib/decorators/{telegraf-on.decorator.ts => on.decorator.ts} (57%)
create mode 100644 lib/decorators/phone.decorator.ts
create mode 100644 lib/decorators/settings.decorator.ts
create mode 100644 lib/decorators/start.decorator.ts
delete mode 100644 lib/decorators/telegraf-cashtag.decorator.ts
delete mode 100644 lib/decorators/telegraf-command.decorator.ts
delete mode 100644 lib/decorators/telegraf-entity.decorator.ts
delete mode 100644 lib/decorators/telegraf-game-query.decorator.ts
delete mode 100644 lib/decorators/telegraf-hashtag.decorator.ts
delete mode 100644 lib/decorators/telegraf-help.decorator.ts
delete mode 100644 lib/decorators/telegraf-mention.decorator.ts
delete mode 100644 lib/decorators/telegraf-phone.decorator.ts
delete mode 100644 lib/decorators/telegraf-settings.decorator.ts
delete mode 100644 lib/decorators/telegraf-start.decorator.ts
delete mode 100644 lib/decorators/telegraf-use.decorator.ts
create mode 100644 lib/decorators/use.decorator.ts
diff --git a/README.md b/README.md
index 0a809e8..d06ae7e 100644
--- a/README.md
+++ b/README.md
@@ -48,31 +48,31 @@ Now let's try to repeat the example from the Telegraf [documentation page](https
import { Injectable } from '@nestjs/common';
import {
- TelegrafStart,
- TelegrafHelp,
- TelegrafOn,
- TelegrafHears,
+ Start,
+ Help,
+ On,
+ Hears,
Context,
} from 'nestjs-telegraf';
@Injectable()
export class AppService {
- @TelegrafStart()
+ @Start()
start(ctx: Context) {
ctx.reply('Welcome');
}
- @TelegrafHelp()
+ @Help()
help(ctx: Context) {
ctx.reply('Send me a sticker');
}
- @TelegrafOn('sticker')
+ @On('sticker')
on(ctx: Context) {
ctx.reply('👍');
}
- @TelegrafHears('hi')
+ @Hears('hi')
hears(ctx: Context) {
ctx.reply('Hey there');
}
@@ -213,4 +213,4 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
-This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!
\ No newline at end of file
+This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!
diff --git a/lib/decorators/telegraf-action.decorator.ts b/lib/decorators/action.decorator.ts
similarity index 53%
rename from lib/decorators/telegraf-action.decorator.ts
rename to lib/decorators/action.decorator.ts
index 8345f33..a6c7a99 100644
--- a/lib/decorators/telegraf-action.decorator.ts
+++ b/lib/decorators/action.decorator.ts
@@ -5,18 +5,23 @@ import { Context } from '../interfaces';
export type TelegrafActionTriggers = HearsTriggers;
-export interface TelegrafActionMetadata {
+export interface ActionOptions {
triggers: TelegrafActionTriggers;
}
/**
* Registers middleware for handling callback_data actions with regular expressions.
- * @param triggers Triggers
*
- * https://telegraf.js.org/#/?id=action
+ * @see https://telegraf.js.org/#/?id=action
*/
-export function TelegrafAction(
- triggers: TelegrafActionTriggers,
-): MethodDecorator {
+export const Action = (triggers: TelegrafActionTriggers): MethodDecorator => {
return SetMetadata(DECORATORS.ACTION, { triggers });
-}
+};
+
+/**
+ * Registers middleware for handling callback_data actions with regular expressions.
+ *
+ * @see https://telegraf.js.org/#/?id=action
+ * @deprecated since v2, use Action decorator instead.
+ */
+export const TelegrafAction = Action;
diff --git a/lib/decorators/cashtag.decorator.ts b/lib/decorators/cashtag.decorator.ts
new file mode 100644
index 0000000..e85efb3
--- /dev/null
+++ b/lib/decorators/cashtag.decorator.ts
@@ -0,0 +1,25 @@
+import { SetMetadata } from '@nestjs/common';
+import { DECORATORS } from '../telegraf.constants';
+
+export type TelegrafCashtagCashtag = string | string[];
+
+export interface CashtagOptions {
+ cashtag: TelegrafCashtagCashtag;
+}
+
+/**
+ * Cashtag handling.
+ *
+ * @see https://telegraf.js.org/#/?id=cashtag
+ */
+export const Cashtag = (cashtag: TelegrafCashtagCashtag): MethodDecorator => {
+ return SetMetadata(DECORATORS.CASHTAG, { cashtag });
+};
+
+/**
+ * Cashtag handling.
+ *
+ * @see https://telegraf.js.org/#/?id=cashtag
+ * @deprecated since v2, use Cashtag decorator instead.
+ */
+export const TelegrafCashtag = Cashtag;
diff --git a/lib/decorators/command.decorator.ts b/lib/decorators/command.decorator.ts
new file mode 100644
index 0000000..6100612
--- /dev/null
+++ b/lib/decorators/command.decorator.ts
@@ -0,0 +1,25 @@
+import { SetMetadata } from '@nestjs/common';
+import { DECORATORS } from '../telegraf.constants';
+
+export type TelegrafCommandCommands = string | string[];
+
+export interface CommandOptions {
+ commands: TelegrafCommandCommands;
+}
+
+/**
+ * Command handling.
+ *
+ * @see https://telegraf.js.org/#/?id=command
+ */
+export const Command = (commands: TelegrafCommandCommands): MethodDecorator => {
+ return SetMetadata(DECORATORS.COMMAND, { commands });
+};
+
+/**
+ * Command handling.
+ *
+ * @see https://telegraf.js.org/#/?id=command
+ * @deprecated since v2, use Command decorator instead.
+ */
+export const TelegrafCommand = Command;
diff --git a/lib/decorators/entity.decorator.ts b/lib/decorators/entity.decorator.ts
new file mode 100644
index 0000000..53be71f
--- /dev/null
+++ b/lib/decorators/entity.decorator.ts
@@ -0,0 +1,30 @@
+import { SetMetadata } from '@nestjs/common';
+import { DECORATORS } from '../telegraf.constants';
+
+export type TelegrafEntityEntity =
+ | string
+ | string[]
+ | RegExp
+ | RegExp[]
+ | Function;
+
+export interface EntityOptions {
+ entity: TelegrafEntityEntity;
+}
+
+/**
+ * Entity handling.
+ *
+ * @see https://telegraf.js.org/#/?id=entity
+ */
+export const Entity = (entity: TelegrafEntityEntity): MethodDecorator => {
+ return SetMetadata(DECORATORS.ENTITY, { entity });
+};
+
+/**
+ * Entity handling.
+ *
+ * @see https://telegraf.js.org/#/?id=entity
+ * @deprecated since v2, use Entity decorator instead.
+ */
+export const TelegrafEntity = Entity;
diff --git a/lib/decorators/game-query.decorator.ts b/lib/decorators/game-query.decorator.ts
new file mode 100644
index 0000000..c9d240b
--- /dev/null
+++ b/lib/decorators/game-query.decorator.ts
@@ -0,0 +1,19 @@
+import { SetMetadata } from '@nestjs/common';
+import { DECORATORS } from '../telegraf.constants';
+
+/**
+ * Registers middleware for handling callback_data actions with game query.
+ *
+ * @see https://telegraf.js.org/#/?id=inlinequery
+ */
+export const GameQuery = (): MethodDecorator => {
+ return SetMetadata(DECORATORS.GAME_QUERY, {});
+};
+
+/**
+ * Registers middleware for handling callback_data actions with game query.
+ *
+ * @see https://telegraf.js.org/#/?id=inlinequery
+ * @deprecated since v2, use Action decorator instead.
+ */
+export const TelegrafGameQuery = GameQuery;
diff --git a/lib/decorators/hashtag.decorator.ts b/lib/decorators/hashtag.decorator.ts
new file mode 100644
index 0000000..88e03cb
--- /dev/null
+++ b/lib/decorators/hashtag.decorator.ts
@@ -0,0 +1,25 @@
+import { SetMetadata } from '@nestjs/common';
+import { DECORATORS } from '../telegraf.constants';
+
+export type TelegrafHashtagHashtag = string | string[];
+
+export interface HashtagOptions {
+ hashtag: TelegrafHashtagHashtag;
+}
+
+/**
+ * Hashtag handling.
+ *
+ * @see https://telegraf.js.org/#/?id=hashtag
+ */
+export const Hashtag = (hashtag: TelegrafHashtagHashtag): MethodDecorator => {
+ return SetMetadata(DECORATORS.HASHTAG, { hashtag });
+};
+
+/**
+ * Hashtag handling.
+ *
+ * @see https://telegraf.js.org/#/?id=hashtag
+ * @deprecated since v2, use Hashtag decorator instead.
+ */
+export const TelegrafHashtag = Hashtag;
diff --git a/lib/decorators/telegraf-hears.decorator.ts b/lib/decorators/hears.decorator.ts
similarity index 54%
rename from lib/decorators/telegraf-hears.decorator.ts
rename to lib/decorators/hears.decorator.ts
index 4c0a280..ecb7c56 100644
--- a/lib/decorators/telegraf-hears.decorator.ts
+++ b/lib/decorators/hears.decorator.ts
@@ -5,18 +5,23 @@ import { Context } from '../interfaces';
export type TelegrafHearsTriggers = HearsTriggers;
-export interface TelegrafHearsMetadata {
+export interface HearsOptions {
triggers: TelegrafHearsTriggers;
}
/**
* Registers middleware for handling text messages.
- * @param triggers Triggers
*
- * https://telegraf.js.org/#/?id=hears
+ * @see https://telegraf.js.org/#/?id=hears
*/
-export function TelegrafHears(
- triggers: TelegrafHearsTriggers,
-): MethodDecorator {
+export const Hears = (triggers: TelegrafHearsTriggers): MethodDecorator => {
return SetMetadata(DECORATORS.HEARS, { triggers: triggers });
-}
+};
+
+/**
+ * Registers middleware for handling text messages.
+ *
+ * @see https://telegraf.js.org/#/?id=hears
+ * @deprecated since v2, use Hears decorator instead.
+ */
+export const TelegrafHears = Hears;
diff --git a/lib/decorators/help.decorator.ts b/lib/decorators/help.decorator.ts
new file mode 100644
index 0000000..ced12b1
--- /dev/null
+++ b/lib/decorators/help.decorator.ts
@@ -0,0 +1,19 @@
+import { SetMetadata } from '@nestjs/common';
+import { DECORATORS } from '../telegraf.constants';
+
+/**
+ * Handler for /help command.
+ *
+ * @see https://telegraf.js.org/#/?id=help
+ */
+export const Help = (): MethodDecorator => {
+ return SetMetadata(DECORATORS.HELP, {});
+};
+
+/**
+ * Handler for /help command.
+ *
+ * @see https://telegraf.js.org/#/?id=help
+ * @deprecated since v2, use Help decorator instead.
+ */
+export const TelegrafHelp = Help;
diff --git a/lib/decorators/index.ts b/lib/decorators/index.ts
index 76f6f1a..4b97f06 100644
--- a/lib/decorators/index.ts
+++ b/lib/decorators/index.ts
@@ -1,17 +1,17 @@
+export * from './action.decorator';
+export * from './cashtag.decorator';
+export * from './command.decorator';
+export * from './entity.decorator';
+export * from './game-query.decorator';
+export * from './hashtag.decorator';
+export * from './hears.decorator';
+export * from './help.decorator';
export * from './inject-bot.decorator';
-export * from './telegraf-use.decorator';
-export * from './telegraf-on.decorator';
-export * from './telegraf-hears.decorator';
-export * from './telegraf-command.decorator';
-export * from './telegraf-start.decorator';
-export * from './telegraf-help.decorator';
-export * from './telegraf-settings.decorator';
-export * from './telegraf-entity.decorator';
-export * from './telegraf-mention.decorator';
-export * from './telegraf-phone.decorator';
-export * from './telegraf-hashtag.decorator';
-export * from './telegraf-cashtag.decorator';
-export * from './telegraf-action.decorator';
-export * from './telegraf-inline-query.decorator';
-export * from './telegraf-game-query.decorator';
+export * from './inline-query.decorator';
+export * from './mention.decorator';
+export * from './on.decorator';
+export * from './phone.decorator';
+export * from './settings.decorator';
+export * from './start.decorator';
export * from './update.decorator';
+export * from './use.decorator';
diff --git a/lib/decorators/telegraf-inline-query.decorator.ts b/lib/decorators/inline-query.decorator.ts
similarity index 51%
rename from lib/decorators/telegraf-inline-query.decorator.ts
rename to lib/decorators/inline-query.decorator.ts
index 1a4cc4f..4345d1b 100644
--- a/lib/decorators/telegraf-inline-query.decorator.ts
+++ b/lib/decorators/inline-query.decorator.ts
@@ -3,18 +3,25 @@ import { DECORATORS } from '../telegraf.constants';
export type TelegrafInlineQueryTriggers = string | string[] | RegExp | RegExp[];
-export interface TelegrafInlineQueryMetadata {
+export interface InlineQueryOptions {
triggers: TelegrafInlineQueryTriggers;
}
/**
* Registers middleware for handling inline_query actions with regular expressions.
- * @param triggers Triggers
*
- * https://telegraf.js.org/#/?id=inlinequery
+ * @see https://telegraf.js.org/#/?id=inlinequery
*/
-export function TelegrafInlineQuery(
+export const InlineQuery = (
triggers: TelegrafInlineQueryTriggers,
-): MethodDecorator {
+): MethodDecorator => {
return SetMetadata(DECORATORS.INLINE_QUERY, { triggers });
-}
+};
+
+/**
+ * Registers middleware for handling inline_query actions with regular expressions.
+ *
+ * @see https://telegraf.js.org/#/?id=inlinequery
+ * @deprecated since v2, use InlineQuery decorator instead.
+ */
+export const TelegrafInlineQuery = InlineQuery;
diff --git a/lib/decorators/mention.decorator.ts b/lib/decorators/mention.decorator.ts
new file mode 100644
index 0000000..7611c8e
--- /dev/null
+++ b/lib/decorators/mention.decorator.ts
@@ -0,0 +1,25 @@
+import { SetMetadata } from '@nestjs/common';
+import { DECORATORS } from '../telegraf.constants';
+
+export type TelegrafMentionUsername = string | string[];
+
+export interface MentionOptions {
+ username: TelegrafMentionUsername;
+}
+
+/**
+ * Mention handling.
+ *
+ * @see https://telegraf.js.org/#/?id=mention
+ */
+export const Mention = (username: TelegrafMentionUsername): MethodDecorator => {
+ return SetMetadata(DECORATORS.MENTION, { username });
+};
+
+/**
+ * Mention handling.
+ *
+ * @see https://telegraf.js.org/#/?id=mention
+ * @deprecated since v2, use Mention decorator instead.
+ */
+export const TelegrafMention = Mention;
diff --git a/lib/decorators/telegraf-on.decorator.ts b/lib/decorators/on.decorator.ts
similarity index 57%
rename from lib/decorators/telegraf-on.decorator.ts
rename to lib/decorators/on.decorator.ts
index 4fe3ac0..bc36c94 100644
--- a/lib/decorators/telegraf-on.decorator.ts
+++ b/lib/decorators/on.decorator.ts
@@ -8,18 +8,23 @@ export type TelegrafOnUpdateTypes =
| MessageSubTypes
| MessageSubTypes[];
-export interface TelegrafOnMetadata {
+export interface OnOptions {
updateTypes: TelegrafOnUpdateTypes;
}
/**
* Registers middleware for provided update type.
- * @param updateTypes Update type
*
- * https://telegraf.js.org/#/?id=on
+ * @see https://telegraf.js.org/#/?id=on
*/
-export function TelegrafOn(
- updateTypes: TelegrafOnUpdateTypes,
-): MethodDecorator {
+export const On = (updateTypes: TelegrafOnUpdateTypes): MethodDecorator => {
return SetMetadata(DECORATORS.ON, { updateTypes: updateTypes });
-}
+};
+
+/**
+ * Registers middleware for provided update type.
+ *
+ * @see https://telegraf.js.org/#/?id=on
+ * @deprecated since v2, use On decorator instead.
+ */
+export const TelegrafOn = On;
diff --git a/lib/decorators/phone.decorator.ts b/lib/decorators/phone.decorator.ts
new file mode 100644
index 0000000..90e6342
--- /dev/null
+++ b/lib/decorators/phone.decorator.ts
@@ -0,0 +1,25 @@
+import { SetMetadata } from '@nestjs/common';
+import { DECORATORS } from '../telegraf.constants';
+
+export type TelegrafPhonePhone = string | string[];
+
+export interface PhoneOptions {
+ phone: TelegrafPhonePhone;
+}
+
+/**
+ * Phone number handling.
+ *
+ * @see https://telegraf.js.org/#/?id=phone
+ */
+export const Phone = (phone: TelegrafPhonePhone): MethodDecorator => {
+ return SetMetadata(DECORATORS.PHONE, { phone });
+};
+
+/**
+ * Phone number handling.
+ *
+ * @see https://telegraf.js.org/#/?id=phone
+ * @deprecated since v2, use Phone decorator instead.
+ */
+export const TelegrafPhone = Phone;
diff --git a/lib/decorators/settings.decorator.ts b/lib/decorators/settings.decorator.ts
new file mode 100644
index 0000000..674af29
--- /dev/null
+++ b/lib/decorators/settings.decorator.ts
@@ -0,0 +1,19 @@
+import { SetMetadata } from '@nestjs/common';
+import { DECORATORS } from '../telegraf.constants';
+
+/**
+ * Handler for /settings command.
+ *
+ * @see https://telegraf.js.org/#/?id=settings
+ */
+export const Settings = (): MethodDecorator => {
+ return SetMetadata(DECORATORS.SETTINGS, {});
+};
+
+/**
+ * Handler for /settings command.
+ *
+ * @see https://telegraf.js.org/#/?id=settings
+ * @deprecated since v2, use Settings decorator instead.
+ */
+export const TelegrafSettings = Settings;
diff --git a/lib/decorators/start.decorator.ts b/lib/decorators/start.decorator.ts
new file mode 100644
index 0000000..d11658e
--- /dev/null
+++ b/lib/decorators/start.decorator.ts
@@ -0,0 +1,19 @@
+import { SetMetadata } from '@nestjs/common';
+import { DECORATORS } from '../telegraf.constants';
+
+/**
+ * Handler for /start command.
+ *
+ * @see https://telegraf.js.org/#/?id=start
+ */
+export const Start = (): MethodDecorator => {
+ return SetMetadata(DECORATORS.START, {});
+};
+
+/**
+ * Handler for /start command.
+ *
+ * @see https://telegraf.js.org/#/?id=start
+ * @deprecated since v2, use Start decorator instead.
+ */
+export const TelegrafStart = Start;
diff --git a/lib/decorators/telegraf-cashtag.decorator.ts b/lib/decorators/telegraf-cashtag.decorator.ts
deleted file mode 100644
index 136c8c8..0000000
--- a/lib/decorators/telegraf-cashtag.decorator.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { SetMetadata } from '@nestjs/common';
-import { DECORATORS } from '../telegraf.constants';
-
-export type TelegrafCashtagCashtag = string | string[];
-
-export interface TelegrafCashtagMetadata {
- cashtag: TelegrafCashtagCashtag;
-}
-
-/**
- * Cashtag handling.
- * @param cashtag Cashtag
- *
- * https://telegraf.js.org/#/?id=cashtag
- */
-export function TelegrafCashtag(
- cashtag: TelegrafCashtagCashtag,
-): MethodDecorator {
- return SetMetadata(DECORATORS.CASHTAG, { cashtag });
-}
diff --git a/lib/decorators/telegraf-command.decorator.ts b/lib/decorators/telegraf-command.decorator.ts
deleted file mode 100644
index 7f1570c..0000000
--- a/lib/decorators/telegraf-command.decorator.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { SetMetadata } from '@nestjs/common';
-import { DECORATORS } from '../telegraf.constants';
-
-export type TelegrafCommandCommands = string | string[];
-
-export interface TelegrafCommandMetadata {
- commands: TelegrafCommandCommands;
-}
-
-/**
- * Command handling.
- * @param commands Commands
- *
- * https://telegraf.js.org/#/?id=command
- */
-export function TelegrafCommand(
- commands: TelegrafCommandCommands,
-): MethodDecorator {
- return SetMetadata(DECORATORS.COMMAND, { commands });
-}
diff --git a/lib/decorators/telegraf-entity.decorator.ts b/lib/decorators/telegraf-entity.decorator.ts
deleted file mode 100644
index b32c173..0000000
--- a/lib/decorators/telegraf-entity.decorator.ts
+++ /dev/null
@@ -1,23 +0,0 @@
-import { SetMetadata } from '@nestjs/common';
-import { DECORATORS } from '../telegraf.constants';
-
-export type TelegrafEntityEntity =
- | string
- | string[]
- | RegExp
- | RegExp[]
- | Function;
-
-export interface TelegrafEntityMetadata {
- entity: TelegrafEntityEntity;
-}
-
-/**
- * Entity handling.
- * @param entity Entity name
- *
- * https://telegraf.js.org/#/?id=entity
- */
-export function TelegrafEntity(entity: TelegrafEntityEntity): MethodDecorator {
- return SetMetadata(DECORATORS.ENTITY, { entity });
-}
diff --git a/lib/decorators/telegraf-game-query.decorator.ts b/lib/decorators/telegraf-game-query.decorator.ts
deleted file mode 100644
index 8439345..0000000
--- a/lib/decorators/telegraf-game-query.decorator.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import { SetMetadata } from '@nestjs/common';
-import { DECORATORS } from '../telegraf.constants';
-
-/**
- * Registers middleware for handling callback_data actions with game query.
- *
- * https://telegraf.js.org/#/?id=inlinequery
- */
-export function TelegrafGameQuery(): MethodDecorator {
- return SetMetadata(DECORATORS.GAME_QUERY, {});
-}
diff --git a/lib/decorators/telegraf-hashtag.decorator.ts b/lib/decorators/telegraf-hashtag.decorator.ts
deleted file mode 100644
index 3265213..0000000
--- a/lib/decorators/telegraf-hashtag.decorator.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { SetMetadata } from '@nestjs/common';
-import { DECORATORS } from '../telegraf.constants';
-
-export type TelegrafHashtagHashtag = string | string[];
-
-export interface TelegrafHashtagMetadata {
- hashtag: TelegrafHashtagHashtag;
-}
-
-/**
- * Hashtag handling.
- * @param hashtag Hashtag
- *
- * https://telegraf.js.org/#/?id=hashtag
- */
-export function TelegrafHashtag(
- hashtag: TelegrafHashtagHashtag,
-): MethodDecorator {
- return SetMetadata(DECORATORS.HASHTAG, { hashtag });
-}
diff --git a/lib/decorators/telegraf-help.decorator.ts b/lib/decorators/telegraf-help.decorator.ts
deleted file mode 100644
index 7bade62..0000000
--- a/lib/decorators/telegraf-help.decorator.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import { SetMetadata } from '@nestjs/common';
-import { DECORATORS } from '../telegraf.constants';
-
-/**
- * Handler for /help command.
- *
- * https://telegraf.js.org/#/?id=help
- */
-export function TelegrafHelp(): MethodDecorator {
- return SetMetadata(DECORATORS.HELP, {});
-}
diff --git a/lib/decorators/telegraf-mention.decorator.ts b/lib/decorators/telegraf-mention.decorator.ts
deleted file mode 100644
index 90dbc6b..0000000
--- a/lib/decorators/telegraf-mention.decorator.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { SetMetadata } from '@nestjs/common';
-import { DECORATORS } from '../telegraf.constants';
-
-export type TelegrafMentionUsername = string | string[];
-
-export interface TelegrafMentionMetadata {
- username: TelegrafMentionUsername;
-}
-
-/**
- * Mention handling.
- * @param username Username
- *
- * https://telegraf.js.org/#/?id=mention
- */
-export function TelegrafMention(
- username: TelegrafMentionUsername,
-): MethodDecorator {
- return SetMetadata(DECORATORS.MENTION, { username });
-}
diff --git a/lib/decorators/telegraf-phone.decorator.ts b/lib/decorators/telegraf-phone.decorator.ts
deleted file mode 100644
index 8182150..0000000
--- a/lib/decorators/telegraf-phone.decorator.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-import { SetMetadata } from '@nestjs/common';
-import { DECORATORS } from '../telegraf.constants';
-
-export type TelegrafPhonePhone = string | string[];
-
-export interface TelegrafPhoneMetadata {
- phone: TelegrafPhonePhone;
-}
-
-/**
- * Phone number handling.
- * @param phone Phone number
- *
- * https://telegraf.js.org/#/?id=phone
- */
-export function TelegrafPhone(phone: TelegrafPhonePhone): MethodDecorator {
- return SetMetadata(DECORATORS.PHONE, { phone });
-}
diff --git a/lib/decorators/telegraf-settings.decorator.ts b/lib/decorators/telegraf-settings.decorator.ts
deleted file mode 100644
index aed3741..0000000
--- a/lib/decorators/telegraf-settings.decorator.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import { SetMetadata } from '@nestjs/common';
-import { DECORATORS } from '../telegraf.constants';
-
-/**
- * Handler for /settings command.
- *
- * https://telegraf.js.org/#/?id=settings
- */
-export function TelegrafSettings(): MethodDecorator {
- return SetMetadata(DECORATORS.SETTINGS, {});
-}
diff --git a/lib/decorators/telegraf-start.decorator.ts b/lib/decorators/telegraf-start.decorator.ts
deleted file mode 100644
index 3e0c820..0000000
--- a/lib/decorators/telegraf-start.decorator.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import { SetMetadata } from '@nestjs/common';
-import { DECORATORS } from '../telegraf.constants';
-
-/**
- * Handler for /start command.
- *
- * https://telegraf.js.org/#/?id=start
- */
-export function TelegrafStart(): MethodDecorator {
- return SetMetadata(DECORATORS.START, {});
-}
diff --git a/lib/decorators/telegraf-use.decorator.ts b/lib/decorators/telegraf-use.decorator.ts
deleted file mode 100644
index 2ff0dd7..0000000
--- a/lib/decorators/telegraf-use.decorator.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import { SetMetadata } from '@nestjs/common';
-import { DECORATORS } from '../telegraf.constants';
-
-/**
- * Registers a middleware.
- *
- * https://telegraf.js.org/#/?id=use
- */
-export function TelegrafUse(): MethodDecorator {
- return SetMetadata(DECORATORS.USE, {});
-}
diff --git a/lib/decorators/use.decorator.ts b/lib/decorators/use.decorator.ts
new file mode 100644
index 0000000..8c47461
--- /dev/null
+++ b/lib/decorators/use.decorator.ts
@@ -0,0 +1,19 @@
+import { SetMetadata } from '@nestjs/common';
+import { DECORATORS } from '../telegraf.constants';
+
+/**
+ * Registers a middleware.
+ *
+ * @see https://telegraf.js.org/#/?id=use
+ */
+export const Use = (): MethodDecorator => {
+ return SetMetadata(DECORATORS.USE, {});
+};
+
+/**
+ * Registers a middleware.
+ *
+ * @see https://telegraf.js.org/#/?id=use
+ * @deprecated since v2, use Use decorator instead.
+ */
+export const TelegrafUse = Use;
diff --git a/lib/telegraf-metadata.accessor.ts b/lib/telegraf-metadata.accessor.ts
index b35b8cf..26ab53e 100644
--- a/lib/telegraf-metadata.accessor.ts
+++ b/lib/telegraf-metadata.accessor.ts
@@ -1,17 +1,16 @@
import { Injectable, Type } from '@nestjs/common';
import { Reflector } from '@nestjs/core';
import {
- TelegrafActionMetadata,
- TelegrafCashtagMetadata,
- TelegrafCommandMetadata,
- TelegrafEntityMetadata,
- TelegrafHashtagMetadata,
- TelegrafHearsMetadata,
- TelegrafInlineQueryMetadata,
- TelegrafMentionMetadata,
- TelegrafOnMetadata,
- TelegrafPhoneMetadata,
- TelegrafStart,
+ ActionOptions,
+ CashtagOptions,
+ CommandOptions,
+ EntityOptions,
+ HashtagOptions,
+ HearsOptions,
+ InlineQueryOptions,
+ MentionOptions,
+ OnOptions,
+ PhoneOptions,
} from './decorators';
import { DECORATORS } from './telegraf.constants';
@@ -33,9 +32,7 @@ export class TelegrafMetadataAccessor {
return !!this.reflector.get(DECORATORS.ON, target);
}
- getTelegrafOnMetadata(
- target: Type | Function,
- ): TelegrafOnMetadata | undefined {
+ getTelegrafOnMetadata(target: Type | Function): OnOptions | undefined {
return this.reflector.get(DECORATORS.ON, target);
}
@@ -48,7 +45,7 @@ export class TelegrafMetadataAccessor {
getTelegrafHearsMetadata(
target: Type | Function,
- ): TelegrafHearsMetadata | undefined {
+ ): HearsOptions | undefined {
return this.reflector.get(DECORATORS.HEARS, target);
}
@@ -61,7 +58,7 @@ export class TelegrafMetadataAccessor {
getTelegrafCommandMetadata(
target: Type | Function,
- ): TelegrafCommandMetadata | undefined {
+ ): CommandOptions | undefined {
return this.reflector.get(DECORATORS.COMMAND, target);
}
@@ -95,7 +92,7 @@ export class TelegrafMetadataAccessor {
getTelegrafEntityMetadata(
target: Type | Function,
- ): TelegrafEntityMetadata | undefined {
+ ): EntityOptions | undefined {
return this.reflector.get(DECORATORS.ENTITY, target);
}
@@ -108,7 +105,7 @@ export class TelegrafMetadataAccessor {
getTelegrafMentionMetadata(
target: Type | Function,
- ): TelegrafMentionMetadata | undefined {
+ ): MentionOptions | undefined {
return this.reflector.get(DECORATORS.MENTION, target);
}
@@ -121,7 +118,7 @@ export class TelegrafMetadataAccessor {
getTelegrafPhoneMetadata(
target: Type | Function,
- ): TelegrafPhoneMetadata | undefined {
+ ): PhoneOptions | undefined {
return this.reflector.get(DECORATORS.PHONE, target);
}
@@ -134,7 +131,7 @@ export class TelegrafMetadataAccessor {
getTelegrafHashtagMetadata(
target: Type | Function,
- ): TelegrafHashtagMetadata | undefined {
+ ): HashtagOptions | undefined {
return this.reflector.get(DECORATORS.HASHTAG, target);
}
@@ -147,7 +144,7 @@ export class TelegrafMetadataAccessor {
getTelegrafCashtagMetadata(
target: Type | Function,
- ): TelegrafCashtagMetadata | undefined {
+ ): CashtagOptions | undefined {
return this.reflector.get(DECORATORS.CASHTAG, target);
}
@@ -160,7 +157,7 @@ export class TelegrafMetadataAccessor {
getTelegrafActionMetadata(
target: Type | Function,
- ): TelegrafActionMetadata | undefined {
+ ): ActionOptions | undefined {
return this.reflector.get(DECORATORS.ACTION, target);
}
@@ -173,7 +170,7 @@ export class TelegrafMetadataAccessor {
getTelegrafInlineQueryMetadata(
target: Type | Function,
- ): TelegrafInlineQueryMetadata | undefined {
+ ): InlineQueryOptions | undefined {
return this.reflector.get(DECORATORS.INLINE_QUERY, target);
}
diff --git a/lib/telegraf.explorer.ts b/lib/telegraf.explorer.ts
index 49292f7..67a0961 100644
--- a/lib/telegraf.explorer.ts
+++ b/lib/telegraf.explorer.ts
@@ -6,16 +6,16 @@ import { TelegrafMetadataAccessor } from './telegraf-metadata.accessor';
import { TelegrafProvider } from './telegraf.provider';
import { TELEGRAF_PROVIDER } from './telegraf.constants';
import {
- TelegrafActionMetadata,
- TelegrafCashtagMetadata,
- TelegrafCommandMetadata,
- TelegrafEntityMetadata,
- TelegrafHashtagMetadata,
- TelegrafHearsMetadata,
- TelegrafInlineQueryMetadata,
- TelegrafMentionMetadata,
- TelegrafOnMetadata,
- TelegrafPhoneMetadata,
+ ActionOptions,
+ CashtagOptions,
+ CommandOptions,
+ EntityOptions,
+ HashtagOptions,
+ HearsOptions,
+ InlineQueryOptions,
+ MentionOptions,
+ OnOptions,
+ PhoneOptions,
} from './decorators';
@Injectable()
@@ -127,7 +127,7 @@ export class TelegrafExplorer implements OnModuleInit {
instance: object,
key: string,
telegraf: TelegrafProvider,
- metadata: TelegrafOnMetadata,
+ metadata: OnOptions,
) {
telegraf.on(metadata.updateTypes, instance[key].bind(instance));
}
@@ -136,7 +136,7 @@ export class TelegrafExplorer implements OnModuleInit {
instance: object,
key: string,
telegraf: TelegrafProvider,
- metadata: TelegrafHearsMetadata,
+ metadata: HearsOptions,
) {
telegraf.hears(metadata.triggers, instance[key].bind(instance));
}
@@ -145,7 +145,7 @@ export class TelegrafExplorer implements OnModuleInit {
instance: object,
key: string,
telegraf: TelegrafProvider,
- metadata: TelegrafCommandMetadata,
+ metadata: CommandOptions,
) {
telegraf.command(metadata.commands, instance[key].bind(instance));
}
@@ -179,7 +179,7 @@ export class TelegrafExplorer implements OnModuleInit {
instance: object,
key: string,
telegraf: TelegrafProvider,
- metadata: TelegrafEntityMetadata,
+ metadata: EntityOptions,
) {
// @ts-ignore
telegraf.entity(metadata.entity, instance[key].bind(instance));
@@ -189,7 +189,7 @@ export class TelegrafExplorer implements OnModuleInit {
instance: object,
key: string,
telegraf: TelegrafProvider,
- metadata: TelegrafMentionMetadata,
+ metadata: MentionOptions,
) {
// @ts-ignore
telegraf.mention(metadata.username, instance[key].bind(instance));
@@ -199,7 +199,7 @@ export class TelegrafExplorer implements OnModuleInit {
instance: object,
key: string,
telegraf: TelegrafProvider,
- metadata: TelegrafPhoneMetadata,
+ metadata: PhoneOptions,
) {
// @ts-ignore
telegraf.phone(metadata.phone, instance[key].bind(instance));
@@ -209,7 +209,7 @@ export class TelegrafExplorer implements OnModuleInit {
instance: object,
key: string,
telegraf: TelegrafProvider,
- metadata: TelegrafHashtagMetadata,
+ metadata: HashtagOptions,
) {
// @ts-ignore
telegraf.hashtag(metadata.hashtag, instance[key].bind(instance));
@@ -219,7 +219,7 @@ export class TelegrafExplorer implements OnModuleInit {
instance: object,
key: string,
telegraf: TelegrafProvider,
- metadata: TelegrafCashtagMetadata,
+ metadata: CashtagOptions,
) {
// @ts-ignore
telegraf.cashtag(metadata.cashtag, instance[key].bind(instance));
@@ -229,7 +229,7 @@ export class TelegrafExplorer implements OnModuleInit {
instance: object,
key: string,
telegraf: TelegrafProvider,
- metadata: TelegrafActionMetadata,
+ metadata: ActionOptions,
) {
telegraf.action(metadata.triggers, instance[key].bind(instance));
}
@@ -238,7 +238,7 @@ export class TelegrafExplorer implements OnModuleInit {
instance: object,
key: string,
telegraf: TelegrafProvider,
- metadata: TelegrafInlineQueryMetadata,
+ metadata: InlineQueryOptions,
) {
// @ts-ignore
telegraf.inlineQuery(metadata.triggers, instance[key].bind(instance));
From 18928f02b9e97c0728338ac4d1e457a350895dc5 Mon Sep 17 00:00:00 2001
From: Aleksandr Bukhalo
Date: Fri, 14 Aug 2020 13:55:57 +0300
Subject: [PATCH 3/6] chore: bump version on v1.2.2
---
package-lock.json | 2 +-
package.json | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 432f475..55a1068 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,6 +1,6 @@
{
"name": "nestjs-telegraf",
- "version": "1.2.1",
+ "version": "1.2.2",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
diff --git a/package.json b/package.json
index 148c811..f0ae6de 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "nestjs-telegraf",
- "version": "1.2.1",
+ "version": "1.2.2",
"description": "Telegraf module for NestJS",
"keywords": [
"nest",
From c04794d9ce3890c57d0eea26bea3e1b111f19d03 Mon Sep 17 00:00:00 2001
From: Aleksandr Bukhalo
Date: Fri, 14 Aug 2020 14:01:39 +0300
Subject: [PATCH 4/6] fix: allow comments for jsdoc/tsdoc
---
tsconfig.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tsconfig.json b/tsconfig.json
index c5f6696..bb13608 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -3,7 +3,7 @@
"module": "commonjs",
"declaration": true,
"noImplicitAny": false,
- "removeComments": true,
+ "removeComments": false,
"noLib": false,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
From 668aa908a50c66df94ea25dfad9684e27377e681 Mon Sep 17 00:00:00 2001
From: Aleksandr Bukhalo
Date: Fri, 14 Aug 2020 14:13:00 +0300
Subject: [PATCH 5/6] fix(deps): add missing dependencies
---
lib/index.ts | 1 +
package-lock.json | 9 +++++++++
package.json | 1 +
3 files changed, 11 insertions(+)
diff --git a/lib/index.ts b/lib/index.ts
index deb2848..39b657d 100644
--- a/lib/index.ts
+++ b/lib/index.ts
@@ -4,6 +4,7 @@ export * as BaseScene from 'telegraf/scenes/base';
export * as session from 'telegraf/session';
export * as Stage from 'telegraf/stage';
export * as WizardScene from 'telegraf/scenes/wizard';
+export * as Extra from 'telegraf/extra';
export * from './decorators';
export * from './interfaces';
diff --git a/package-lock.json b/package-lock.json
index 55a1068..c5abb98 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -2397,6 +2397,15 @@
"glob": "^7.1.3"
}
},
+ "rxjs": {
+ "version": "6.6.2",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.2.tgz",
+ "integrity": "sha512-BHdBMVoWC2sL26w//BCu3YzKT4s2jip/WhwsGEDmeKYBhKDZeYezVUnHatYB7L85v5xs0BAQmg6BEYJEKxBabg==",
+ "dev": true,
+ "requires": {
+ "tslib": "^1.9.0"
+ }
+ },
"sandwich-stream": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/sandwich-stream/-/sandwich-stream-2.0.2.tgz",
diff --git a/package.json b/package.json
index f0ae6de..ba44009 100644
--- a/package.json
+++ b/package.json
@@ -47,6 +47,7 @@
"lint-staged": "10.2.11",
"prettier": "2.0.5",
"reflect-metadata": "0.1.13",
+ "rxjs": "6.6.2",
"typescript": "3.9.7"
},
"peerDependencies": {
From 8375d1af92be2931083794f03ce9b960a6d9ffc5 Mon Sep 17 00:00:00 2001
From: Aleksandr Bukhalo
Date: Fri, 14 Aug 2020 14:27:36 +0300
Subject: [PATCH 6/6] chore: update versions in accordance with SemVer
---
package-lock.json | 2 +-
package.json | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index c5abb98..151247e 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,6 +1,6 @@
{
"name": "nestjs-telegraf",
- "version": "1.2.2",
+ "version": "1.3.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
diff --git a/package.json b/package.json
index ba44009..cef0703 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "nestjs-telegraf",
- "version": "1.2.2",
+ "version": "1.3.0",
"description": "Telegraf module for NestJS",
"keywords": [
"nest",