У меня проблема с боттом 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
Используйте приведенный ниже метод для извлечения ключей вашего json-объекта, затем вы можете получить доступ с помощью соответствующего ключа:
Object.keys($.message.chat);