Nodejs Nestjs Telegram Bot插件@nestjs/telegraf的使用

Nodejs Nestjs Telegram Bot插件@nestjs/telegraf的使用
[@nestjs](/user/nestjs)/telegraf 是一个用于 NestJS 的库,它允许你创建和管理基于 Telegram Bot API 的机器人。下面是一个简单的教程,帮助你开始使用 [@nestjs](/user/nestjs)/telegraf 创建你的第一个 Telegram 机器人。

安装依赖

首先,你需要安装 [@nestjs](/user/nestjs)/telegraf 和其他必要的依赖:

npm install [@nestjs](/user/nestjs)/telegraf telegraf

配置项目

接下来,在你的 NestJS 应用中配置 [@nestjs](/user/nestjs)/telegraf。这通常包括在模块中引入 TelegrafModule 并提供必要的配置选项。

创建一个基本的 NestJS 应用

如果你还没有一个 NestJS 应用,可以使用以下命令快速生成:

npm i -g [@nestjs](/user/nestjs)/cli
nest new my-telegram-bot
cd my-telegram-bot

在模块中引入 TelegrafModule

在你的应用模块(通常是 app.module.ts)中,引入 TelegrafModule 并配置它:

import { Module } from '[@nestjs](/user/nestjs)/common';
import { TelegrafModule } from '[@nestjs](/user/nestjs)/telegraf';
import { AppController } from './app.controller';
import { AppService } from './app.service';

@Module({
  imports: [
    TelegrafModule.forRoot({
      token: 'YOUR_TELEGRAM_BOT_TOKEN', // 替换为你的 Telegram Bot Token
    }),
  ],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}

创建控制器

现在,你可以创建一个控制器来处理来自 Telegram 的消息。

import { Controller, Get, Post, Body } from '[@nestjs](/user/nestjs)/common';
import { Context, On, Scenes } from '[@nestjs](/user/nestjs)/telegraf';
import { Update } from 'telegraf/typings/core/types/typegram';

@Controller()
export class BotController {
  @On('text')
  async handleText(@Context() ctx: Scenes.SceneContext<Update>) {
    await ctx.reply(`你发送的消息是: ${ctx.message.text}`);
  }
}

启动应用

最后,确保你的 NestJS 应用已经启动,并且你的机器人可以在 Telegram 中通过 /start 命令开始交互。

npm run start

测试机器人

打开 Telegram,搜索并添加你的机器人,然后发送一些文本消息。你应该会收到一个回复,显示你发送的消息内容。

更多功能

[@nestjs](/user/nestjs)/telegraf 还支持许多高级功能,如场景管理、中间件、自定义命令等。你可以参考官方文档获取更多信息:https://github.com/nestjs-modules/telegraf

这就是使用 [@nestjs](/user/nestjs)/telegraf 创建 Telegram 机器人的基本步骤。希望这能帮到你!


3 回复

当然!@nestjs/telegraf 是一个用于 NestJS 的 Telegram Bot 插件。首先,你需要安装它:

npm install [@nestjs](/user/nestjs)/telegraf telegraf

然后,在你的模块中导入 TelegrafModule:

import { Module } from '[@nestjs](/user/nestjs)/common';
import { TelegrafModule } from '[@nestjs](/user/nestjs)/telegraf';

@Module({
  imports: [
    TelegrafModule.forRoot({
      token: 'YOUR_TELEGRAM_BOT_TOKEN',
    }),
  ],
})
export class AppModule {}

接着,创建一个控制器来处理消息:

import { Controller, Post, Body } from '[@nestjs](/user/nestjs)/common';
import { Context, On } from '[@nestjs](/user/nestjs)/telegraf';
import { Update } from 'telegraf/typings/core/types/typegram';

@Controller()
export class BotController {
  @On('text')
  async handleText(@Context() ctx: any) {
    await ctx.reply(`You said: ${ctx.message.text}`);
  }
}

现在,你的机器人应该可以响应文本消息了!试试看吧,别忘了给它发个消息!


当然可以!@nestjs/telegraf 是一个用于 NestJS 的库,用于创建 Telegram 机器人。下面是一个简单的示例来展示如何使用 @nestjs/telegraf 创建一个基本的 Telegram 机器人。

安装依赖

首先,你需要安装必要的依赖:

npm install @nestjs/telegraf telegraf

配置项目

假设你已经有一个 NestJS 项目,接下来需要在你的模块中配置 @nestjs/telegraf

创建一个 Telegram 模块

创建一个名为 telegram.module.ts 的文件,并配置 TelegrafModule

import { Module } from '@nestjs/common';
import { TelegrafModule } from '@nestjs/telegraf';

@Module({
  imports: [
    TelegrafModule.forRoot({
      token: 'YOUR_TELEGRAM_BOT_TOKEN',
    }),
  ],
})
export class TelegramModule {}

创建一个 Telegram 控制器

创建一个名为 telegram.controller.ts 的文件,并添加一些处理逻辑:

import { Controller, Get, Post, Body, HttpService } from '@nestjs/common';
import { Context, On, Scenes, WizardScene, Markup } from 'telegraf';
import { SessionService } from './session.service'; // 可选:用于管理会话

@Controller()
export class TelegramController {
  constructor(private readonly httpService: HttpService) {}

  @On('text')
  async onText(ctx: Context): Promise<void> {
    if (ctx.message.text === '/start') {
      await ctx.reply('欢迎来到我的机器人!');
    } else {
      await ctx.reply(`你发送了: ${ctx.message.text}`);
    }
  }

  @On('callback_query')
  async onCallbackQuery(ctx: Context): Promise<void> {
    await ctx.answerCbQuery('你点击了按钮');
    await ctx.reply('你点击了按钮');
  }
}

创建一个场景(可选)

如果你需要处理更复杂的对话流程,可以使用场景。以下是一个简单的例子:

import { Scenes, WizardScene, Enter } from 'telegraf';
import { Context } from 'telegraf/typings/context';

export const enterNameScene = new WizardScene(
  'enterName',
  new Scenes.WizardContext((ctx: Context) => {
    ctx.reply('请输入你的名字:');
    return ctx.wizard.next();
  }),

  new Scenes.WizardContext(async (ctx: Context) => {
    const name = ctx.message.text;
    ctx.reply(`你好,${name}!`);
    ctx.scene.leave();
  })
);

@Controller()
export class TelegramController {
  @Post('scene')
  async handleScene(@Body() body: any, @Context() ctx: Context): Promise<void> {
    ctx.scene.enter('enterName');
  }
}

启动应用

最后,在你的主应用模块中引入 TelegramModule

import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { TelegramModule } from './telegram.module';

@Module({
  imports: [TelegramModule],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}

启动你的 NestJS 应用,你的 Telegram 机器人就应该可以工作了。

以上就是使用 @nestjs/telegraf 创建一个简单的 Telegram 机器人的基本步骤。你可以根据需求进一步扩展和定制。

使用@nestjs/telegraf插件创建Telegram机器人,首先安装依赖:npm install @nestjs/telegraf telegraf。然后在模块中导入TelegrafModule,并配置Bot令牌:

import { TelegrafModule } from '@nestjs/telegraf';

@Module({
  imports: [
    TelegrafModule.forRoot({
      token: 'YOUR_TELEGRAM_BOT_TOKEN',
    }),
  ],
})
export class AppModule {}

接着定义一个服务处理更新:

@Injectable()
export class TelegramService extends Telegraf {
  constructor() {
    super();
    this.command('start', (ctx) => ctx.reply('Welcome!'));
  }
}

最后,在模块中注入并使用该服务。这样你就有了一个基础的Telegram机器人。

回到顶部