Author Topic: Протокол VKontakte  (Read 921030 times)

0 Members and 14 Guests are viewing this topic.

Offline MIR

Re: Протокол VKontakte
« Reply #1380 on: 31 12 2018, 18:40:21 »
   

3.7. Расширеный фильтр списка участников беседы

В каком смысле?

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


   
Цитата: MIR от 28 12 2018, 17:23:59
    4. Исправление бага "Неизвестный контакт"
Какого бага?
Когда ктото тебе пересылает сообщения с юзерами которые отсутствуют у тебя в КЛ, частенько вместо имени этих юзеров отображается надпись "Неизвестный контакт"
Тоже самое иногда происходит когда тебе первый раз начинает писать юзер отсутствующий у тебя в контактах, и его имя появляется только после того как ты ему отправляеш ответное сообщение

   

Цитата: MIR от 28 12 2018, 17:23:59

    3.1. Возможность добавлять или удалять за раз несколько юзеров.

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


   

Цитата: MIR от 28 12 2018, 17:23:59

    3.3. Возможность удалять из беседы людей которые сами из неё вышли (чтобы не могли зайти обратно). Технически такая возможность есть и всякие ВК боты используют такую фичу.

Аналогично. Техническая возможность вернуться в чат есть, а вот выбросить пользователя насовсем - не уверен.
Вот https://vk.com/dev/messages.removeChatUser
Этот способ прокатывает даже на тех кто сам вышел из бесед

К томуже это даёт возможность добавить ещё три фичи:
1. Вернуть юзера который вышел из беседы обратно в неё - удалив его и снова добавив.
2. Запретить юзеру покидать беседу - если он из неё выходит, то миранда автоматически производит действие выше и таким образом юзер не сможет выйти из беседы пока не удалиться из друзей.
3. Выкинуть из беседы навсегда - выкидывает юзера из беседы и в дальнейшем мониторит список участников. Если юзер снова зашол в беседу по ссылке или его ктото добавил - миранда автоматически его выкидывает из беседы.

   

Цитата: MIR от 28 12 2018, 17:23:59

    3.2. Отображение фантомных юзеров (тех кто хоть раз был в данной беседе), с пометками сам вышел или его удалили и кто удалил и когда.

Есть ощущение, что API не позволяет.
API ВК или Миранды?
« Last Edit: 31 12 2018, 20:08:52 by MIR »
 

Offline Apollo2k4

Re: Протокол VKontakte
« Reply #1381 on: 31 12 2018, 20:59:54 »
API ВК или Миранды?
ВК
«Все глупости совершаются с серьёзным выражением лица» © Кён «Меланхолия Сузумии Харухи»

Правильно заданный вопрос – 50% решения.
Правила постинга
 

Offline MIR

Re: Протокол VKontakte
« Reply #1382 on: 31 12 2018, 22:52:56 »
ВК

Вроде нет, на днях погуглю, может и есть какието варианты.

Эту фичу можно зделать средствами миранды, например анализом истории беседы на сервере и анализом событий беседы в реальном времени когда Миранда запущена. Но в этом случае есть небольшие ограничения - нельзя будет узнать инфу об ушедших юзерах которые вышли до того как тебя добавили в беседу, но это не слишком важно.

===============
Скину сюда ещё инфу по другой фиче, вдруг кому пригодится, для себя Я зделал именно так, поскольку смотрится лучше :)

Как заменить текстовые системные сообщения в ВК на графические значки - добавляем в файл конфига набора смайлов следующий текст:
Code: [Select]
Smiley* = "edit.png", 0 , "Изменённое%%_%%сообщение%%_%%(обновлено%%_%%" , "Изменённое сообщение"
Smiley* = "src.png", 0 , "Исходное%%_%%сообщение:" , "Исходное сообщение"
Smiley* = "del.png", 0 , "Отправитель%%_%%удалил%%_%%это%%_%%сообщение%%_%%в%%_%%" , "Удалённое сообщение"
Не забывая при этом указать правильные имена картинок которые должны находиться в тойже папке что и файл конфига смайлов.

Вариант через langpack_russian.txt лучше не использовать, поскольку постоянно будут происходить ложные обновления файла.
« Last Edit: 31 12 2018, 23:05:19 by MIR »
 

Offline Apollo2k4

