Группа вк бот: Вконтакте — Salebot.pro

Бот VK на Python 2020 года с ответами в беседу / Хабр

Я очень долго прочесывал интернет в поисках рабочего варианта бота для ВК, разработанного на Python. Никак не мог найти ни одной нормальной, целой статьи — в одной устаревший метод, в другой непонятные ошибки и так далее…

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

С чего начать?

Начнем с установки необходимых библиотек. Естественно открываем cmd.exe ( в некоторых случаях может понадобиться запустить от имени администратора) и прописываем туда следующее:

pip install vk
pip install vk_api

Мы установили две библиотеки для работы нашего Python-а с сервисом VK.

Теперь запускаем IDLE и начинаем писать код.

import vk_api, vk
from vk_api.keyboard import VkKeyboard, VkKeyboardColor
from vk_api.utils import get_random_id

Объясняю: импортируем установленные ранее библиотеки и модули для работы с ними.

Авторизация
vk_session = vk_api.VkApi(token='#ВСТАВЬ СЮДА ТОКЕН ГРУППЫ СО ВСЕМИ РАЗРЕШЕНИЯМИ')

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

from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType
longpoll = VkBotLongPoll(vk_session, 'ID вашей группы без кавычек')
vk = vk_session.get_api()
from vk_api.longpoll import VkLongPoll, VkEventType

Импортируем модуль longpool для работы с чатами.

Нюансы

Дело в том, что в одной программе нельзя одновременно запустить бота для ответов на ЛС и для работы в беседе, поскольку для этого используются два разных модуля longpool и как только запускается прослушивание longpool-ом на канале «ЛС»(Личные Сообщения) прослушивание другого канала, т.
е. чата недоступно, пока не завершится первый процесс прослушивания. Проще говоря задачи могут выполняться исключительно последовательно, а не параллельно. Поэтому в целом коде я деактивирую часть с ЛС, заключив ее в »’ кавычки.

Теперь импортируем то же самое, но для ЛС.

Lslongpoll = VkLongPoll(vk_session)
Lsvk = vk_session.get_api()

Кнопки

Теперь объявим пару функций для кнопок, которые наш бот в будущем будет выдавать по требованию. К ним мы обратимся вскоре ещё раз.

keyboard = VkKeyboard(one_time=True)
keyboard.add_button('Привет', color=VkKeyboardColor.NEGATIVE)
keyboard.add_button('Клавиатура', color=VkKeyboardColor.POSITIVE)
keyboard.add_line()
keyboard.add_location_button()
keyboard.add_line()
keyboard.add_vkpay_button(hash="action=transfer-to-group&group_id=183415444")

Прием-отправка сообщений из беседы

А теперь будем слушать longpool на предмет новых сообщений. event — переменная в которой будет храниться само сообщение и некоторые данные о нем.

for event in longpoll.listen():
    if event.type == VkBotEventType.MESSAGE_NEW:
if 'Ку' in str(event) or 'Привет' in str(event) or 'Хай' in str(event) or 'Хелло' in str(event) or 'Хеллоу' in str(event):

Перевод того, что выше: Если слово «Привет» или «…» или «…» содержится в переменной event, тогда:

if event.from_chat:
    vk.messages.send(
    key = (''),
    server = (''),
    ts=(''),
    random_id = get_random_id(),
    message='Привет!',
    chat_id = event.chat_id
    )

Проверяем куда направлен наш event. Если в чат тогда вызываем метод отправки сообщений «vk.messages.send».

Внимание

… переменные key, server и ts необходимо заполнить. Эти переменные нужны для установки связи с сервером VK. Чтобы узнать эти переменные, а они у всех свои, нужно авторизованным перейти на сайт VK разработчикам и во вкладке «Пример запроса» ввести ID своей группы.

random_id — это случайный id сообщения, который в новых версиях VK_API теперь обязателен.

chat_id — это идентификатор беседы, из которой пришел event или иначе говоря сообщение.

if ‘Клавиатура’ in str(event):

         	
if event.from_chat:
    vk.messages.send(
        keyboard = keyboard.get_keyboard(),
        key = ('21b7e67abf6b938c8223242c37b4ff873efe1453'),
        server = ('https://lp.vk.com/wh283415444'),
        ts=('3539'),
        random_id = get_random_id(),
        message='Держи',
        chat_id = event.chat_id
        )

