python273 / vk_api

Модуль для создания скриптов для ВКонтакте | vk.com API wrapper
https://pypi.org/project/vk-api/
Apache License 2.0
1.33k stars 321 forks source link

Как через VkLongPoll получить ответ на сообщение с эвента? #226

Closed ghost closed 5 years ago

ghost commented 5 years ago

Я хочу чтоб мой бот срабатывал когда пишут /bot в ответ на сообщение. screenshot 17 Как мне получить это сообщение? (123 на скриншоте)

evtn commented 5 years ago

Из объекта сообщения достаёте ["fwd_messages"][0]["text"], тут всё очевидно

ghost commented 5 years ago

Как именно?

    for event in longpoll.listen():
        # event.chatid==135
        if event.type == VkEventType.MESSAGE_NEW:
            #print(vk.messages.getById(message_ids=event.random_id))
            print(dir(vk.messages.getById(message_ids=event.message_id).get))
            print(dir(vk.messages.getById(message_ids=event.message_id).get()))
            #print(event["fwd_messages"][0]["text"])

Неробит чет :((

ALEXREDX commented 5 years ago

это не fwd_messages будет а reply_message

ghost commented 5 years ago

Что именно?

print(event["reply_message"][0]["text"])
ALEXREDX commented 5 years ago
    for event in longpoll.listen():
        if event.type == VkEventType.MESSAGE_NEW:
            if event.text == '/bot':
                print(vk.messages.getById(message_ids=event.message_id)['items'][0]['reply_message']) #если это ответ на сообщение
                print(vk.messages.getById(message_ids=event.message_id)['items'][0]['fwd_messages'][0]) #если это пересланное сообщение

Пример получения reply и fwd сообщения:

def reply_or_fwd(i):
    return i['reply_message'] if 'reply_message' in i else i['fwd_messages'][0] if i['fwd_messages'] else None

print(reply_or_fwd(vk.messages.getById(message_ids=event.message_id)['items'][0]))