Re: Протокол VKontakte
« Reply #1383 on: 31 12 2018, 23:43:20 »
Эту фичу можно зделать средствами миранды, например анализом истории беседы на сервере и анализом событий беседы в реальном времени когда Миранда запущена
Я думаю, что можно будет быстро упереться в лимиты или «получить по шапке» от ВК за подозрительную активность. Тут нужно изучать как это реализовано в API и выяснять можно ли так делать.
«Все глупости совершаются с серьёзным выражением лица» © Кён «Меланхолия Сузумии Харухи»

Правильно заданный вопрос – 50% решения.
Правила постинга
 

Offline MIR

Re: Протокол VKontakte
« Reply #1384 on: 01 01 2019, 11:10:10 »
Я думаю, что можно будет быстро упереться в лимиты или «получить по шапке» от ВК за подозрительную активность. Тут нужно изучать как это реализовано в API и выяснять можно ли так делать.
Если постоянно принудительно удерживать юзеров в беседе то возможно, но за всё остальное врятли.
 

Offline Elzor

Re: Протокол VKontakte
« Reply #1385 on: 01 01 2019, 13:58:39 »
Скажу сразу: делать из клиента обмена сообщений некоторое подобия бота-администратора для чатов - это не тот вектор развития, который мне интересен, и который я буду реализовывать. Но я принимаю патчи, да. И мне думается, что-то из хотелок в этой области можно реализовать через MirLua без внесения изменений в плагин-протокол.

Начинаеш набирать имя юзера и в списке остаются только те чьи имена совпадают с набраным текстом. Тоже самое и по другим критериям, дата добавления в чат, ID контакта, юзеры онлайн, юзеры в друзьях и т.д.
Потребует внесения изменений в *SRMM.
Когда ктото тебе пересылает сообщения с юзерами которые отсутствуют у тебя в КЛ, частенько вместо имени этих юзеров отображается надпись "Неизвестный контакт"
Возможно, после перехода на последнюю версию апи этот неприятный момент решится. На текущей версии, в общем случае, невозможно получить данные о таких отправителях, не послав дополнительный запрос и не заморозив очередь сообщений до получения ответа.
Тоже самое иногда происходит когда тебе первый раз начинает писать юзер отсутствующий у тебя в контактах, и его имя появляется только после того как ты ему отправляеш ответное сообщение
Аналогично.
Вот https://vk.com/dev/messages.removeChatUser
Этот способ прокатывает даже на тех кто сам вышел из бесед
Выбрасывание пользователя и сейчас работает через это. Что не мешает им при желании возвращаться.
К томуже это даёт возможность добавить ещё три фичи:
Именно про это я писал в самом начале своего поста. К слову, такие фокусы попахивают далеко не мандаринами.
Цитата: MIR от 31-12-2018, 23:40:21

    API ВК или Миранды?

ВК
Через API можно получить только список пользователей в чате на текущий момент.  Насчет "миранда сама следит за тем, кто приходил, кто уходил, кто кого куда послал" - см. самое начало поста.
Как заменить текстовые системные сообщения в ВК на графические значки - добавляем в файл конфига набора смайлов следующий текст:
Это неплохая идея, ее в принципе можно реализовать и на уровне самого плагина. Но после перехода на свежее API.
 

Offline MIR

Re: Протокол VKontakte
« Reply #1386 on: 01 01 2019, 14:57:07 »
Цитата: MIR от 31 12 2018, 18:40:21

    Вот https://vk.com/dev/messages.removeChatUser
    Этот способ прокатывает даже на тех кто сам вышел из бесед

Выбрасывание пользователя и сейчас работает через это. Что не мешает им при желании возвращаться.
Самостоятельно они вернуться после этого не могут, если у них нет корректной ссылки на чат (vk.me/join/...) или их ктонибуть не добавит заново.

С MirLua поэксперементирую, этот плагин пока не изучал, посмотрю что можно зделать.

Ещё как вариант langpack_russian.txt можно попробовать подправить, но ХЗ как будет работать.

Вася пупкин вышел <a href="https://vk.com/dev/messages.removeChatUser?params[chat_id]=Ид_чата&params[user_id]=Ид_юзера&params[v]=5.92">Выкинуть насовсем</a>

Пётр Петров пригласил(а) пользователя Иван Иванов <a href=...>Выкинуть</a>

