Получить message_id из сообщения Telegram - node.js

1

У меня проблема с боттом Telegram, над которым я сейчас работаю. Я получаю сообщения от пользователей в следующем формате:

   update { update_id: 82618016,
   message:
    { message_id: 363,
      from: { id: 22303518, first_name: 'Steve', language_code: 'de-DE' },
      chat: { id: 22303518, first_name: 'Steve', type: 'private' },
      date: 1501501753,
      text: 'j' } }

Когда я хочу получить доступ к идентификатору чата, я могу сделать это без проблем, используя

$.message.chat.id

Как только вы захотите получить message_id или first_name, я получаю "undefined".

$.message.chat.first_name

$.message.message_id

Может ли кто-нибудь помочь мне здесь? Насколько я понимаю, я правильно понял структуру сообщения, поэтому я действительно не знаю, в чем проблема.

заранее большое спасибо

EDIT: Я добавляю немного больше своего кода здесь:

Основной код для бота (включая webhook) заключается в следующем:

initializeBot();

function initializeBot(){

const Telegram = require('telegram-node-bot');
const PingController = require('./controllers/ping');
const OtherwiseController = require('./controllers/otherwise');

const tg = new Telegram.Telegram('MY_TOKEN_IS_HERE', {
    webhook: {
        url: 'https://mutzi-bot.herokuapp.com',
        port: process.env.PORT || 443,
        host: '0.0.0.0'
    }
})

tg.router.when(new Telegram.TextCommand('/ping', 'pingCommand'), new PingController())
    .otherwise (new OtherwiseController());

}

Когда вызывается OtherwiseController, вызывается следующий код (я уменьшил его до сути, чтобы прояснить проблему.

class OtherwiseController extends Telegram.TelegramBaseController {
    handle($){

      console.log($.message.chat.first_name);
      console.log($.message.text);
      console.log($.message.chat.id);
      console.log($.message.message_id);        

    }
}   

Консольный вывод для этого сообщения

update { update_id: 82618020,
   message:
    { message_id: 371,
      from: { id: 22303518, first_name: 'Steve', language_code: 'de-DE' },
      chat: { id: 22303518, first_name: 'Steve', type: 'private' },
      date: 1501509762,
      text: 'hello' } }

было бы:

undefined
hello
22303518
undefined
  • 0
    Не могли бы вы поделиться немного больше вашего кода?
  • 0
    @tashakori Я добавил код. Заранее спасибо.
Показать ещё 6 комментариев
Теги:
telegram
telegram-bot

1 ответ

1
Лучший ответ

Используйте приведенный ниже метод для извлечения ключей вашего json-объекта, затем вы можете получить доступ с помощью соответствующего ключа:

Object.keys($.message.chat);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню