Как сломать беседу в ВК

Как можно беседу крашнуть? ВК

Здравствуйте, господа. Есть вопрос. у меня через стрим читается файл и выводится в process.stdout, и оно внутри асинк функции. снаружи вызываю её и в then цепляю коллбек () =>.

вчера в 21:56

Может кто-то знает, есть ли какое то правило линтера или что-то подобное для линтинга кода в markdown блоках в коментариях JSDoc?

вчера в 23:14

Можно использовать nodemon на проде?

04:43 11.12.2022

здравствуйте. У меня есть таймер, который мне нужно сбросить и выполнить его содержимое. Возможно ли это как-нибудь реализовать?

22:47 11.12.2022

Подскажите, получаю юзера с полем password, чтобы сверить с запросом клиента. Как мне при отправке ответа клиенту удалить из user поле password?

22:05 09.12.2022

при проверки версии в терминале( create-react-app —version ) написано что версия react 5.0.1, как обновить?

21:01 09.12.2022

Ребята, посоветуйте, пожалуйста. В качестве первого бэкенд языка голанг или ноду выбрать? Как думаете, где легче работу найти будет без опыта?

РЕЙД БОТ ВК на Python3 | Спам 2021 / лаги бесед

04:05 08.12.2022

Уважаемые, какие у вас будут методы решения задачи поиска постов по тегам в порядке уменьшения количества совпадающих? Лично я например массив из пяти тегов (поисковых) превра.

21:25 07.12.2022

Можно ли написать настройку(например eslint) в package.json ,а не в конфиг-файлах(.eslintrc)?

23:10 07.12.2022

А в express-session сессия слетает при повторном запросе на сервер? Ибо я логинюсь, во время логина записывается сессия, потом обновляю страницу и пытаюсь получить результаты.

Источник: telq.org

Символы, которые ломают форумы, чаты, сообщения и комментарии

Несколько неожиданностей принес мне релиз моего веб-приложения MathTasks . О некоторых из них я уже написал в статье «Баги, лаги и говнокод — первые результаты работы моего сайта» . Но это ещё не всё, выскакивают новые сюрпризы. Один из таких вынесен в заголовок статьи.

На моём сайте пользователь с ником Beanskers печатал «волшебные» символы, которые ломали визуальную часть блока комментариев. Он, к слову, указал об этом в ошибках (за это ему отдельное спасибо!) Я комментарии удалил, но как решить проблему не придумал сразу. Сегодня, на второй день, я всё же закрыл эту брешь.

Что же это за символы такие? Вместо того чтобы сто раз прочитать о них, лучше увидеть. Вот ссылка на ветку ответов Mail.ru , которая это продемонстрирует (ниже скриншот).

Символы, ломающие чат

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

Еще по теме:  Убрать рекламу в ВК на Айфоне

КАК ВЗЛОМАТЬ БЕСЕДУ ВО ВКОНТАКТЕ ➢ РАБОЧИЙ СПОСОБ

Мой топорный код

Что делает код: проходит по каждому символу в сообщении, проверяет является ли символ ASCII или буквой алфавита, и если не является, то заменяет его на пустое значение. Потом, если сообщение станет пустым, то пишет шуточное сообщение *я хацкер*.

И вроде этот код работает, но сколько там подводных камней и как это будет тормозить, если пользователей будет много и комментариев тоже — большой вопрос. К счастью, ко мне в голову пришло более красивое решение. Я проверил, как отображается страница ответов Mail.ru в разных браузерах, и оказалось, что в Microsoft Edge выглядит всё не так страшно. Отсюда сделал вывод, что решить проблему можно с помощью CSS.

Две строчки решат проблему с тем, что текст вылезает за границы блока:

overflow: hidden;
text-overflow: ellipsis

А интересно следующее: на многих серьезных ресурсах эти «волшебные» символы работают. А на моём, вроде, нет ( вроде, потому что мало ли. Вы всегда можете проверить =D ).

З.Ы. Буду удалять здесь комментарии с волшебными символами. И вообще, не стоит хулиганить. =)

Источник: dzen.ru

Скрипт исключения из беседы VK и не только, написанный на PHP

В этой статье я продолжу рассказывать как писать бота ВК. Когда я задался поиском скрипта для кика из бесед, на удивление я ничего рабочего и годного не нашел. Поэтому в этой статье я расскажу и покажу как сделать своего бота для исключения из бесед VK с помощью PHP 5.6+ и API VK.

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

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

Для работы с API будем использовать библиотеку, ее нужно заливать туда же, где будет ваш скрипт. Создаем файл с названием bot.php и начинаем творить. Как и в прошлый раз создаем ключ для работы с сообщением

Копируем его и переходим к редактированию файла bot.php

Подключаем библиотеку, указываем константы, где укажем ключ сообщества, версию API и ключ для подтверждения сервера.

Теперь составим список задач что наш бот должен уметь:
1) Кик из беседы по команде /kick
2) Проверку на администратора
3) Остальное придумывайте сами 🙂

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

type == ‘confirmation’) < //Если vk запрашивает ключ exit(ACCESS_KEY); //Завершаем скрипт отправкой ключа >$vk->sendOK(); //Говорим vk, что мы приняли callback // Создаем необходиммые переменные $peer_id = $data->object->peer_id; // Узнаем ИД беседы 2000000. $id = $data->object->from_id; // Узнаем ид пользователя который отправляет команду $message = $data->object->text; // Текст самого сообщения if ($data->type == ‘message_new’) < // Если это новое сообщение то выполняем код указанный в условии >

Еще по теме:  Как создать Вконтакте на рабочем столе

В комментарии к коду я оставил описание что есть что, поэтому тут вопросов у Вас возникать не должно. Теперь создаем команду и как-то пытаемся обработать ее:

if ($data->type == ‘message_new’) < // Если это новое сообщение то выполняем код указанный в условии if ($message == ‘/kick’) < $vk->sendMessage($peer_id, «Тут должен быть кик но его еще не доделали»); // Отправляем ответ > >

Да, это лишь статичная команда с одним ответом, нам же нужно понять что сообщение содержит кроме команды еще какие-то аргументы, для этого я буду использовать не совсем стандартное решение как использую в своих ботах (Свой код, увы, не сливаю :-))

Пишем следующий код:

if ($data->type == ‘message_new’) < // Если это новое сообщение то выполняем код указанный в условии if (mb_substr($message,0,5) == ‘/kick’)< // Обрезаем сообщение и сравниваем что получилось $kick_id = mb_substr($message ,6); // еще раз обрезаем и получаем все что написано после /kick_ $vk->request(‘messages.removeChatUser’, [‘chat_id’ => $chat_id, ‘member_id’ => $kick_id]); $vk->sendMessage($peer_id, «id — был исключен :-)»); > >

Если посмотреть на скриншот, можно увидеть дополнительные слова в коде, такие как: str, start, length их не нужно писать, это подсказки IDE (PhpStorm). Это уже действующая команда, давайте проверим.

Подтверждаем адрес сервера

Добавляем в беседу и пробуем кого-нибудь исключить.
Хм, не работает.

Проверяем включили ли мы тип событий который бот должен принимать, если нет, включаем.

Снова не работает

Ну конечно, нужно создать еще одну переменную

$chat_id = $peer_id — 2000000000;

Проверяем:

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

if ($data->type == ‘message_new’) < // Если это новое сообщение то выполняем код указанный в условии if (mb_substr($message,0,5) == ‘/kick’)< // Обрезаем сообщение и сравниваем что получилось $kick_id = mb_substr($message ,6); // еще раз обрезаем и получаем все что написано после /kick_ if($kick_id == «»)< $vk->sendMessage($peer_id, «Вы забыли указать аргумент»); > else < $chat_id = $peer_id — 2000000000; $vk->request(‘messages.removeChatUser’, [‘chat_id’ => $chat_id, ‘member_id’ => $kick_id]); $vk->sendMessage($peer_id, «id — был исключен :-)»); > > >

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

