Nodejs Nestjs Telegram机器人插件nestjs-telegram的使用

Nodejs Nestjs Telegram机器人插件nestjs-telegram的使用
nestjs-telegram 是一个用于 NestJS 项目的库,它可以帮助你轻松创建和管理 Telegram 机器人。这个库基于 telegraf 库,为 NestJS 提供了更好的结构化支持。

安装

首先,你需要安装 nestjs-telegram

npm install [@nestjs](/user/nestjs)-telegram/core [@nestjs](/user/nestjs)-telegram/bot

基本配置

  1. 创建一个Bot

    首先,你需要在 BotFather 中创建一个新的Telegram bot,并获取到你的bot token。

  2. 配置Module

    在你的NestJS项目中,创建一个模块来集成 [@nestjs](/user/nestjs)-telegram

    import { Module } from '[@nestjs](/user/nestjs)/common';
    import { TelegrafModule } from '[@nestjs](/user/nestjs)-telegram/bot';
    
    [@Module](/user/Module)({
      imports: [
        TelegrafModule.forRootAsync({
          useFactory: () => ({
            token: 'YOUR_BOT_TOKEN',
          }),
        }),
      ],
    })
    export class AppModule {}
    
  3. 创建一个Controller

    创建一个控制器来处理来自Telegram的消息。

    import { Controller, Post, Body, HttpCode } from '[@nestjs](/user/nestjs)/common';
    import { Update } from 'telegraf/typings/core/types/typegram';
    import { On, HandleUpdate } from '[@nestjs](/user/nestjs)-telegram/core';
    
    [@Controller](/user/Controller)('bot')
    export class BotController {
      @Post()
      @HttpCode(200)
      @HandleUpdate()
      async handleUpdate(@Body() update: Update) {
        // 处理更新
        console.log(update);
      }
    }
    
  4. 启动应用

    现在你可以启动你的NestJS应用,并开始接收来自Telegram的消息。

处理特定类型的消息

你可以定义特定的方法来处理不同类型的消息,如文本消息、命令等。

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

[@Controller](/user/Controller)('bot')
export class BotController {
  @On()
  @Post()
  @HttpCode(200)
  async handleUpdate(@Body() update: Update) {
    console.log(update);
  }

  @HandleCommand('start')
  async onStartCommand(@Body() ctx: any) {
    await ctx.reply('Welcome to the bot!');
  }

  @HandleMessage(/hello/i)
  async onHelloMessage(@Body() ctx: any) {
    await ctx.reply('Hello to you too!');
  }
}

更多功能

  • 使用中间件:你可以添加自定义中间件来处理特定逻辑。
  • 持久化数据:使用 session() 方法来保存用户会话数据。
  • 定时任务:可以使用第三方库如 node-cron 来设置定时任务。

以上就是如何使用 nestjs-telegram 创建一个基本的Telegram机器人。你可以根据需要扩展更多功能。


3 回复

当然,没问题!nestjs-telegram 是一个用于 NestJS 的Telegram机器人框架。首先,你需要安装它:

npm install @nestjs/telegram

然后,在你的模块中导入 TelegrafModule 并配置你的 bot:

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

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

接下来,你可以创建一个服务来处理消息:

import { Injectable } from '@nestjs/common';
import { On, Start, SceneEnter } from '@nestjs/telegram';

@Injectable()
export class TelegramService {
  @On('text')
  async handleMessage({ update }) {
    return { text: `You said: ${update.message.text}` };
  }

  @Start()
  async onStartCommand() {
    return { text: 'Welcome to my bot!' };
  }

  @SceneEnter('myScene')
  async onSceneEnter() {
    return { text: 'Entering scene!' };
  }
}

最后,在你的模块中引入这个服务:

import { Module } from '@nestjs/common';
import { TelegrafModule } from '@nestjs/telegram';
import { TelegramService } from './telegram.service';

@Module({
  imports: [TelegrafModule.forRoot()],
  providers: [TelegramService],
})
export class AppModule {}

现在,你的Telegram机器人应该可以响应文本消息、启动命令和场景进入事件了。希望这对你有帮助!


nestjs-telegram 是一个用于NestJS应用中的Telegram Bot开发的库。它可以帮助开发者轻松地创建和管理Telegram机器人。以下是如何开始使用nestjs-telegram的基本步骤:

1. 安装依赖

首先,你需要安装nestjs-telegram@nestjs/axios(可选,如果你需要发送HTTP请求)。

npm install @nestjs/telegram axios

2. 创建Bot

在Telegram上创建一个新bot,并获取其API Token。你可以通过与BotFather对话来完成这一步。

3. 配置模块

在你的NestJS项目中配置TelegramModule。通常情况下,你可以在app.module.ts中进行配置。

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

@Module({
  imports: [
    TelegramModule.forRoot({
      token: 'YOUR_TELEGRAM_BOT_API_TOKEN', // 替换为你的bot的API token
    }),
  ],
  providers: [AppService],
})
export class AppModule {}

4. 创建控制器处理消息

接下来,创建一个控制器来处理来自Telegram的消息。

import { Controller, Get, Post, Body } from '@nestjs/common';
import { TelegramService } from 'nestjs-telegram';
import { Update } from '@nestjs/bot';

@Controller('bot')
export class BotController {
  constructor(private readonly telegramService: TelegramService) {}

  @Post('webhook')
  async handleWebhook(@Body() update: Update) {
    const message = update.message;
    if (message) {
      const chatId = message.chat.id;
      await this.telegramService.sendMessage(chatId, `Hello, ${message.text}`);
    }
  }
}

5. 设置Webhook(可选)

如果你的服务器有公网访问权限,可以设置Telegram Bot的Webhook以接收更新。

import { Injectable } from '@nestjs/common';
import { OnModuleInit } from '@nestjs/common/interfaces';
import { TelegramService } from 'nestjs-telegram';

@Injectable()
export class BotService implements OnModuleInit {
  constructor(private readonly telegramService: TelegramService) {}

  async onModuleInit() {
    await this.telegramService.setWebhook({
      url: 'https://your-public-url.com/bot/webhook',
    });
  }
}

确保你的服务器可以接受POST请求到 /bot/webhook

以上是使用nestjs-telegram创建一个简单的Telegram机器人的基本步骤。根据你的具体需求,你可能还需要进一步配置和扩展功能。

nestjs-telegram 是一个用于 NestJS 的 Telegram 机器人开发库。首先安装该库:

npm install @nestjs-telegram/core @nestjs-telegram/bot

然后,在你的模块中导入 TelegramModule

import { Module } from '@nestjs/common';
import { TelegramModule } from '@nestjs-telegram/core';

@Module({
  imports: [
    TelegramModule.register({
      token: 'YOUR_TELEGRAM_BOT_API_TOKEN',
    }),
  ],
})
export class AppModule {}

创建一个服务来处理消息:

import { Injectable, OnModuleInit } from '@nestjs/common';
import { TelegramService } from '@nestjs-telegram/core';

@Injectable()
export class AppService implements OnModuleInit {
  constructor(private readonly telegram: TelegramService) {}

  async onModuleInit() {
    this.telegram.on('message', async (ctx) => {
      await ctx.reply(`Hello, ${ctx.message.text}`);
    });
  }
}

以上步骤后,您的 NestJS 应用就可以响应 Telegram 机器人的消息了。

回到顶部