You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NestJs使用nestjs-telegraf实现广播消息服务时依赖注入报错

解决方案

问题出在你直接尝试注入Telegraf类,但nestjs-telegraf并没有将Telegraf类本身注册为可注入的依赖,而是通过特定token注册了Bot实例。正确的做法是使用nestjs-telegraf提供的@InjectBot()装饰器来注入Bot实例。

修改BroadcastService代码:

import { Injectable } from '@nestjs/common';
import { InjectBot, Telegraf } from 'nestjs-telegraf';
import { SubscribersService } from './subscribers.service';

@Injectable()
export class BroadcastService {
  constructor(
    @InjectBot() private readonly bot: Telegraf,
    private readonly subscribersService: SubscribersService,
  ) {}

  sendBroadcast(message: string) {
    this.subscribersService.getSubscribers().forEach((subscriber) => {
      this.bot.telegram.sendMessage(subscriber, message);
    });
  }
}

关键说明:

  • @InjectBot()是nestjs-telegraf提供的装饰器,用于标识要注入的Telegram Bot实例
  • 注入的bot变量类型为Telegraf,既保留类型提示,又能让Nest正确解析依赖
  • 你的模块配置已经正确导入TelegrafModule,无需额外修改模块代码

修改后依赖注入即可正常工作,你可以直接在BroadcastService中使用Bot实例实现定时消息、广播等功能,无需从上下文传递。

内容的提问来源于stack exchange,提问作者Artem Kuroptev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 06:03:31