Отлично, давайте упростим немного кик из беседы и создадим мини админку.
Что бы исключать из беседы, нужно понимать в каком виде приходит сообщение при упоминании пользователя [id1|Павел Дуров] нам нужен только ID, получить его можно с помощью функции explode, давайте вернемся в PhpStorm и напишем код:

Еще по теме:  Как удалить из браузера сохраненный пароль и логин ВК


Давайте проверим, будет ли работать наш код:

Отлично, теперь у вас есть свой личный бот, который умеет исключать из бесед, но, если Вам нужен более профессиональный бот с большим функционалом и мощным инструментом администрирования бесед, то советую наш продукт Conference Kot

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

К нашим переменным добавляем новую:

$is_admin = [87444494, 183657]; // создаем массив с ID’s наших будущих админов через запятую
$is_admin = [87444494, 183657]; // создаем массив с ID’s наших будущих админов через запятую $chat_id = $peer_id — 2000000000; if ($data->type == ‘message_new’) < // Если это новое сообщение то выполняем код указанный в условии if (mb_substr($message,0,5) == ‘/kick’)< // Обрезаем сообщение и сравниваем что получилось if (in_array($id, $is_admin)) < // С помощью in_array проверяем схожесть переменной $id с массивом с ID’s $kick_id = mb_substr($message ,6); // еще раз обрезаем и получаем все что написано после /kick_ $kick_id = explode(«|», mb_substr($kick_id, 3))[0]; if($kick_id == «»)< $vk->sendMessage($peer_id, «Вы забыли указать аргумент»); > else < $vk->request(‘messages.removeChatUser’, [‘chat_id’ => $chat_id, ‘member_id’ => $kick_id]); $vk->sendMessage($peer_id, «id — был исключен :-)»); > > else < $vk->sendMessage($peer_id, «У Вас нет доступа к этой команде!»); > > >

Весь код целиком:

type == ‘confirmation’) < //Если vk запрашивает ключ exit(ACCESS_KEY); //Завершаем скрипт отправкой ключа >$vk->sendOK(); //Говорим vk, что мы приняли callback // Создаем необходимые переменные $peer_id = $data->object->peer_id; // Узнаем ИД беседы 2000000. $id = $data->object->from_id; // Узнаем ид пользователя который отправляет команду $message = $data->object->text; // Текст самого сообщения $is_admin = [87444494, 183657]; // создаем массив с ID’s наших будущих админов через запятую $chat_id = $peer_id — 2000000000; if ($data->type == ‘message_new’) < // Если это новое сообщение то выполняем код указанный в условии if (mb_substr($message,0,5) == ‘/kick’)< // Обрезаем сообщение и сравниваем что получилось if (in_array($id, $is_admin)) < // С помощью in_array проверяем схожесть переменной $id с массивом с ID’s $kick_id = mb_substr($message ,6); // еще раз обрезаем и получаем все что написано после /kick_ $kick_id = explode(«|», mb_substr($kick_id, 3))[0]; if($kick_id == «»)< $vk->sendMessage($peer_id, «Вы забыли указать аргумент»); > else < $vk->request(‘messages.removeChatUser’, [‘chat_id’ => $chat_id, ‘member_id’ => $kick_id]); $vk->sendMessage($peer_id, «id — был исключен :-)»); > > else < $vk->sendMessage($peer_id, «У Вас нет доступа к этой команде!»); > > >

Проверим:

Скачать архив с библиотекой и исходным кодом (требуется регистрация на сайте)

Внимание! У Вас нет прав для просмотра скрытого текста.

  • Сергей Котов
  • 21.02.2019
  • 31 533
  • 29
  • 17

Источник: kotoff.net

Рейтинг
( Пока оценок нет )
Загрузка ...