При получении сообщения в аргумент функции обратного вызова или callback приходит объект типа Message, в котором есть свойство-объект chat, а у него в свою очередь есть свойство id. То есть, получить chatID, чтобы записать его в объект пользователей, можно, например, при получении команды /start (она приходит в любом случае, если пользователь начинает общение с ботом).
Выложите исходники на гитхаб. Сразу станет понятно, как организован файл с вопросами и вариантами ответов, где лежат изображения и т. д.
Расскажите, как деплоили в AWS, почему решили взять EC2, а не Lambda.
К сожалению, "подробная инструкция" сейчас выглядит вот так:
Это немножко другое место (не хабр).
Телеграм-бот сам по себе не рокет сайенс, но зато как пример того, что из чего-то простого и давно уже всем понятного можно по прежнему сделать что-то нетривиальное.
Как по мне, это тот самый момент, когда важна форма, а не содержание.
Вот я например такой персонаж, но конфликты не решаю, а создаю и ок )))