Теперь, если пользователь напишет «Клавиатура«, то наш бот щедро предоставит кнопки, о которых мы говорили ранее.

На сложном всё.

Часть с Личными Сообщениями

Теперь отпишем вторую часть для ЛС без особых подробностей.

for event in Lslongpoll.listen():
    if event.type == VkEventType. MESSAGE_NEW and event.to_me and event.text:
        vars1 = ['Привет', 'Ку', 'Хай', 'Хеллоу']
        if event.text in vars1:
            if event.from_user:
                Lsvk.messages.send(
                    user_id = event.user_id,
                    message = 'Привет)',
                    random_id = get_random_id()
                    )
            vars2 = ['Клавиатура', 'клавиатура']
        if event.text in vars2:
            if event.from_user:
                Lsvk.messages.send(
                    user_id = event.user_id,
                    random_id = get_random_id(),
                    keyboard = keyboard.get_keyboard(),
                    message = 'Держи'
                    )

Поздравляю! Мы с вами разобрали бота на Python 2020 года. А сейчас я приведу весь код целиком.

import random, vk_api, vk
from vk_api.keyboard import VkKeyboard, VkKeyboardColor
from vk_api.utils import get_random_id
vk_session = vk_api.VkApi(token='ВСТАВИТЬ ТОКЕН СЮДА')
from vk_api. bot_longpoll import VkBotLongPoll, VkBotEventType
longpoll = VkBotLongPoll(vk_session, 'ID группы без кавычек')
vk = vk_session.get_api()
from vk_api.longpoll import VkLongPoll, VkEventType
Lslongpoll = VkLongPoll(vk_session)
Lsvk = vk_session.get_api()
keyboard = VkKeyboard(one_time=True)
keyboard.add_button('Привет', color=VkKeyboardColor.NEGATIVE)
keyboard.add_button('Клавиатура', color=VkKeyboardColor.POSITIVE)
keyboard.add_line()
keyboard.add_location_button()
keyboard.add_line()
keyboard.add_vkpay_button(hash="action=transfer-to-group&group_id=еще_раз_ID_группы")
for event in longpoll.listen():
    if event.type == VkBotEventType.MESSAGE_NEW:
        if 'Ку' in str(event) or 'Привет' in str(event) or 'Хай' in str(event) or 'Хелло' in str(event) or 'Хеллоу' in str(event):
            if event.from_chat:
                vk.messages.send(
                    key = (''),          #ВСТАВИТЬ ПАРАМЕТРЫ
                    server = (''),
                    ts=(''),
                    random_id = get_random_id(),
              	    message='Привет!',
            	    chat_id = event.
chat_id ) if 'Клавиатура' in str(event): if event.from_chat: vk.messages.send( keyboard = keyboard.get_keyboard(), key = (''), #ВСТАВИТЬ ПАРАМЕТРЫ server = (''), ts=(''), random_id = get_random_id(), message='Держи', chat_id = event.chat_id ) ''' for event in Lslongpoll.listen(): if event.type == VkEventType.MESSAGE_NEW and event.to_me and event.text: vars1 = ['Привет', 'Ку', 'Хай', 'Хеллоу'] if event.text in vars1: if event.from_user: Lsvk.messages.send( user_id = event.user_id, message = 'Привет)', random_id = get_random_id() ) vars2 = ['Клавиатура', 'клавиатура'] if event.text in vars2: if event.from_user: Lsvk.
messages.send( user_id = event.user_id, random_id = get_random_id(), keyboard = keyboard.get_keyboard(), message = 'Держи' ) '''

P.S. Ключевые слова, по которым ведется поиск в переменной event будут строгими. Т.Е. если вы сделаете ключевым слово «Ап», то слова «Апостроф», «Аптека» и даже «ап» не будут найдены.

Всем удачи!

vkbot | вк бот

ПОЧЕМУ ВЫБИРАЮТ НАС?

Для новых пользователей
90 дней бесплатно

Одновременная работа
в разных соц. сетях

Обширные функциональные
возможности

Гибкий поиск
целевой аудитории

Отзывы от наших пользователей

Мы работаем с ruCaptcha

ЗАДАНИЯ

  • Посещение страниц пользователей (поиск целевой аудитории)
  • Лайки и репосты ЦА для привлечения на рекламную страницу
  • Приглашение в друзья
  • Отправка личных сообщений
  • Комментарии постов ЦА
  • Комментарии постов в своей ленте
  • Публикация постов на своей стене
  • Принятие заявок в друзья
  • Постинг записей в группах
  • Лайки постов в ленте
  • Репост постов с выбранных страниц (наполнение стены)
  • Продвижение поста

ФУНКЦИИ

  • Приглашение в группу
  • Подписаться на сообщество
  • Лайки и репосты
  • Выйти из всех сообществ
  • Перевод подписчиков
  • Удалить собак из друзей
  • Очистить стену от постов
  • Добавление в друзья
  • Парсинг групп
  • Приглашения на встречу
  • Парсинг id из лайков
  • Удалить все фото
  • Массовая смена аватаров
  • Массовая смена паролей
  • Массовая настройка приватности
  • Массовая настройка информации
  • Экспорт аккаунтов

ДОПОЛНИТЕЛЬНО

  • Неограниченное использование одновременно работающих анкет
  • Ввод капчи через сервисы antigate и rucaptcha
  • Автоответчик
  • Гибкие настройки таймингов
  • Гибкая настройка использования прокси
  • Групповые выполнения выбранных заданий
  • Черные списки пользователей и постов
  • Возможность просматривать страницу аккаунта
  • Возможность прикреплять фото и видео к постам и комментариям
  • Коллекция публикуемых постов
  • Рандомизация текста посредством тегов
  • Оповещение о новых личных сообщениях
  • Возможность открывать каждую анкету в новом окне для ведения диалогов

НАШИ ПОЛЬЗОВАТЕЛИ ДЕЛЯТСЯ ОПЫТОМ

Больше кейсов

Статьи и отзывы наших пользователей

Больше статей

ВНЕШНИЙ ВИД ПРОГРАММЫ

Пакет API

— github.

com/galagoshin/vkgobot/bot/vk/api — Пакеты Go
  • Константы
  • func ExistsUser (строка ссылки) bool
  • Тип Приложение
  • тип Бот
    • функция GetBotInstance() *Bot
    • func (bot *Bot) GetGroup() Group
    • func (bot *Bot) Обработчик GetHandler()
    • func (bot *Bot) GetToken() строка
    • func (bot *Bot) GetUserToken() строка
    • func (bot *Bot) GetWidgetToken() строка
    • func (bot *Bot) Init(токены []string, userTokens []string, groupId int)
    • func (bot *Bot) SetHandler (обработчик vkHandler)
  • Тип Кнопка
  • введите чат
    • func GetChat (внутренний идентификатор) Чат
    • func (c Чат) GetAdmin() Пользователь
    • func (c чат) GetId() int
    • func (с чат) GetMembersCount() целое число
    • func (c чат) SendMessage (сообщение Сообщение)
  • тип Колонка
  • введите ColumnWithImage
  • тип Данные
  • тип Группа
    • func (группа Group) GetId() int
    • func (группа Group) GetSubsCount() int
    • func (группа Group) SetStatus(текстовая строка)
    • func (группа) SetWidgetTable (виджет WidgetTable)
  • тип Обработчик
  • введите InlineKeyboard
    • func (kb InlineKeyboard) AddButton (кнопка Кнопка) Клавиатура
    • func (kb InlineKeyboard) GetJsonKey() строка
    • func (клавиатура InlineKeyboard) Init() Keyboard
  • тип Клавиатура
  • введите LinkButton
  • тип LongPoll
    • функция (длинный опрос * длинный опрос) Init ()
    • func (longpoll *LongPoll) RegisterChatResponser (функция func (чат, пользователь, данные))
    • func (longpoll *LongPoll) RegisterInviteToChatEvent (функция func (чат, пользователь))
    • func (longpoll *LongPoll) RegisterPersonalResponser (функция func (пользователь, данные))
    • func (longpoll *LongPoll) Run()
  • введите Сообщение
  • тип NormalButton
  • введите OneTimeKeyboard
    • func (kb OneTimeKeyboard) AddButton (кнопка Кнопка) Клавиатура
    • func (kb OneTimeKeyboard) AddLinkButton (кнопка LinkButton) Клавиатура
    • func (kb OneTimeKeyboard) GetJsonKey() строка
    • func (клавиатура OneTimeKeyboard) Init() Keyboard
  • тип Пост
    • func (сообщение на стене) GetReposts() map[int]User
  • тип Ряд
  • тип StaticKeyboard
    • func (kb StaticKeyboard) AddButton (кнопка Кнопка) Клавиатура
    • func (kb StaticKeyboard) GetJsonKey() строка
    • func (клавиатура StaticKeyboard) Init() Keyboard
  • введите Пользователь
    • func GetUser(id int) Пользователь
    • func GetUserByDomain (строка идентификатора) Пользователь
    • func GetUserByLink (строка ссылки) Пользователь
    • func (пользователь usr) GetFirstname() строка
    • func (пользователь usr) GetGender() int
    • func (пользователь-пользователь) GetId() int
    • func (пользователь usr) GetLastname() string
    • func (пользователь usr) SendMessage (сообщение Сообщение)
  • тип ВиджетТаблица
    • func (widjet WidgetTable) AddRow(row Row, column1 ColumnWithImage, column2, column3 Column) WidgetTable
    • func (виджет WidgetTable) GetJsonKey() строка
    • func (widjet WidgetTable) Init(строка заголовка, строка URL, строка столбца 1, строка столбца 2, строка столбца 3)

Просмотреть исходный код

 константа (
ColorGreen = "положительно"
ColorBlue = "основной"
ColorRed = "отрицательный"
ColorWhite = "вторичный"
) 

Просмотр исходного кода

 константа (
ПользовательЖенский = 1
UserMale = 2
UserNoGender = 0
) 

Этот раздел пуст.

 func ExistsUser(строка ссылки) bool 
 type Attachment struct {
Введите строку
Владелец внутр.
Идентификатор внутр.
Строка доступа
} 
 тип структуры бота {
// содержит отфильтрованные или неэкспортированные поля
} 
 var Instance *Bot 
 func GetBotInstance() *Bot 
 func (bot *Bot) GetGroup() Group 
 func (bot *Bot) GetHandler() Обработчик 
 func (bot *Bot) GetToken() string 
 func (bot *Bot) GetUserToken() string 
 func (bot *Bot) GetWidgetToken() string 
 func (bot *Bot) Init(tokens []string , userTokens []string, groupId int) 
 func (bot *Bot) SetHandler(vkHandler Handler) 
 type Интерфейс кнопки {
// содержит отфильтрованные или неэкспортированные методы
} 
 тип Структура чата {
// содержит отфильтрованные или неэкспортированные поля
} 
 функция GetChat(id int) Чат 
 func (c Chat) GetAdmin() User 
 func (c Chat) GetId() int 
 func (c Chat) GetMembersCount() int 
 func (c Chat) SendMessage(message Message) 
столбец типа ¶
 тип Структура столбца {
Столбец внутр. 
Текстовая строка
Строка URL
} 
введите ColumnWithImage ¶
 тип ColumnWithImage struct {
Столбец внутр.
Текстовая строка
Строка URL
Строка значка
} 
 тип Структура данных {
Текстовая строка
TextArgs [] строка
Строка полезной нагрузки
PayloadArgs [] строка
Карта вложений[int]Вложение
} 
 тип Структура группы {
// содержит отфильтрованные или неэкспортированные поля
} 
 func (группа Group) GetId() int 
 func (группа Group) GetSubsCount() int 
 func (группа Group) SetStatus(текстовая строка) 
 func (группа Group) SetWidgetTable(widjet WidgetTable) 
 type Интерфейс обработчика {
В этом()
Бежать()
RegisterPersonalResponser (функция func (Пользователь, Данные))
RegisterChatResponser(функция func(Чат, Пользователь, Данные))
RegisterInviteToChatEvent(функция func(Чат, Пользователь))
// содержит отфильтрованные или неэкспортированные методы
} 
 введите структуру InlineKeyboard {
// содержит отфильтрованные или неэкспортированные поля
{
Инициализировать() Клавиатура
AddButton (Кнопка) Клавиатура
Строка GetJsonKey()
// содержит отфильтрованные или неэкспортированные методы
} 
 тип структуры LinkButton {
Строка внутр. 
Столбец внутр.
Текстовая строка
Строка ссылки
} 
 введите структуру LongPoll {
// содержит отфильтрованные или неэкспортированные поля
} 
 func (longpoll *LongPoll) Init() 
 func (longpoll *LongPoll) RegisterChatResponser(function func(Chat, User, Data)) 
 func (longpoll *LongPoll) RegisterInviteToChatEvent(function func(Chat, User)) 
 func (longpoll *LongPoll) RegisterPersonalResponser(function func(User, Data)) 
 func (longpoll *LongPoll) Run() 
 type Message struct {
Текстовая строка
Клавиатура Клавиатура
Вложения []Вложение
} 
 тип NormalButton struct {
Строка внутр.
Столбец внутр.
Текстовая строка
Строка полезной нагрузки
Цветная строка
} 
 введите структуру OneTimeKeyboard {
// содержит отфильтрованные или неэкспортированные поля
} 
 func (kb OneTimeKeyboard) AddButton (кнопка Button) Клавиатура 
 func (kb OneTimeKeyboard) AddLinkButton (кнопка LinkButton) Keyboard 
 func (kb OneTimeKeyboard) GetJsonKey() string 
 func (клавиатура OneTimeKeyboard) 90 Keyboard 913 Keyboard 
 введите Post struct {
Идентификатор внутр. 
} 
 func (сообщение на стене) GetReposts() map[int]User 
 type Row struct {
Строка внутр.
} 
 тип StaticKeyboard struct {
// содержит отфильтрованные или неэкспортированные поля
{
// содержит отфильтрованные или неэкспортированные поля
} 
 функция GetUser(id int) Пользователь 
функция GetUserByDomain ¶
 func GetUserByDomain(id string) User 
 func GetUserByLink(link string) User 
 func (usr User) GetFirstname() string 
 func (usr User) GetGender() int 
 func (user User) GetId() int 
 func (пользователь usr) GetLastname() string 
 func (пользователь usr) SendMessage(message Message) 
 type WidgetTable struct {
// содержит отфильтрованные или неэкспортированные поля
} 
 func (widjet WidgetTable) AddRow(row Row, column1 ColumnWithImage, column2, column3 Column) WidgetTable 
 функция (виджет WidgetTable) GetJsonKey() строка 
 функция (виджет WidgetTable) Инициализация (строка заголовка, строка URL, строка столбца 1, строка столбца 2, строка столбца 3) 

Автоматизируйте свои процессы | Задумчивый

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

Начало работыИсследуйте ботов

Показан в:

Как наши боты могут автоматизировать бизнес


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

изучить наших ботов

Как мы работаем

открыть


и определить

открыть и определить

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

просматривать наши боты

на борту


и обучении

на борту и обучении

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

просмотр вариантов использования

мониторинг


и отчет

мониторинг и отчет

Мы отслеживаем и отслеживаем ваших ботов после их развертывания, чтобы оптимизировать их производительность. Мы покажем вам, что именно они сделали и создали ценность.

наши тематические исследования

отзывы

клиенты любят нас

Мы автоматизировали часть нашего процесса, что позволило нашему бизнесу расти и процветать.

Время, затрачиваемое на обработку соответствия пациентов требованиям, сократилось на 60 %.

Наши боты регулярно собирают и публикуют до 11 000 ролей каждый день в Google Sheet.

Мы сэкономили более 5000 часов на ручном вводе данных, сортировке и сопоставлении

Компания Thoughtful разработала робота-работника, который автоматизировал 45 кликов в процессе.

Время завершения процесса сократилось на 90 %

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

Время проверки соответствия требованиям пациентов сократилось на 95 %

Наш бот высвободил время рекрутеров на 50 %, чтобы они могли сосредоточиться на закрытии вакансий.

Мы восстановили 400 часов в месяц, наняв бота.

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

Мы освоили 30% времени нашего бухгалтера, выполняя ручные задачи.

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

5 ботов сократили время выполнения каждого процесса на 70 %

Задумчивость позволила нам реинвестировать наше время в более прибыльные области бизнеса.

Эта юридическая фирма достигла 90% эффективности благодаря автоматизации

сотни


умных ботов
бесконечные возможности

IA

RV

DR

Dashboard Gen

Si

Invoice Check

ME

EF

PDF Create

SO

Sales Order

CP

Claims

CC

BD

CS

AR

Journal Entry

AP

Capture

BP

Report Gen

ER

Expenses

EO

Onboarding

IR

Inventory

IS

Invoicing

CP

Case Prep

ZP

Zero Pay

JP

Job Posting

BP

Payments

CO

Collections

JB

Соскребание

FS

Аудит

Аренда Идеальный.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *