Как отредактировать (изменить) отправленное сообщение Вконтакте.

Примечание: это гостевой пост. Статья написана одним из читателей блога.

Здравствуйте. Сегодня мы научимся изменять дату отправки личных сообщений в социальной сети ВКонтакте. Хочу сказать сразу, что я не рассказываю что-то новое. В интернете полно аналогичных методов и я сам какие-то куски кода брал оттуда. Поэтому, не судите строго.

Итак, во первых, нам нужно иметь полный доступ к двум аккаунтам ВК. Например, первый аккаунт Ваш, а второй фэйковый. Во вторых, Вы должны иметь хоть какие-то азы в программировании. Но не волнуйтесь. Большую часть работы сделаю я сам. Все способы являются легкими и быстрыми в исполнении из-за «дыр» в данной социальной сети. Однако, нет гарантий, что каждый метод у Вас будет работать. Но хоть один точно сработает.

Первый способ. Метод вложенной переписки.

Алгоритм : создаем переписку, редактируем, меняем дату, отсылаем назад в виде пересылки.
Самым обычным способом, создаем переписку между двумя аккаунтами ВКонтакте. Подключаем каждый аккаунт к API. Для этого достаточно перейти по данной ссылке и разрешить сбор информации с аккаунта:

https://oauth.vk.com/authorize?client_id=3245775&redirect_uri=http://api.vk.com/blank.html&scope=messages&display=page&response_type=token

В следствии, приложению будут доступны все данные пользователя. Не забудьте запомнить свой токен.

# -*- coding: utf-8 -*- import codecs import ConfigParser import datetime import json import sys import urllib2 from urllib import urlencode import vk_auth def _api(method, params, token): params.append(("access_token", token)) url = "https://api.vk.com/method/%s?%s" % (method, urlencode(params)) return json.loads(urllib2.urlopen(url).read())["response"] # read config values Config = ConfigParser.ConfigParser() Config.read("config.ini") login = Config.get("auth", "username") password = Config.get("auth", "password") messages_id = Config.get("messages", "chat_id") messages_type = Config.get("messages", "chat_type") app_id = Config.get("application", "app_id") # some chat preparation if messages_type == "interlocutor": is_chat = False elif messages_type == "chat": is_chat = True else: sys.exit("Messages type must be either interlocutor or chat.") # auth to get token try: token, user_id = vk_auth.auth(login, password, app_id, "messages") except RuntimeError: sys.exit("Incorrect login/password. Please check it.") sys.stdout.write("Authorized vk\n") # get some information about chat selector = "chat_id" if is_chat else "uid" messages = _api("messages.getHistory", [(selector, messages_id)], token) out = codecs.open("vk_exported_dialogue_%s%s.txt" % ("ui" if not is_chat else "c", messages_id), "w+", "utf-8") human_uids = ] # Export uids from dialogue. # Due to vk.api, start from 1. for i in range(1, 100): try: if messages[i]["uid"] != human_uids: human_uids.append(messages[i]["uid"]) except IndexError: pass # Export details from uids human_details = _api("users.get", [("uids", ",".join(str(v) for v in human_uids))], token) human_details_index = {} for human_detail in human_details: human_details_index] = human_detail def write_message(who, to_write): out.write(u"[{date}] {full_name}:\n {message} \n\n\n".format(**{ "date": datetime.datetime.fromtimestamp(int(to_write["date"])).strftime("%Y-%m-%d %H:%M:%S"), "full_name": "%s %s" % (human_details_index["first_name"], human_details_index["last_name"]), "message": to_write["body"].replace("", "\n") })) mess = 0 max_part = 200 # Due to vk.api cnt = messages sys.stdout.write("Count of messages: %s\n" % cnt) while mess != cnt: # Try to retrieve info anyway while True: try: message_part = _api("messages.getHistory", [(selector, messages_id), ("offset", mess), ("count", max_part), ("rev", 1)], token) except Exception as e: sys.stderr.write("Got error %s, continue...\n" % e) continue break try: for i in range(1, 201): write_message(message_part[i]["uid"], message_part[i]) except IndexError: break result = mess + max_part if result > cnt: result = (mess - cnt) + mess mess = result sys.stdout.write("Exported %s messages of %s\n" % (mess, cnt)) out.close() sys.stdout.write(‘done!\n")