Пётр Петров выкинул(а) пользователя Иван Иванов <a href=...>Вернуть</a>

 

Offline Elzor

Re: Протокол VKontakte
« Reply #1387 on: 01 01 2019, 15:01:30 »
Самостоятельно они вернуться после этого не могут, если у них нет корректной ссылки на чат (vk.me/join/...) или их ктонибуть не добавит заново.
Или если мирандой не пользуются  ;D

но ХЗ как будет работать.
Никак не будет работать: лог чата ссылки поддерживает только в натуральном виде - как адреса, без всяких <a>, [url] и т.д.
« Last Edit: 01 01 2019, 15:46:32 by Elzor »
 

Offline MIR

Re: Протокол VKontakte
« Reply #1388 on: 02 01 2019, 12:31:56 »
Или если мирандой не пользуются  ;D
А разве на миранде есть какойто способ вернуться в беседу из которой тебя выкинули?
 

Offline Elzor

Re: Протокол VKontakte
« Reply #1389 on: 02 01 2019, 16:04:30 »
MIR, вроде как дважды ткнуть на чат (он в оффлайне будет) в клисте.
 

Offline MIR

Re: Протокол VKontakte
« Reply #1390 on: 02 01 2019, 23:36:34 »
MIR, вроде как дважды ткнуть на чат (он в оффлайне будет) в клисте.

Это работает только если сам из чата вышел, а если тебя выкинули - не прокатывает(

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

Offline dartraiden

Re: Протокол VKontakte
« Reply #1391 on: 03 01 2019, 00:00:54 »
Для этого нужно сначала глобально в Миранде научиться хранить историю чатов в базе. Это большая работа.  Сейчас история хранится в текстовом файле в профиле (если в настройках плагина сообщений включена запись истории) и её надо там и смотреть.

Причём, я до сих пор не уверен, что хранить историю чатов в базе - вообще хорошая идея. Если её складывать и складывать, база будет раздуваться и раздуваться. А если хранить только N последних записей... ну, не знаю. Вот за что бы я расцеловал разработчиков, так это за пункт "Открыть историю" (тот самый текстовик) в контекстном меню чата в клисте. А то лезть руками в профиль за текстовиком как-то напрягает.
 
The following users thanked this post: Elzor

Offline Elzor

Re: Протокол VKontakte
« Reply #1392 on: 03 01 2019, 09:37:31 »
Это работает только если сам из чата вышел, а если тебя выкинули - не прокатывает(
Хм, действительно.
Кстати тут надо недоработку одну исправить - если тебя выкинули из чата, то ты не можеш открывать окно этого чата в миранде, чтобы например историю чата просмотреть.

Вот за что бы я расцеловал разработчиков, так это за пункт "Открыть историю" (тот самый текстовик) в контекстном меню чата в клисте.

Ограничение миранды: нельзя открыть оффлайн комнату. Можно, наверное что-то с этим придумать, но я не стал, поскольку хистори удобнее смотреть не в комнате и не в .txt, а на сайте (можно просто ткнуть "Профиль на сайте" из контекстного меню).

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

Причём, я до сих пор не уверен, что хранить историю чатов в базе - вообще хорошая идея.
Почему? Большая база, сама по себе, - это не хорошо и не плохо, важна скорость чтения и записи, а с этим особых проблем вроде особых нет. Во всяком случае у меня есть контакты с хистори по 200 тыс. сообщений - и никаких проблем с ними. Да и всякие телеграммы нормально с большими историями работают (хотя, может быть, они ее динамически подгружают).
 

Offline MIR

Re: Протокол VKontakte
« Reply #1393 on: 03 01 2019, 11:50:23 »
Причём, я до сих пор не уверен, что хранить историю чатов в базе - вообще хорошая идея. Если её складывать и складывать, база будет раздуваться и раздуваться.
В идеале это две базы зделать - одна основная (чисто конфиг), другая чисто под историю. И ту что под историю разделить на сжатые блоки данных, которые будут распаковываться только по запросу, что значительно сэкономит место, поскольку обычно ты листаешь не больше 100 последних сообщений истории.
 

Offline dartraiden

Re: Протокол VKontakte
« Reply #1394 on: 03 01 2019, 16:42:38 »
Я просто помню, что в 32-битной версии был лимит на размер базы...