Как создать бота ВК на пайтоне

Бот написанный на Python для социальной сети Вконтакте, работающий через VkBotLongPull.

О проекте

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

Установка

Можете воспользоваться командой pip:

pip install shablbot

Или же использовать poetry:

poetry add shablbot

:dizzy: Инициализация

Чтобы начать работу с ботом необходимо выполнить инициализацию компонентов бота:

Для этого нужно выполнить команду:

C:shablbot> py -m shablbot —init

После чего будет в папке, откуда был вызван скрипт будет созданы каталоги с следующей структурой:

*yourfolder* ┣ commands ┃ ┣ private ┃ ┃ ┗ show_id_active_chats.py ┃ ┣ public ┃ ┃ ┣ chat_bot_off.py ┃ ┃ ┣ chat_bot_on.py ┃ ┃ ┗ chat_show_statistics.py ┣ keyboards ┃ ┣ clear.json ┃ ┗ default.json ┣ modules ┃ ┗ games ┃ ┗ flip_and_roll.py ┣ phrases ┃ ┣ _default.json ┃ ┣ bye.json ┃ ┗ hello.json ┣ settings ┃ ┣ settings_model.py ┃ ┗ settings.py ┗ manager.py
Более подробно про каждый из каталогов будет рассказано далее

После этого можно перейти к настройке бота.

БОТ ДЛЯ ГРУППЫ VK НА PYTHON ЗА 15 МИНУТ

⏳ Стартовая настройка

Настройка бота производится с помощью редактирования файла settings.py, находящегося в папке settings, созданной на шаге выше.

Обязательные поля для работы бота:

  1. TOKEN — ключ доступа к сообществу вконтакте, ключ должен быть с правами к сообщениям сообщества. Как получить токен для бота?
  1. BOT_CHAT_ID — id страницы вконтакте сообщества, от лица которого будет работать бот.
  1. DEFAULT_REACTION_TEMPLATES — слова на которые бот будет всегда как-либо реагировать.
  1. ADMIN_ID — id страницы вконтакте человека, от лица которого будет происходить администрирование бота.

Остальные параметры для начального запуска бота менять не нужно.

Советую для хранения токена и id-ов использовать .env файл. К примеру используйте python-dotenv.

Запуск бота

Для запуска бота мы используем файл manager.py, созданный на первом шаге.

C:shablbot> py manager.py —run

Если вы все правильно сделали, то в консоли увидите следующее сообщение:

:card_file_box: Модульность бота

  1. Модуль команды
  2. Модуль клавиатуры
  3. Модуль пользовательских модулей
  4. Модуль фраз
  5. Модуль настроек

То, как бот обрабатывает команды и сообщения от Вас спрятано. По этому Вам доступны 5 типов модулей, для расширения и настройки бота:

commands

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

  1. private — доступные только администратору бота
  2. public — доступные всем пользователям

:bell: Команды нужно подключать в настройках бота. Переменная ACTIVE_COMMANDS.

БОТ ДЛЯ ГРУППЫ VK НА PYTHON ЗА 2 МИНУТЫ

Для добавления новой команды вам нужно создай файл в папке private/public с *название_команды*.py.

В созданном файле нужно создать переменную command_settings с следующей структурой:

Нужен для более гибкой настройки. Входная точка модуля должна иметь такую структуру, но не ограничена этим:

phrases

Модуль отвечающий за фразы, на которые бот реагирует. Содержит в себе файлы .json формата.

:bell: Все фразы из папки подгружаются автоматически. Вы можете исключить ненужные фразы используя в настройках переменную EXCLUDED_PHRASES.

json файл должен содержать следующую структуру:

:warning: Значения с пометкой «_comment» в реальном файле не должны пристутствовать.

Модуль отвечающий за настройки бота. Все настройки производятся в файле settings.py. В файле для каждой переменной имеются комментарии, поясняющие, что в них хранится.

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

Пример работы

CLI Shablbot

Для бота разработано CLI. Доступные методы:

(env) (c)

Для старта работы с ботом вы можете воспользоваться методом «—init» таким образом:

❔ Как получить токен для работы бота?

Для начала нам нужно создать сообщество. Для этого переходим в вк в вкладку «Сообщества» и нажимаем кнопку «Создать сообщество».

