- Бот VK на Python 2020 года с ответами в беседу
- С чего начать?
- Авторизация
- Нюансы
- Кнопки
- Прием-отправка сообщений из беседы
- Внимание
- Часть с Личными Сообщениями
- Saved searches
- Use saved searches to filter your results more quickly
- LinBR/vk-autoresponder
- Name already in use
- Sign In Required
- Launching GitHub Desktop
- Launching GitHub Desktop
- Launching Xcode
- Launching Visual Studio Code
- Latest commit
- Git stats
- Files
- README.md
- About
- Saved searches
- Use saved searches to filter your results more quickly
- License
- k0tmurlik/vk-autoresponder
- Name already in use
- Sign In Required
- Launching GitHub Desktop
- Launching GitHub Desktop
- Launching Xcode
- Launching Visual Studio Code
- Latest commit
- Git stats
- Files
- README.md
Бот 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):
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&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 будут строгими. Т.Е. если вы сделаете ключевым слово «Ап», то слова «Апостроф», «Аптека» и даже «ап» не будут найдены.
Saved searches
Use saved searches to filter your results more quickly
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.
Навороченный автоответчик вк с гибкой настройкой
LinBR/vk-autoresponder
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
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?
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.
Latest commit
Git stats
Files
Failed to load latest commit information.
README.md
Навороченный автоответчик вк с гибкой настройкой
Что представляет из себя данный скрипт?
Автоотвечика вк с несколькими выборами запуска.
- Отвечать везде, где придёт сообщение
- Отвечать только в конфе
- Отвечать только в определённой конфе
- Отвечать только в лс
- Отвечать только в лс определённому человеку/людям
- Отвечать определённым людям в конфе
Также вы можете выбрать то, как отвечать
И, конечно же, как отправлять
- Сразу же, как придёт сообщение
- Через некоторое время с набором текстом
- Через просто определённое время
1.Для того, чтобы пользоваться скриптом, нам нужно там авторизоваться(ого), для этого мы идём получать токен на сайте https://vkhost.github.io/ через кейт мобайл, либо авторизовываемся через пароль и логин(работает нестабильно)
2. Далее нам нужно выбрать как быть с капчей, если она случится. Либо мы даём скрипту свой токен с капчей https://anti-captcha.com/, либо соглашаемся на ручной ввод.
3. Выбираем способ отправки сообщения
4. Выбираем как бот будет отвечать(либо одной фразой, либо сразу нескольколькими)
5. И смотря от того, что вы выбрали, вводим вашу фразу, либо вводим путь к вашему файлику с этими фразами
6. Выбираем где бот будет отвечать
7. Далее выбираем задержку сообщений
8. Всё
При первом использовании термукса вводим
apt update && apt upgrade -y
- Для скрипта нужен питон, скачиваем
pkg install python - Чтобы скачать скрипт, нужен гит, его тоже скачиваем
pkg install git - Теперь скачиваем сам скрипт
git clone https://github.com/LinBR/vk-autoresponder - Переходим в папку со скриптом
cd vk-autoresponder - Скачиваем модули, что использует скрипт
pip install -r requirements.txt - Запуск скрипта
python auto_responder.py
- Скачиваем скрипт
git clone https://github.com/LinBR/vk-autoresponder - Переходим в папку со скриптом
cd vk-autoresponder - Скачиваем все зависимости, которые использует бот
pip install -r requirements.txt - Запуск скрипта
python auto_responder.py
About
Навороченный автоответчик вк с гибкой настройкой
Saved searches
Use saved searches to filter your results more quickly
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.
Автоответчик для страницы ВК
License
k0tmurlik/vk-autoresponder
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
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?
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.
Latest commit
Git stats
Files
Failed to load latest commit information.
README.md
Бот-автоответчик для страницы vk.com
Автоответчик для ВК, если вам нужно отдохнуть от людей.
- Отвечает за вас, чтоб не тревожить вас.
- Если человеку не понятно, использует другую формулировку.
- После каждого сообщения указывает, что для важного случая, можно написать в Telegram.
- Содержит в себе массив ID людей, кому уже писал или кому нельзя отвечать.
- При изменении данных или закрытии отправляет вам в лс пакет ID, который при запуске загружает в себя.
!счс - Написанная в диалоге команда запрещает писать боту в диалоге
Запуск бота
git clone https://github.com/k0tmurlik/vk-autoresponder.git
Устанавливаем необходимые библиотеки:
Не забудьте ввести свой токен, ID, имя и TG в main.py