如何将消息从频道转发到电报机器人上的群组?

时间:2019-04-07 13:31:38

标签: node.js telegram telegram-bot

我试图实现我的机器人功能。的功能是,如果频道写了任何消息,它将被转发到该漫游器已经存在的组。

尝试使用作用域方法,当新用户加入该组时,该方法像欢迎消息上的超级按钮一样起作用。

//index.js

const Telegram = require('telegram-node-bot'),

tg = new Telegram.Telegram('MYAPI', {
workers: 1
});

const ForwardController = require('./controllers/forward')

tg.router.when(new Telegram.TextCommand('/info', 'infoCommand'), new InfoController())
.otherwise(new ForwardController());

//forward.js

const Telegram = require('telegram-node-bot');

class ForwardController extends Telegram.TelegramBaseController {
handle(scope) {
    if ('channel' == scope.message.chat._type) {
        scope.api.forwardMessage(scope.message._chat._id, _forwardFromChat._text);
      }
   }
}

module.exports = ForwardController;

我尝试了许多组合,但消息从未转发...该漫游器已经是该频道的管理员,也已放入组中。 (也有与机器人打开的私人消息,所以我认为它也应该在那里转发)

1 个答案:

答案 0 :(得分:0)

看看API reference for you library,文档页面似乎已关闭,因此Github是您的朋友。

您正在进行的Observable调用具有错误的参数,并且正在访问私有类变量。它还在返回一个承诺,因此您应该等待该承诺或将disposables.add(modelManager.apiCall() .flatMap(apiResponse -> { modelManager.storeInDatabase(apiResponse); return modelManager.loadFromDatabas() }) .subscribeOn(Schedulers.io()) .observeOn(mainThread) .subscribeWith(new DisposableSingleObserver { public void onSuccess(ApiResponse apiResponse) { view.showData(data); } public void onError(Throwable e) { } }) 链接到该承诺。您可以在forwardMessage实例本身上使用类方法。

应该更像是:

.then

这将使用Scope实例方法并为您处理当前聊天的ID,您所需要的只是要将消息发送到的聊天的ID,然后替换{{1} }和该ID。