Там вы заполняете всю необходимую вам информацию, со всем соглашаетесь и попадаете на страницу группы. Там нам нужно найти вкладку «Управление». В меню справа найдите «Настройки»->»Работа с API».

На той странице будет 3 вкладки. Из них нам нужны только 1 и 3:

  1. Нажимаем кнопку «Создать ключ», выбираем все необходимые нам доступы (желательно все) и нажимаем «Создать». Данный ключ нужен для переменной TOKEN в настройках бота.
  2. Не нужна, пропускаем ее.
  3. На данной вкладке вам нужно выбрать версию API, бот тестировался на самом последней версии в момент написания (5.131), советую выбирать самую свежую. Так же вам нужно установить «Long Poll API» в значение «Включено». После этого переходим на вкладку «Тип событий» и выбираем нужные вам значения. Минимальные для работы бота:
  1. Входящее сообщение
  2. Исходящее сообщение

После этого ваш бот готов к работе, можете начинать его тестировать, удачи!

✍️ Автор

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

KotRikD/VBot

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Switch branches/tags
Branches Tags
Could not load branches
Nothing to show
Could not load tags

Nothing to show

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Cancel Create

  • Local
  • Codespaces

HTTPS GitHub CLI
Use Git or checkout with SVN using the web URL.
Work fast with our official CLI. Learn more.

Sign In Required

Please sign in to use Codespaces.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching Xcode

If nothing happens, download Xcode and try again.

Launching Visual Studio Code

Your codespace will open once ready.

There was a problem preparing your codespace, please try again.

This branch is 28 commits ahead, 175 commits behind ekonda:master .

Latest commit

Git stats

Files

Failed to load latest commit information.

Latest commit message
Commit time

README.md

Для работы бота необходим
Python 3.6+ или PyPy3.5
С версиями ниже бот не работает

  1. Перейдите в папку с ботом
  2. Установить зависимости из файла requirements.txt
    Возможные команды для установки:
    pip3 install -r requirements.txt
    python -m pip install -r requirements.txt
    python3.6 -m pip install -r requirements.txt
  3. Запустите бота, чтобы он создал файл settings.py (после чего он выключится)
    Возможные команды для запуска(из консоли, из папки с ботом):
    python3 vbot.py
    python vbot.py
    python3.6 vbot.py
  4. В settings.py замените TOKEN на access_token группы или LOGIN и PASSWORD на логин и пароль аккаунта ВК соответственно. И уберите # перед введёнными данными
    Если ввести и то и другое — бот будет работать как группа, и сможет использовать методы VK API пользователя.
    Можно вводить несколько аккаунтов, но отвечать бот будет со всех без разбора, так что рекомендуется вводить только 1 группу и 1 пользователя максимум!
    Без данных пользователя некоторые плагины могут не работать! Например, !скажи не будет работать!
  5. Там же в settings.py вы можете ввести PROXY в указанном формате, но не гарантированно, что ВК пустит вас без подтверждения телефонного номера с этого PROXY, что бот автоматически не делает.
  6. Укажите данные базы данных PostgreSQL или MySQL в DATABASE_SETTINGS в указанном формате. Создать свою БД можно на вашем сервере или, например, на Heroku
  7. Можете запускать бота, как в п.3. Теперь бот должен работать!
  8. Бота можно бесплатно захостить на Heroku. Гайд, Еще один гайд.
  • Важно: плагины будут загружены из репозитория с плагинами: https://github.com/VKBots/vbot-plugins
  • Параметры при запуске бота из командной строки:
  • -ou — только обновление плагинов
  • -nu — обновление плагинов перед запуском.
  • python3.6 vbot.py -nu — обновление плагинов перед запуском бота
  • python vbot.py -ou — только обновление плагинов
Еще по теме:  Вконтакте что такое кросс

Текущая версия бота: 6.0

