- Messages getconversationmembers не работает
- Почему метод «message.get()» не работает?
- 1 ответ 1
- Сбор данных пользователей беседы Vk
- Как выбрать рандомного пользователя из беседы ВКонтакте?
- [VK BOT] Полезные функции для бота вк (Часть 2)
- Команда ‘созвать всех’
- Регистрации беседы в базе с персональными настройками
Messages getconversationmembers не работает
Для групповой беседы:
2000000000 + id беседы.
Возвращает объект, который содержит следующие поля:
| count integer | число участников беседы. |
| items array | участники беседы. Массив объектов, каждый из которых содержит поля:
|
| profiles array | массив объектов пользователей. |
| groups array | массив объектов сообществ. |
| 917 | Нет доступа к беседе |
В ходе выполнения могут произойти общие ошибки. Их описание находится на отдельной странице.
В объекте приложения в поле type приходят новые значения.
- app — социальное приложение
- game — игра
- site — подключенный сайт
- standalone — отдельное приложение (для мобильного устройства)
- vk_app — VK App приложение
- community_app — приложение сообщества
- html5_game — HTML5 игра
В объекте приложения больше не приходит поле is_html5_app.
Метод messages.getConversationMembers возвращает новую ошибку 917.
Изменения в API опросов:
- Новый формат объекта опроса.
- Метод polls.create поддерживает новые параметры для опросов с мультивыбором и фоном.
В методе groups.getLongPollServer изменился тип поля ts — теперь это string , а не integer .
Метод messages.getChatPreview теперь возвращает максимум 5 участников из чата. Метод messages.getConversationMembers возвращает поле can_kick (boolean) для участников беседы.
В объекте записи на стене для комментариев могут вернуться поля can_close (boolean) и can_open (boolean) .
Источник
Почему метод «message.get()» не работает?
Вопросы:
Почему метод message.get() не работает? Что использовать вместо него?
Как получить историю сообщений от пользователя или беседы, ранее писавшие боту?
Почему messages.getConversations() возвращает только последнее сообщение?
Предыстория:
Столкнулся с проблемой при работе с VK API на Python’е 3. Сделал простого бота по инструкциям (видео на YouTube, статьи различные и т.д.).
На следующий день, бот перестал работать. Происходила ошибка с параметрами метода message.get() (Ошибка №100). Зашел на документацию ВК, стал искать ошибку. Увидел, что метод устарел и понял, что метод лучше не использовать (даже если ошибка не в нем), но не знал что делать.
На просторах Интернета нашел видео, в котором использовался метод messages.getConversations() , но он показался мне менее гибким, т.к. он возвращает информацию о диалогах бота и только последнее сообщение диалога (а предыдуший возвращал список диалогов в месте с сообщениями).
Хештеги: (Написал для поиска по словам)
1 ответ 1
Метод message.get устарел и возможно был заблокирован (а если ещё нет, все равно в не рекомендуется использовать). Вместо него лучше использовать сочетание методов messages.getConversations и messages.getHistory . 1 метод возвращает список диалогов(можно использовать фильтры), 2 возвращает сообщения диалога по его id. Для наглядности выполним следующий код:
Результат (привел в читабельный вид):
На самом деле, метод messages.getConversations дает достаточно много, помимо последнего сообщения.
В нашем случае нам нужен параметр ‘peer_id’ — ID диалога. Кстати, хотел сказать, что в примере только 1 диалог, но их может быть и больше. По этому, мы будем постоянно пользоваться циклом for чтобы последовательно отвечать на сообщения разных диалогов. Теперь вместе с этим методом используем messages.getHistory :
И вот мы вывели на экран списки сообщений из каждого диалога. Далее, вместо того, чтобы выводить сообщения в консоль мы можем отвечать на них, удалять их, пересылать, записывать и т.д. Таким образом мы смогли заменить старый метод сочетанием 2-х новых.
Источник
Сбор данных пользователей беседы Vk
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Сбор данных о правах пользователей на директории на файловом сервере
Есть корпоративный файловый сервер(Win). Есть мой ПК в том же домене. Прав админа у меня нет, но.
Сбор данных пользователей после заполнения формы
Всем привет! Я джуниор ПМ и не могу придумать толковое решение задачи, так как в программировании.
Реализовать сбор и просмотр сообщений пользователей, выбор часто задаваемых вопросов и поиск по ключевым слова
Для гостевой книги, представленной документом в формате HTML, реализуйте следующие операции: а).
Сбор данных из web документа pdf каждый день и собрание базы данных
Добрый день, каждый день медицинская организация публикует отчет о зараженных короновирусом.
Сбор данных
Здравствуйте. Мне нужно сделать систему передачи данных от датчиков на сервер. Есть несколько.
Сбор данных о ПК
Здравствуйте, помогите написать программу, которая собирает данные о ПК, если честно, не понимаю в.
Сбор данных
Не знал куда написать, по-этому написал сюда. В веб программировании не силен, хочу спросить у вас.
Сбор данных
Всем привет Я написал приложение оно собирает всю нужную мне мета данные как мне лучше оправлять.
здравствуйте. делаю сервис по ремонту бытовой техники. задача такая: пользователь создаёт.
Автономный сбор данных
Добрый время суток! На данный момент сбор данных осуществляется с помощью внешнего АЦП плюс.
Источник
Как выбрать рандомного пользователя из беседы ВКонтакте?
А что у вас не получается-то? Ни разу не трогал VK API, но вот же у них в документации всё про этот метод ваш: https://vk.com/dev/messages.getConversationMembers
И в результате он пользователей вам вернёт. Выбирайте случайного и пользуйтесь.
random.choice(users.items)
Вот и будет вам случайный из них.
Такое ощущение, что народ просто натыкается в какой-нибудь мурзилке для хацкеров на тривиальный пример кода VK-бота, у этих хацкеров мгновенно загорается над головой лампочка и начинает жечь. Так жжот, что ни документацию читать ни гуглить не хочется, а хочется сразу запрограммировать идею. После двухнедельных мытарств в поисках ответа на ютубе, в инстаграмме и твиттере методом скролла хакерских тредов с котиками кто-то подсказывает юному гению про этот чудесный ресурс, где всем бесплатно всё делают.
Вот и рождаются такие вопросы «Я ХЗ что-то я вот тут вот написал» (списал) «но не работает, что делатькакбытьпамагите!, чтотасламалося». И ни ошибки, ни сути проблемы, ничего не ясно. Ясно только что автор вопроса скорее всего не вдупляет совершенно НИЧЕГО, и ему придётся рассказывать про арифметику, про то как сложение делать, что такое цифры и какие бывают буквы, чтобы он что-то понял. Ну или чудом угадать что ему, всё таки, надо и написать работающий код, чтоб отстал и ушел.
Источник
[VK BOT] Полезные функции для бота вк (Часть 2)
P.S. Давненько я ничего не писал. Постараюсь не испортить эту статью и сделать всё по красоте, а также побыстрее выпустить 3 часть
Начнем мы с самого простого — это проверка на обращение к боту:
После проверки на тип сообщения
добавляемЧтобы всё работало как надо, нам нужно получить не всю строку $cmd а лишь первое слово из строки, для этого давайте в переменных добавим новую переменную (в bot.php из архива выше этого делать не надо, т.к. там всё это уже подготовлено)Думаю пояснить тут нужно $args, как с ним работать и для чего оно нужно нам:
1) Нужен он нам для получения например id пользователя после команды. Пришла команды !бан id. и под $args[0] будет находиться id.
Или допустим пришла команда !сообщение id. Как дела?, Тут под args[0] — id.. , args[1] — как, $args[2] — дела?, но нам нужно же передать сообщение под args[1 и 2], для этого уберем args[0] и после преобразуем остальное в строку: $get_text = implode(» «, array_slice($args, 1));
Таким образом мы преобразовали $args в строку и убрали от туда id..
Отлично, теперь давайте вернемся к проверки на обращение к боту.. Ой А ведь можно было немного по другому написать команду, чем мы и займемся. А переменные наши еще пригодятся в таком виде
Давайте заменим if(in_array($cmd, [‘бот’, ‘bot’])) < на
if(in_array(mb_strtolower($messages[0]), [‘бот’, ‘bot’])) < Теперь в теле этой проверки просто нужно отредактировать $args, $cmdА теперь добавим интересную вещь. Если вам нужно чтобы бот отвечал только тогда, когда обратились к нему, то после закрывающей скобки добавляемВ итоге у меня получился такой код:
Команда ‘созвать всех’
Для этого нам нужно превратить всю команду в строку и проверить её на текст:Далее нам нужно получить список пользователей и из него отправить уведомление каждому:Вот и готова команда, но давайте добавим интересную штуку как проверка на админ права в беседе
Сделаем это через vk_api.php откройте этот файл и листайте в самый конец скрипта и перед последней скобкой создадим новую функцию с названием isAdmin. Можно просто скопировать и вставить перед ПОСЛЕДНЕЙ скобкой public function isAdmin ($peer_id, $id)
Создали новую функцию с названием isAdmin и принимаемыми переменными (аргументами) id беседы и id пользователя
$chatInfo = $this->request(‘messages.getConversationsById’, [‘peer_ids’ => $peer_id, ‘extended’ => 0]);
Запрос к вк о получении данных о беседе
if($id == $chatInfo[‘items’][0][‘chat_settings’][‘owner_id’] || in_array($id, $chatInfo[‘items’][0][‘chat_settings’][‘admin_ids’])
Произвели проверку на совпадение id пользователя с id администраторов и создателя
Если проверка прошла, то вернули значение true, а иначе false
Объясняю как теперь это использовать в скрипте бота. Вернемся к bot.php (или как у вас называется файл бота)
После проверки на команду ‘Созвать всех’ добавляем проверку if где обратимся к созданной нами функции
Таким образом у нас получиться:
Важно: для следующих команд обязательно нужна база данных
Метод подключения и работы с ней можете использовать свой, однако я буду делать как и ранее через readBeanPHP. Как подключить и настроить можно найти в прошлых статьях, но вкратце:
1) Скачать архив выше
2) Заменить на свои данные в файле db.php
3) Подключить db.php к ваще файлу бота (в архиве он уже подключен к bot.php)
4) Используем как в статье
Также нужно отметить, что для следующей команды нужен vk_api.php который находится в архиве!!
Регистрации беседы в базе с персональными настройками
Чтобы сделать беседам какие-то свои настройки, то заходим в vk_api.php, ищем функцию registrationChat и в редактируем регистрацию в записи для бд.
Теперь нужно сделать смену названия беседы в настройках, если его изменили в беседе
Теперь в скрипте бота после регистрации (и проверки на админку) мы добавим проверку на измену названия
Таким образом мы узнали о действии в беседе, ВАЖНО! в переменных у вас должен быть $chat_act = $data->object->action; А теперь давайте получим настройки для беседы и заменим название беседы на новое. Я использую RedBeanPHP, а вы можете использовать что-то другое, однако в статье всё работает через (связанное с бд) rb.php
В теле создадим новую переменную с настройками беседы
В базе название записано в столбце ‘title’, давайте же получим пришедшее название и заменим его
Далее просто можно уведомить, что новое название было записано в бд
Итоговый код:
В след. части полезных функций:
— Аккаунты пользователей с балансом для игр и перевод денег другим пользователям
— Парочка игр на коины (валюта)
— Перевод коинов
— Команды: онлайн, погода
Источник