Бот 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 будут строгими. Т.Е. если вы сделаете ключевым слово «Ап», то слова «Апостроф», «Аптека» и даже «ап» не будут найдены.
Всем удачи!
Бот для бесед Кай – Беседы ВК Топ
Бот предназначен для упрощения бесед. Бот имеет ряд функционала, без чего обычной беседе просто не обойтись. Например, одной командой можно исключить любого человека или развлечься интересными командами. А также проверить, кто актив, а кто нет.
В каждой беседе, в которой отсутствует ВИП-статус, есть некоторые ограничения.
Для чего данные ограничения?
Существует множество бесед с нашим ботом, они выполняют одновременно в секунду несколько сотен команд, этим бот нагружается и даже может быть заблокирован. По-этому существуют ограничения. Для того, чтобы их убрать, достаточно получить вип-статус. К тому же, создатели вип-бесед имеют доступ к панели бота на сайте и могут с легкостью настраивать и видеть всё.
Перейти в сообщество Кай
- ← Беседа ВКонтакте
- Беседа “Prague” →
Мета
- Регистрация
- Войти
- RSS записей
- RSS комментариев
- WordPress.org
Рубрики
- Беседы в ВКонтакте
- Топ Беседы Вконтакте
- Чат, конфа, общение
- Беседы ВК- Топ Бесед
- Ваша страница Вконтакте
- Доступ ко Вконтакте
- Дропшиппинг Поставщики Интернет Магазины ВКонтакте
- Заработок в Интернете
- Заработок вконтакте
- Игры Вконтакте
- Инстаграм
- Картинки/фото/видео Вконтакте
- Коды вконтакте, читы
- Настройка вконтакте, управление
- Новости ВК
- Новости Интернета и соцсетей
- О Вконтакте
- Подарки Вконтакте
- Подписчики вконтакте, друзья
- Подсмотреть Вконтакте
- Полезные программы для Вконтакте
- Приложения Вконтакте
- Продвижение групп
- Рейтинг Вконтакте: как повысить?
- Секреты безопасности Вконтакте
- Секреты Вконтакте
- Секреты групп Вконтакте
- Хитрости Вконтакте
- Ютуб
- Знакомства Общение Ищу друга Найти подругу
- Лайки
- Пиар групп
- Заработок в интернете
- Теги Инстаграм
- Все смайлы
- Все подарки
- Новые стикеры
- Все стикеры
- Символы
- Смайлики ВК
- Статьи о смайлах
- Фоторедактор
Свежие записи
- Беседа ВКонтакте The Black Heart
- Беседа “котеек” ВКонтакте.
- Беседа для мужыков и деффак тожы😎😎
- Беседа ВКонтакте “Давайте без давайте!”
- Беседы ВКонтакте EBASH
UNPKG — вк-чат-бот
1 | { |
2 | "имя": "vk-chat-bot", |
3 | "версия": "16.0.0", |
4 | "description": "Пакет для удобного создания чат-ботов для сообществ ВКонтакте (использует Callback API).", |
5 | "ключевые слова": [ |
6 | "апи", |
7 | "бот", |
8 | "обратный вызов", |
9 | "чат", |
10 | "сообщество", |
11 | "разговор", |
12 | "es6", |
13 | "группа", |
14 | "сообщение", |
15 | "сдк", |
16 | "вк" |
17 | ], |
18 | "домашняя страница": "https://u32i64. github.io/vk-chat-bot", |
19 | "баги": "https://github.com/u32i64/vk-chat-bot/issues", |
20 | "хранилище": { |
21 | "тип": "git", |
22 | "url": "https://github.com/u32i64/vk-chat-bot.git" |
23 | }, |
24 | "лицензия": "MIT", |
25 | "автор": { |
26 | "имя": "Артем Варакса (u32i64)", |
27 | "email": "[email protected]", |
28 | "url": "https://u32i64.github.io" |
29 | }, |
30 | "файлы": [ |
31 | "расст/**/*", |
32 | "ЛИЦЕНЗИЯ", |
33 | "CHANGELOG. md", |
34 | "README.md" |
35 | ], |
36 | "основной": "расстояние/основной.js", |
37 | "types": "dist/main.d.ts", |
38 | "скрипты": { 93,5,2 дюйма |
75 | }, |
76 | "двигатели": { |
77 | "узел": ">=8.0.0" |
78 | } |
79 | } |
vk-chat-bot CDN от jsDelivr — бесплатный, быстрый и надежный CDN с открытым исходным кодом
- вк-чат-бот@16.0.0
vk-chat-bot@16. [email protected]@[email protected]@[email protected]. [email protected]@[email protected]@[email protected]@13.0.1vk- чат-бот@13.0.0вк-чат-бот@12.1.0вк-чат-бот@12.0.0вк-чат-бот@11.0.1вк-чат-бот@11.0.0вк-чат-бот@10.5.1вк-чат- [email protected]@[email protected]@[email protected]@10.1.1vk-chat-bot@ 10.1.0вк-чат-бот@10.0.4вк-чат-бот@10.0.3вк-чат-бот@10.0.2вк-чат-бот@10.0.1вк-чат-бот@10.0.0вк-чат-бот@[email protected]@[email protected]@[email protected]@9.0. [email protected]@[email protected]@[email protected]@8.2.1vk- чат-бот@8.2.0вк-чат-бот@8.1.0вк-чат-бот@8.0.0вк-чат-бот@7.0.2вк-чат-бот@7.0.1вк-чат-бот@7.0.0вк-чат- [email protected]@[email protected]@[email protected]@6.0.0vk-chat-bot@ 5.4.5вк-чат-бот@5.4.4вк-чат-бот@5.4.3вк-чат-бот@5.4. 2вк-чат-бот@5.4.1вк-чат-бот@5.4.0вк-чат-бот@5.3. [email protected]@[email protected]@[email protected]@5.3.10vk- чат-бот@[email protected]@[email protected]@[email protected]@5.3.3vk- чат-бот@5.3.2вк-чат-бот@5.3.1вк-чат-бот@5.3.0вк-чат-бот@5.2.3вк-чат-бот@5.2.2вк-чат-бот@5.2.1вк-чат- [email protected]@[email protected]@[email protected]@5.1.0vk-chat-bot@ 5.0.12вк-чат-бот@5.0.11вк-чат-бот@5.0.10вк-чат-бот@5.0.9вк-чат-бот@5.0.8вк-чат-бот@5.0.7вк-чат-бот@5.0. 6вк-чат-бот@5.0.5вк-чат-бот@5.0.4вк-чат-бот@5.0.3вк-чат-бот@5.0.2вк-чат-бот@5.0.1вк-чат-бот@5.0.0вк- чат-бот@4.0.2вк-чат-бот@4.0.1вк-чат-бот@4.0.0вк-чат-бот@3.1.11вк-чат-бот@3.1.10вк-чат-бот@[email protected]@[email protected]@[email protected]@3.1.3vk- чат-бот@3.1.2вк-чат-бот@3.1.1вк-чат-бот@3.1.0вк-чат-бот@3.0.4вк-чат-бот@3.0.3вк-чат-бот@3.0.2вк-чат- bot@3.