По умолчанию бот отзывается на префикс: ! . Сменить их можно в settings.py на 32 строке ( PREFIXES = (‘!’, ) ).

  • Приветствие (плагин приветствия)
  • Список плагинов (список загруженных плагинов)
  • Музыка (список музыки из ваших рекомендаций в ВК)
  • Случайное число (случайное число в разных диапазонах)
  • Случайные мемы (берутся из паблика, указанного в плагине memes.py)
  • Ближайшие дни рождения в группе (берутся из паблика, указанного в плагине birthday.py)
  • Курс валют (отображение основных курсов валют)
  • Список команд (список всех команд бота с описанием, как их использовать)
  • Шар восьмерка (решает за вас)
  • Время (показывает текущую дату и время)
  • Статистика бота (показывает данные о счетчиках аккаунта)
  • Послать сообщение (посылает сообщение другому пользователю, в том числе анонимное)
  • Блокнот (может запоминать и вспоминать строки)
  • Рассказать шутку (рассказывает случайный анекдот)
  • Контроль бота (только для админов)
  • Поиск видео (Ищет видео в ВК по запросу пользователя)
  • Скриншот сайта (делает скриншот сайта)
  • Погода (показывает погоду в Москве или указанном городе)
  • Перечеркиватель (перечеркивает строку)
  • Автоматическое добавление друзей (принимает входящие заявки в друзья раз в 10 секунд)
  • Новости (показывает последние новости из Yandex)
  • Объявление (не рассылка)(позволяет администраторам оставлять сообщение, которое могут прочитать только определённые люди)
  • Переписка с ботом (пользователи могут пообщаться с ботом от ChatterBot! Работает только при USE_CHATTER = False)
  • Рассылка сообщений (рассылает сообщение пользователям)

Общение с ботом (элементы чат-бот)

VBot так-же позволяет развлекать пользователей беседами.
Инструкции по написанию логики бесед вы можете найти в chat/chat.py, а так-же в настройках.
Вы можете сами описание поведение бота, или воспользоваться ChatterBot.
Настроить ChatterBot вы можете в chat/chatter.py внизу(класс ChatterBot).

Миграции производятся с помощью файла migrate.py в папке scripts

  • Для того, чтобы узнать ID пользователя или группы, используйте https://vk.com/linkapp
  • Чтобы очистить списки администраторов, белый лист, чёрный список, используйте программу clear_lists.py в папке scripts

В папке plugins есть пример плагина в файле example.py, отвечающий на команду !тест . В нём подробно расписана структура плагина. Для примера работы plugin.data или plugin.temp_data вы можете посмотреть memo.py, weather.py. Для примера цикличных задач friends.py.
Там есть и другие плагины, код которых можно просмотреть для понимания того, что можно сделать с помощью бота.

Каждый плагин должен иметь экземпляр класса Plugin (из plugin_system) под именем (обязательно) plugin. Все команды, на которые подписывается плагин, должны быть в нижнем регистре.

Вот пример простого плагина:

Для хранения данных используется peewee-async.
После импорта всего из database(именно таким образом)

from database import *

Вы можете использовать db, который является экземпляром peewee_async.Manager. В database.py хранятся основные модели бд. Каждый плагин может создавать свои модели после импорта database с помощью, например, такого объявления:

class NameForYourModel(BaseModel): text = peewee.TextField(null=True) NameForYourModel.create_table(True)

Помле этого можно рассматривать NameForYourModel как обычную модель.

Плагины размещаются в папке plugins . Если два плагина имеют одинаковые команды — они обрабатываются в обоих плагинах.
Плагины могут работать со всеми методами API ВКонтакте.

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

Разработчиков этого бота можно найти в вк:

Источник: github.com

Пишем чат бота для ВКонтакте на python с помощью longpoll

Пишем чат бота для ВКонтакте на python с помощью longpoll

2018-11-01 в 13:20, admin , рубрики: api, python, vk api, Вконтакте API

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

Ну прям совсем для новичков

Как установить Python?
Скачиваем, запускаем установщик.
Куда писать этот код?
В текстовый документ с расширением .py
А чем писать?
Да хоть блокнотом. Лично я рекомендую Notepad++
А как запускать?
Через командную строку.
python путь до папки с файломфайл.py

Еще по теме:  Черный список продавцов садовод Вконтакте

Как оно работает?

Всё очень просто, в vk api есть такая штука, называется longpool работает она так:

Long Polling — это технология, которая позволяет получать данные о новых событиях с помощью «длинных запросов». Сервер получает запрос, но отправляет ответ на него не сразу, а лишь тогда, когда произойдёт какое-либо событие (например, придёт новое сообщение), либо истечёт заданное время ожидания.

