Как сделать кнопки в ВК боте python

Я очень долго прочесывал интернет в поисках рабочего варианта бота для ВК, разработанного на 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 БОТА ЗА 10 МИНУТ БЫСТРО И УДОБНО

Авторизация

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)

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

А теперь будем слушать 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, тогда:

Vkontakte BOT (vk_api python) [2] | Клавиатура, кнопочки.


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/wh183415444’), 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) 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 будут строгими. Т.Е. если вы сделаете ключевым слово «Ап», то слова «Апостроф», «Аптека» и даже «ап» не будут найдены.

  • Python
  • ВКонтакте API
  • Программирование

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

Пример создания клавиатуры для отправки ботом

Jumas-Cola

Not a member of Pastebin yet? Sign Up, it unlocks many cool features!

Python 0.88 KB | None | 0 0

import vk_api

from vk_api. keyboard import VkKeyboard , VkKeyboardColor

«»» Пример создания клавиатуры для отправки ботом «»»

token = ‘токен сообщества’

vk_session = vk_api. VkApi ( token = token )

vk = vk_session. get_api ( )

keyboard = VkKeyboard ( one_time = True )

keyboard. add_button ( ‘Белая кнопка’ , color = VkKeyboardColor. DEFAULT )

keyboard. add_button ( ‘Зелёная кнопка’ , color = VkKeyboardColor. POSITIVE )

keyboard. add_line ( ) # Переход на вторую строку

keyboard. add_button ( ‘Красная кнопка’ , color = VkKeyboardColor. NEGATIVE )

keyboard. add_line ( )

keyboard. add_button ( ‘Синяя кнопка’ , color = VkKeyboardColor. PRIMARY )

vk. messages . send (

peer_id = 410050173 ,

message = ‘Пример клавиатуры’ ,

keyboard = keyboard. get_keyboard ( )

Advertisement

Add Comment

Please, Sign In to add comment

Advertisement

Lua | 16 min ago | 3.32 KB

Arduino | 26 min ago | 2.99 KB

Arduino | 33 min ago | 1.75 KB

Python | 46 min ago | 0.71 KB

Arduino | 53 min ago | 2.50 KB

JavaScript | 54 min ago | 103.78 KB

Java | 56 min ago | 1.56 KB

JavaScript | 1 hour ago | 87.04 KB

Advertisement

We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand

Not a member of Pastebin yet?
Sign Up, it unlocks many cool features!

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

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?

Еще по теме:  Vk me что за ссылка

Cancel Create

vk_api / examples / keyboard.py /

Code definitions
Code navigation index up-to-date

  • Go to file T
  • Go to line L
  • Go to definition R
  • Copy path
  • Copy permalink

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

Latest commit 047838f Sep 11, 2020

4 contributors

Users who have contributed to this file

40 lines (28 sloc) 1.26 KB

  • Open with Desktop
  • View raw
  • Copy raw contents Copy raw contents Copy raw contents

Copy raw contents

This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters

# -*- coding: utf-8 -*-
import vk_api
from vk_api . keyboard import VkKeyboard , VkKeyboardColor
from vk_api . utils import get_random_id
def main ():
«»» Пример создания клавиатуры для отправки ботом «»»
vk_session = vk_api . VkApi ( token = ‘bot_api_token’ )
vk = vk_session . get_api ()
keyboard = VkKeyboard ( one_time = True )
keyboard . add_button ( ‘Белая кнопка’ , color = VkKeyboardColor . SECONDARY )
keyboard . add_button ( ‘Зелёная кнопка’ , color = VkKeyboardColor . POSITIVE )
keyboard . add_line () # Переход на вторую строку
keyboard . add_location_button ()
keyboard . add_line ()
keyboard . add_vkpay_button ( hash = «action=transfer-to-groupaid=6222115» )
keyboard . add_line ()
keyboard . add_vkapps_button ( app_id = 6979558 ,
owner_id = — 181108510 ,
label = «Отправить клавиатуру» ,
hash = «sendKeyboard» )
vk . messages . send (
peer_id = 123456 ,
random_id = get_random_id (),
keyboard = keyboard . get_keyboard (),
message = ‘Пример клавиатуры’
)
if __name__ == ‘__main__’ :
main ()
  • Copy lines
  • Copy permalink
  • View git blame
  • Reference in new issue

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

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