prawn-cake / vk-requests

vk.com requests for humans. API library for vk.com
MIT License
158 stars 22 forks source link

Как получить текст сообщения? #21

Closed RussianButman closed 7 years ago

RussianButman commented 7 years ago

С помощью кода readmes = api.messages.get(out=0, count=1, time_offset = 1000) readmesbody = readmes['items']

я получаю [{'id': 7275, 'date': 1495761621, 'out': 0, 'user_id': 326750873, 'read_state': 0, 'title': ' ... ', 'body': 'сообщение'}]

Вопрос: как мне отсюда извлечь body?

ghost commented 7 years ago

Там пустой словарь по идее так что: readmes['items'][0]['body'].

Сорре за оффтоп, @prawn-cake, есть ли какой метод чтобы узнать наличествует ли в группе закрепленный пост?

prawn-cake commented 7 years ago

@RussianButman Ключ items содержит лист сериализованных в json объектов (преобразованных в python dict библиотекой). Поэтому как верно заметил @Ahellko, нужно их вытаскивать из листа.

Если нужно получать список body, то я бы сделал так

resp = api.messages.get(...)
bodies = [msg['body'] for msg in resp['items']]
prawn-cake commented 7 years ago

@Ahellko, у объекта Post есть поле is_pinned. Я не смог найти в документации vk api такого фильтра, но могу предположить, что когда вызываешь метод https://vk.com/dev/wall.get с offset 0, то первыми вернутся закрепленные посты. Это лишь предположение, не проверял.

ghost commented 7 years ago

@prawn-cake да так и есть, нулевой offset это либо закрепленный пост если есть, либо последний.

prawn-cake commented 7 years ago

@Ahellko , да, мне тоже казалось это логичным. Ну вот, тогда твоя проверка есть ли в группе закрепленные посты сводится к тому чтобы получить последнее сообщение со стены и проверить is_pinned свойство.

prawn-cake commented 7 years ago

Думаю, что вопрос закрыт.