Говоря русским языком, мы отправляем на сервер запрос, а он в свою очередь тыкает вконтакте если там произойдёт что либо, например, нам придёт сообщение он бежит и говорит об этом нам. От этого и будем плясать.

Техническая реализация

Для начала нам нужно доказать вконтакту что мы — это мы, а не кто-либо ещё. Делается это очень просто.

import vk_api import requests session = requests.Session() login, password = ‘Ваш логин, email или телефон’, ‘Ваш пароль’ vk_session = vk_api.VkApi(login, password) try: vk_session.auth(token_only=True) except vk_api.AuthError as error_msg: print(error_msg) return

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

Если бот будет сидеть в группе то авторизация выглядит по другому.

import requests import vk_api vk_session = vk_api.VkApi(token=’токен с доступом к сообщениям и фото’)

— Что такое токен?
— Такая штука из циферок и буковок которую нужно получить в настройках группы. Для этого достаточно открыть раздел «Управление сообществом» («Управление страницей», если у Вас публичная страница), выбрать вкладку «Работа с API» и нажать «Создать ключ доступа».

Теперь вызовем longpool.

from vk_api.longpoll import VkLongPoll, VkEventType for event in longpoll.listen(): if event.type == VkEventType.MESSAGE_NEW and event.to_me and event.text: #Слушаем longpoll, если пришло сообщение то: if event.text == ‘Первый вариант фразы’ or event.text == ‘Второй вариант фразы’: #Если написали заданную фразу if event.from_user: #Если написали в ЛС vk.messages.send( #Отправляем сообщение user_id=event.user_id, message=’Ваш текст’ ) elif event.from_chat: #Если написали в Беседе vk.messages.send( #Отправляем собщение chat_id=event.chat_id, message=’Ваш текст’ )

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

import datetime vk.messages.send( user_id=event.user_id, message=’Московское время: ‘ + str(now.strftime(«%H:%M»)) )

А ещё можно прикреплять картинки.

attachments = [] from vk_api import VkUpload upload = VkUpload(vk_session) image_url = ‘Ссылка на картинку’ image = session.get(image_url, stream=True) photo = upload.photo_messages(photos=image.raw)[0] attachments.append( ‘photo<>_<>’.format(photo[‘owner_id’], photo[‘id’]) ) vk.messages.send( user_id=event.user_id, attachment=’,’.join(attachments), message=’Ваш текст’ )

Можно придумать ещё много всего интересного, но тут подумайте сами, а я лишь скажу что: ссылки можно делить на части. Например:

image_url = ‘http://сайт.com/uploads/’ + event.text + ‘.png’

и никто не запретил нам получать ответ от пользователя на примере Википедии:

import wikipedia #Модуль Википедии wikipedia.set_lang(«RU») if event.text == ‘Википедия’ or event.text == ‘Вики’ or event.text == ‘википедия’ or event.text == ‘вики’ or event.text == ‘Wikipedia’ or event.text == ‘wikipedia’ or event.text == ‘Wiki’ or event.text == ‘wiki’: #если нам пришло сообщение с текстом Википедия или Вики или . или wiki if event.from_user: #Если написали в KC vk.messages.send( user_id=event.user_id, message=’Введите запрос’ #Пишем «Введите запрос» ) elif event.from_chat: #Если написали в беседе vk.messages.send( chat_id=event.chat_id, message=’Введите запрос’ #Пишем «Введите запрос» ) for event in longpoll.listen(): if event.type == VkEventType.MESSAGE_NEW and event.to_me and event.text: #Пинаем longpoll if event.from_user: vk.messages.send( #Если написали в ЛС user_id=event.user_id, message=’Вот что я нашёл: n’ + str(wikipedia.summary(event.text)) #Пишем «Вот что я нашёл» И то что вернёт нам api Wikipedia по запросу текста сообщения ) break #выходим из цикла elif event.from_chat: #Если написали в беседе vk.messages.send( chat_id=event.chat_id, message=’Вот что я нашёл: n’ + str(wikipedia.summary(event.text)) #Пишем «Вот что я нашёл» И то что вернёт нам api Wikipedia по запросу текста сообщения ) break #выходим из цикла continue

Ссылки на примеры и документацию

На этом я с вами попрощаюсь. Хорошего кодинга.

Источник: www.pvsm.ru

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