Как переслать сообщение из канала в группы на боте telegram? - PullRequest
0 голосов
/ 07 апреля 2019

я пытаюсь реализовать свой бот функцию.Функция заключается в том, что если канал пишет какое-либо сообщение, оно будет перенаправлено в группы, в которых бот уже находится.

Попытка использовать метод области действия, который срабатывал как приветствие в сообщении приветствия, когда новый пользователь присоединился к группе.

//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 Ответ

1 голос
/ 07 апреля 2019

Взгляните на справочник API для библиотеки , страница документации, кажется, не работает, поэтому Github - ваш друг.

Вызванный forwardMessage вызов имеет неверные аргументы и обращается к переменным закрытого класса. Он также возвращает обещание, поэтому вам следует дождаться обещания или связать его .then. Вы можете использовать методы класса на самом экземпляре Scope.

Это должно быть больше похоже на:

// using async/await - note the containing function must be async for this approach
const result = await forwardMessage(<id of chat here>, scope.message().id());

// or to chain a .then
forwardMessage(<id of chat here>, scope.message().id())
  .then(result => /* do something with result */)
  .catch(err => /* handle the error */);

Это будет использовать метод экземпляра Scopes и обрабатывать отправку идентификатора текущего чата для вас, все, что вам нужно, это идентификатор чата, в который вы хотите отправить сообщение, и затем заменить <id of chat here> этим идентификатором. .

...