Далее, для простоты, поставим одну и ту же дату на все сообщения. Я не претендую на оптимизированный код и очевидно, что его можно ужать, но я хочу продемонстрировать как можно подробную работу парсера с подобными XML:

While (true) { doc = XDocument . Load("https://api.vk.com/method/messages.getHistory.xml?uid=12345&offset=" + m + "&count=200&access_token=" + token); foreach (XElement el in doc . Root . Elements()) { if (el . Name . ToString() == "message") { foreach (XElement el_msg in el . Elements()) { if (el_msg . Name == "date") { foreach (XElement el_date in el_msg . Elements()) { if (el_date . Name == " 1403320931") { el_date . Name = "1403429673"; // то есть меняем дату на любую другую k++; } } } } } } m += 200; }

Я думаю, что основная идея здесь понятна. Осталось вернуть сообщения на сервер. Для этого нам понадобиться функция message.send(). Объект message должен обратиться к полю date, но сервер ВКонтакте устанавливает время у себя на сервере сам. Однако, если мы отправим сообщения как вложенную переписку — все получиться.

Наши письма должны имеют вложенную структуру, значит надо вызывать метод парсинга рекурсивно. Но в Java можно поступить проще. Всё, что находиться внутри цикла forEach, мы будем помещать в отдельный класс. В следствии, в методе accept будет происходить всё то, что было бы в теле цикла. В VkApiMessage есть поле fwd_messages. В нем будет хранится список из объектов пересланных сообщений VkApiMessage:

Private static class MessageConsumer implements Consumer { @Override public void accept(VKApiMessage message) {} } messages.stream().forEach(new MessageConsumer()); if (!message.fwd_messages.isEmpty()) { System.out.println("

"); message.fwd_messages.forEach(new MessageConsumer()); System.out.println("
"); }

В общем, результат выглядит ничем не хуже оригинала в ВК:

Второй способ. Метод изменения GMT на сервере.

Алгоритм : меняем время на сервере, отправляем сообщения.

Второй метод несколько легче первого, так как нам не нужно старые(но измененные) сообщения возвращать назад на сервер (кстати, иногда, это не получается сделать из-за “глупого” сервера). Второй же способ работает более надежно.

Здесь нам не нужны готовые сообщения. Мы их создадим сами и перешлем на сервер, предварительно изменив GMT (часовой пояс). Для таких целей нам понадобиться абузоустойчивый VPS. Желательно на базе CentOS.

Сначала, меняем время и дату на сервере. Опять же, это можно сделать любым другим способом. Можно так:

# mv /etc/localtime /etc/localtime.bak ln -s /usr/share/zoneinfo/Europe/USA /etc/localtime # date MMDDhhmm # date 03182015 # man date

Настраиваем наш сервер под данные сервера ВК:
IP:87.240.182.185
Browser: Mozilla/5.0 (compatible; vkShare; +http://vk.com/dev/Share)
Port: 36035
Host: srv185-182-240-87.vk.com

Не забываем про регистрация на API (см. Первый способ). Отправляем сообщения через уже знакомую функцию message.send().

Объект message, описывающий личное сообщение, возвращает поле “date” — дата отправки сообщения в формате unixtime. Обратите внимание на фразу “дата отправки”. Ничего не говорится про дату получения сообщения сервером ВКонтакте.

Вот и все. Результат аналогичный первому. Все очень просто.

Третий способ. Сниффер трафика.

Алгоритм : качаем/покупаем сниффер, радуемся.
Самый простой метод. Но, к сожалению, методика зависит от качества программы, которую мы качаем из интернета.
Итак, можно просто попробовать скачать/купить что-то типо Charles, словить запрос, редактировать его (дату) и дублировать. Программа перехватывает пакет, меняет время отправки внутри пакета и отправляет контакту. Сервис ВК получает уже заданное unixtime сообщение. Таких снифферов в интернете куча. Но качественных и бесплатных найти сложно. Однако, они стоят не так дорого.

Как Вы уже поняли, отправить личное сообщение задним числом не составляет труда. Я не написал выше полностью все коды, а только самые необходимые и сложные. Дописать остальные, думаю, не составит труда. Большое спасибо.

Как изменить сообщение?

Изменить отправленное сообщение в личной переписке можно в течение суток (24 часов) с момента его отправки.

  1. Нажми на сообщение или наведи на него курсор. В мобильном приложении надо просто нажать на сообщение один раз, держать палец не нужно.
  2. Выбери пункт «Редактировать» или нажми кнопку редактирования, она выглядит как карандаш:

В полной версии ВК:

В мобильной версии ВК:

Затем отредактируй сообщение и нажми галочку:

Изменения сохранятся. Вот и все! Ты отредактировал сообщение. При необходимости можно повторить.

В полной версии ВК можно сделать так:

  1. Убедись, что курсор стоит в поле ввода и мигает (если нет — нажми пробел).
  2. Нажми стрелку вверх на клавиатуре ().
  3. Включится редактирование твоего последнего отправленного сообщения.
  4. Отредактируй сообщение и нажми Ввод (Enter).

Это можно делать, даже если на твое сообщение уже ответили.

Узнает ли человек, что сообщение отредактировано?

Рядом с сообщением появится пометка (ред.) — то есть «редактировано». Она как раз и нужна для того, чтобы получатель понял, что сообщение было изменено. Пометку (ред.) никак не убрать:

Кроме того, если человек включил себе функцию уведомлений о новых сообщениях по электронной почте, то первый вариант сообщения он все равно увидит, если зайдет в почту.

Изменять сообщения можно только через сайт ВК? А через приложение на телефоне?

Изменить отправленное сообщение в личке можно и в полной, и в мобильной версии сайта ВКонтакте, а также в официальных мобильных приложениях ВК на Айфоне и Андроиде. В мобильных приложениях эта возможность появилась позже, и если у тебя стоит старая версия, то в ней возможности редактирования может не быть. Нужно обновить приложение .

Как редактировать сообщения, комментарии, ответы в группах?

Почти так же. В полной версии ВК нужно навести курсор на сообщение и нажать кнопку карандаша. В мобильной — нажать на бледную стрелочку в правом нижнем углу сообщения, откроется меню, затем выбрать пункт «Редактировать». И еще это можно сделать в приложении на телефоне. В мобильном приложении ВК для открытия меню просто нажать на сообщение. Изменив сообщение, нажать «Сохранить».

Ответы на прочие вопросы по редактированию сообщений в ВК

В течение какого времени можно изменять отправленное сообщение?

В течение суток (24 часов) с момента отправки, но не с момента последнего редактирования. После истечения срока сообщение уже никак не изменить.

Сколько раз можно редактировать сообщение?

Сколько захочешь.

Можно ли отредактировать прочитанное сообщение?

Да, можно. Точно так же, как и непрочитанное. В любом случае рядом с ним появится пометка (ред.) — то есть «редактировано». Прочитанное сообщение изменится, но останется «прочитанным».

Станет ли прочитанное сообщение непрочитанным, если я его отредактирую?

Нет, останется выглядеть прочитанным.

Можно ли отредактировать и полностью стереть (удалить) сообщение?

Можно ли изменить чужие сообщения?

Конечно же, нельзя.

Как отредактировать сообщение, если тебя занесли в ЧС?

Почему не могу изменить сообщение?

Возможные причины:

  1. Прошло более суток (24 часов) с момента, как ты его отправил. По истечении этого времени редактировать сообщение уже нельзя.
  2. Ты пытаешься изменить сообщение в старой версии мобильного приложения на телефоне, а там такой возможности еще не было. Обнови приложение или зайди в свой ВК через мобильную или полную версию сайта.

Зачем вообще нужно редактирование сообщений?

Чтобы можно было исправить какую-нибудь глупую опечатку или что-то перефразировать, если написал и подумал, что собеседник тебя не вполне поймет.

Как посмотреть, какое было сообщение до редактирования?

Никак, но если у тебя включены уведомления о новых сообщениях на почту, то туда придет первый вариант сообщения.

Как узнать, во сколько было отредактировано сообщение?

Наведи курсор на пометку (ред.) — появится всплывающая подсказка, в которой будет указано время редактирования сообщения.

Как сохранить исходный вариант сообщения на случай, если человек его отредактирует?

Если ты волнуешься, что собеседник изменит свое сообщение в личных интересах, выдели его и перешли самому себе (нажав кнопку «Переслать», найди себя в диалогах по имени). Теперь, даже если человек его отредактирует, у тебя будет копия оригинала с датой и временем.

Порой пользователям ВК нужно изменить отправленный текст, написанный с ошибкой в результате своей невнимательности или личных обстоятельств. Сделать это очень просто, а редактировать собственные письма можно многократно. Функция доступна для полной и мобильной версии сайта.

Редактирование сообщений в полной версии ВК

Изменить исходящее письмо поможет легкая инструкция. Ознакомьтесь с ней:

  1. Выберете раздел с диалогами.
  2. Наведите курсор на свое письмо, чтобы справа появился нарисованный карандаш.
  3. Возле карандаша всплывет подсказка «Редактировать». Нажмите на него.
  4. Редактируйте текст, при желании добавьте медиафайл, фото или смайлик.
  5. Нажмите на синюю галочку справа или клавишу Enter для отправки. Для отмены нажмите на крестик.
  6. В результате успешного редактирования, возле отправленного письма будет пометка «(ред.)», с указанием даты и времени изменения.

В мобильной версии

Необходимо отметить важную деталь: мобильная версия сайта - это не мобильное приложение от ВК, а упрощенный вариант для планшетов и телефонов. Следуйте инструкции:

  1. Выберете раздел с диалогами.
  2. Кликните на нужное письмо.
  3. Возле кнопки «Переслать» нажмите на изображение карандаша.
  4. Измените текст, если нужно добавьте медиафайл.
  5. Нажмите на галочку для отправки.
  6. Возле отправленного текста будет стоять подпись «Отредактировано», без даты и времени.

В отличие от полной версии соцсети, здесь нет возможности отменить редактирование непосредственно в поле для ввода. Т. е. если вы уже изменили текст, но передумали его оправлять, то просто смените раздел сайта, чтобы изменения не сохранились. Еще одна особенность: для изменения сообщения Вконтакте, его нужно выделить нажатием. Если вы случайно выделите два сообщения, то изображение с карандашом будет отсутствовать.

Важные моменты

Чтобы правильно пользоваться функцией ВК, необходимо знать несколько важных правил:

  1. Нельзя редактировать старые отправленные сообщения.
  2. Даются всего сутки после отправки, для удаления и редактирования.
  3. Изменяются как прочитанные, так и непрочитанные письма.
  4. Первая версия отредактированного текста хранится на электронной почте, если профиль настроен на оповещения.
  5. Чужие сообщения редактировать невозможно.
  6. В официальном мобильном приложении ВК данная функция пока отсутствует.
  7. Пометка об изменении видна собеседнику в диалоге.

Пользователи наконец-то дождались изменений в механизме отправки личных сообщений Вконтакте. Теперь уже отправленный текст можно изменить. На редактирование сообщения дается 24 часа. Давайте разбираться, как это сделать.

Как изменить отправленное сообщение Вконтакте

Не позднее, чем 24 часа после отправки, вам нужно найти нужное послание, выделить его и перейти в режим редактирования. Давайте разберем два варианта — если мы сидим Вконтакте с компьютера и через мобильное приложение.

С компьютера

Идем в раздел «Сообщения» , находим и открываем нужный диалог. Пролистаем отправленные сообщения за последний день, и находим нужное. Наведите на него курсор мыши — оно должно выделиться. В правом верхнем углу появится значки — щелкаем по иконке с карандашом, для перехода в режим редактирования.

Сообщение откроется в форме — вы можете вносить изменения. Здесь можно вставлять или удалять графику, аудио и видео контент. Когда закончите, нажмите на галочку, для сохранения.

У вашего собеседника тоже будет отображаться новая версия.

С мобильного приложения

Давайте научимся делать ту же самую процедуру, используя мобильное приложение Вконтакте.

Переходим в нужный диалог, и находим отправленное сообщение. В мобильной версии также действует ограничение в 24 часа, на внесение правок. Нажмите на нужное сообщение.

В появившемся меню выберите пункт «Редактировать» .

Вы перейдете к режиму внесения правок. Сделайте это, и нажмите на галочку для сохранения.

После этого у вас и у вашего собеседника, будет отображаться отредактированная версия сообщения.

Пару слов про временные ограничения

Имейте ввиду, если вы протяните дольше суток, то возможность внесения правок у вас пропадет. Вы легко можете это проверить. Выберите любое сообщение, которое было отправлено ранее 24 часов. При наведении на него, вы не увидите иконки для перехода в режим редактирования.

Поэтому не задерживайте с этим.

Заключение

После появления этой функции, миллионы пользователей перестали переживать на тот случай, если по ошибке отправляли в переписке важную информацию. Ждем еще полезных функций от команды Вконтакте.

Вопросы?

Вконтакте

И частично провели настройки ВКонтакте . Перед выполнением дальнейших настроек нашего аккаунта, необходимо еще немного поговорить о разделе “ ”:

1. Для того, чтобы поддерживать живой разговор с Вашей аудиторией, необходимо в настройках стены оставить чекбоксы незаполненными.

2. Важно понимать, что при взломе аккаунта , для его восстановления Вам будет предложено службой поддержки ввести код, который высылается на мобильный телефон. Поэтому, в случае смены мобильного устройства, не забудьте внести его номер в соответствующую графу. Чтобы обезопасить себя от взлома, выбирайте более сложный пароль и чаще его изменяйте.

Итак, наши настройки сделаны, теперь можем обратиться к редактированию страницы . Нажмём одну из кнопок (1) с предложением редактировать.

После нажатия на любую из них открывается панель настроек страницы. В этих настройках можно отредактировать следующие параметры:

1. «Основное» — личные данные, дата рождения, семейное положение, родственники и т.д.

2. «Контакты» — данные для возможного контакта с владельцем аккаунта.

3. «Интересы» — здесь описывается все, что нам интересно и чем увлекаемся.

4. «Образование» — школы и ВУЗы где учились.

5. «Карьера» — где, когда и кем работали.

6. «Служба» — военная служба, если это было в Вашей жизни. В каком месте и какой воинской части её проходили.

7. «Жизненная позиция» — внимательно выбираем из предоставляемых списков то, что ближе нам по своей сути.

Теперь добавим статус (короткая информация) под именем владельца аккаунта (2). Данное место превосходно служит для отображения настроения, взгляда на что либо. Если владелец аккаунта собирается продвигать свой бренд или онлайн-бизнес, то ему это место поможет разместить ссылку на сторонний ресурс – сайт, и этим привлечь потенциальных клиентов или партнеров.

Наши настройки ВКонтакте сделаны. Самое время сделать первую запись – публикацию на стене ВКонтакте . Для этого делаем клик в текстовом окне с надписью «Что у Вас нового?». В этом месте можно поместить текстовое сообщение. Наведя курсор на слово «Прикрепить», открывается подменю, где можно добавить такие файлы, как фото, видео, аудио и другое. Для того чтобы опубликовать текст и приложенный к нему файл, нажимаем на кнопку «Отправить».

И первая публикация появляется на нашей стене.

Если по каким-то причинам Вас не устраивает эта публикация, Вы можете её удалить. Для удаления записи необходимо подвести курсор в правый верхний угол публикации, в этот момент появляется всплывающее окно с надписью “удалить” и крестик, на который и надо нажать.

Мы произвели все настройки ВКонтакте и редактирование нашей . Теперь можно приступать к поиску друзей, добавлять фотографии, видео, аудио, вступать в интересные нам сообщества и вести активную жизнь в самой крупной сети Рунета.

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