ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   Python (https://forum.antichat.xyz/forumdisplay.php?f=205)
-   -   Простой бот для VK на Python (https://forum.antichat.xyz/showthread.php?t=1381201)

Mamashin 08.03.2021 17:20

Всем привет! В этом гайде я возможно буду для кого то нубом, для кого то копипастом но все же решил сделать этот гайд, так как опять же не нашёл подобной темы на BH.

Между web-интерфейсом для питона, я решил делать гайды по таким стандартным вещам как самые обычные боты и не только для VK. Но сегодня у нас будет как раз таки Vk, поскольку многие когда то думали о своей группе VK в которой будет отвечать бот на определённые сообщения. Бот в данной теме будет крайне простой без классов и множества функций!

Итак, для написания бота на языке Python, нам понадобиться:

1. Python, скачать(клик), можно с официального сайта, желательно последнею версию!

2. Библиотека vk_api, pip install vk_api - главный модуль для работы с вк api.

3. Группа и страница ВК.

4. Любой текстовый редактор, но не блокнот, можете использовать Notepad++, Atom, VS Code, я же буду использовать Sublime Text 2.

5. Умение владеть компьютером и не путаться в двух вещах.

Итак, для начала нам нужно настроить нашу группу вк и создать токен.

Думаю, рассказывать как создать группу не стоит, переходим в настройки нашей группы, затем "Работа с API", затем нажимаем "Создать ключ", там же разрешаем то что вам нужно, можете разрешить всё :D

Создаём токен:

https://forum.antichat.xyz/attachmen...7d919887fc.png

После того как создали, копируем его и сохраняем где нибудь для себя, чтобы по 100 раз не брать, после этого заходим во вкладку Long Poll API, включаем его, и в типах событий и включаем то что нам нужно, я же включу только отправку фотографий и сообщения.

Long Poll API:

https://forum.antichat.xyz/attachmen...283a7cba9b.png

События:

https://forum.antichat.xyz/attachmen...a0b90330ca.png

После этого, переходим в пункт "Сообщения" и включаем их.

https://forum.antichat.xyz/attachmen...1e658e69d6.png

Так же включаем возможности бота:

https://forum.antichat.xyz/attachmen...0d0c41fca4.png

Всё, теперь токен у нас есть, осталось использовать его по назначению.


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

В этой папке создаём текстовый документ с любым английским названием и меняем расширение с .txt на .py, думаю после прошлого гайда не стоит говорить как включить показ расширения на Windows 10.

После всего этого, открываем командную строку (Win +R, cmd) и переходим в директорию нашего скрипта который мы создали только что,

у меня это выглядит так: cd c:/python/blasthack/, у вас же cd диск:/папка/и еще папка есть есть.

Теперь вы в директории вашего скрипта, для работы с кодом который будет ниже, вам предстоит установить библиотеку vkapi, не пугайтесь это легче чем поставить лайк.

В этой же командной строке прописываем следующею команду(-_-) - pip install vkapi

После этого ждём секунд 20-30, после установки можно наконец-то приступить к написанию нашего бота, я вставлю полный закомментированный код, вы же можете просто его скопировать и вставить, вставив токен, поменяв логику общения и даже добавив пару операторов elif.




easyvkbot.py:





Код:

# Импортируем библиотеку vk_api
import
vk_api
# Достаём из неё longpoll
from
vk_api
.
longpoll
import
VkLongPoll
,
VkEventType
# Создаём переменную для удобства в которой хранится наш токен от группы
token
=
"токен"
# В ковычки вставляем аккуратно наш ранее взятый из группы токен.
# Подключаем токен и longpoll
bh
=
vk_api
.
VkApi
(
token
=
token
)
give
=
bh
.
get_api
(
)
longpoll
=
VkLongPoll
(
bh
)
# Создадим функцию для ответа на сообщения в лс группы
def
blasthack
(
id
,
text
)
:
bh
.
method
(
'messages.send'
,
{
'user_id'
:
id
,
'message'
:
text
,
'random_id'
:
0
}
)
# Слушаем longpoll(Сообщения)
for
event
in
longpoll
.
listen
(
)
:
if
event
.
type
==
VkEventType
.
MESSAGE_NEW
:
# Чтобы наш бот не слышал и не отвечал на самого себя
if
event
.
to_me
:
# Для того чтобы бот читал все с маленьких букв
message
=
event
.
text
.
lower
(
)
# Получаем id пользователя
id
=
event
.
user_id
# Доисторическая логика общения на ифах
# Перед вами структура сообщений на которые бот сможет ответить, elif можно создавать сколько угодно, if и else же могут быть только 1 в данной ситуации.
# if - если, else - иначе(значит бот получил сообщение на которое не вызвана наша функция для ответа)
if
message
==
'привет'
:
blasthack
(
id
,
'Привет, я бот!'
)
elif
message
==
'как дела?'
:
blasthack
(
id
,
'Хорошо, а твои как?'
)
else
:
blasthack
(
id
,
'Я вас не понимаю! :('
)



После этого сохраняем файл и пишем в директории со скриптом следующие:


python название.py, если у вас ошибка то командная строка или терминал скажут вам об этом и программа не запуститься.

У меня же:

python easyvkbot.py



Если вы все сделали правильно, то наш бот будет отвечать вам!

https://forum.antichat.xyz/attachmen...a2fbecf085.png

https://forum.antichat.xyz/attachmen...0da71def34.png

https://forum.antichat.xyz/attachmen...3fc2900c8f.png

Как видим всё прекрасно работает, но я считаю это слишком простым ботом даже если добавить туда 100 ответов на определённые команды, давайте сделаем, что то чуть сложнее!


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

Отправку картинки я решил не усложнять с помощью vkupload, а решил использовать метод отправки уже загруженной в вк картинки и прикрепления текста.



Код:

easyvkbot.py:





Код:

# Импортируем библиотеку vk_api
import
vk_api
# Достаём из неё longpoll
from
vk_api
.
longpoll
import
VkLongPoll
,
VkEventType
# Создаём переменную для удобства в которой хранится наш токен от группы
token
=
""
# В ковычки вставляем аккуратно наш ранее взятый из группы токен.
# Подключаем токен и longpoll
bh
=
vk_api
.
VkApi
(
token
=
token
)
give
=
bh
.
get_api
(
)
longpoll
=
VkLongPoll
(
bh
)
# Создадим функцию для ответа на сообщения в лс группы
def
blasthack
(
id
,
text
)
:
bh
.
method
(
'messages.send'
,
{
'user_id'
:
id
,
'message'
:
text
,
'random_id'
:
0
}
)
# Слушаем longpoll(Сообщения)
for
event
in
longpoll
.
listen
(
)
:
if
event
.
type
==
VkEventType
.
MESSAGE_NEW
:
# Чтобы наш бот не слышал и не отвечал на самого себя
if
event
.
to_me
:
# Для того чтобы бот читал все с маленьких букв
message
=
event
.
text
.
lower
(
)
# Получаем id пользователя
id
=
event
.
user_id
# Доисторическая логика общения на ифах
# Перед вами структура сообщений на которые бот сможет ответить, elif можно создавать сколько угодно, if и else же могут быть только 1 в данной ситуации.
# if - если, else - иначе(значит бот получил сообщение на которое не вызвана наша функция для ответа)
if
message
==
'привет'
:
blasthack
(
id
,
'Привет, я бот!'
)
elif
message
==
'как дела?'
:
blasthack
(
id
,
'Хорошо, а твои как?'
)
elif
message
==
'картинка'
:
# Отправляем картинку и текст
bh
.
method
(
"messages.send"
,
{
"peer_id"
:
id
,
"message"
:
"Вот твоя картинка!"
,
"attachment"
:
"photo381260583_457370887"
,
"random_id"
:
0
}
)
else
:
blasthack
(
id
,
'Я вас не понимаю! :('
)



А теперь результат:

https://forum.antichat.xyz/attachmen...8d2ee3d011.png

Тоже самое можно сделать и с видео, аудио, товарами, документами, записями со стены, опросами.




На этом свой гайд я хочу закончить, спасибо всем за внимание, мне будет приятно если этот гайд хоть кому то да поможет! В этом гайде мы создали самого самого простого и лёгкого бота на python.

Исходный файлик я прикреплю к данной теме, если у вас что либо не получится - постараюсь вам помочь!

Так, же чтобы не морочиться с командной строкой и постоянным вводом команды, скрипт можно компилировать с помощью библиотеки pyinstaller

Переходим в директорию со скриптом, затем:

pyinstaller -F название.py

После этого нужно будет подождать секунд 30, после чего в нашей папке появится куча других папок, но нам нужна будет папочка dist, в ней и будет наш скрипт, только уже в exe формате, кстати для его запуска не обязательно устанавливать даже питон :)


wulfandr 08.03.2021 17:48

Цитата:

Сообщение от MiR0nov

Всем привет! В этом гайде я возможно буду для кого то нубом, для кого то копипастом но все же решил сделать этот гайд, так как опять же не нашёл подобной темы на BH.

Между web-интерфейсом для питона, я решил делать гайды по таким стандартным вещам как самые обычные боты и не только для VK. Но сегодня у нас будет как раз таки Vk, поскольку многие когда то думали о своей группе VK в которой будет отвечать бот на определённые сообщения. Бот в данной теме будет крайне простой без классов и множества функций!

Итак, для написания бота на языке Python, нам понадобиться:

1. Python, скачать(клик), можно с официального сайта, желательно последнею версию!

2. Библиотека vk_api, pip install vk_api - главный модуль для работы с вк api.

3. Группа и страница ВК.

4. Любой текстовый редактор, но не блокнот, можете использовать Notepad++, Atom, VS Code, я же буду использовать Sublime Text 2.

5. Умение владеть компьютером и не путаться в двух вещах.

Итак, для начала нам нужно настроить нашу группу вк и создать токен.

Думаю, рассказывать как создать группу не стоит, переходим в настройки нашей группы, затем "Работа с API", затем нажимаем "Создать ключ", там же разрешаем то что вам нужно, можете разрешить всё :D

Создаём токен:

После того как создали, копируем его и сохраняем где нибудь для себя, чтобы по 100 раз не брать, после этого заходим во вкладку Long Poll API, включаем его, и в типах событий и включаем то что нам нужно, я же включу только отправку фотографий и сообщения.

Long Poll API:

События:

После этого, переходим в пункт "Сообщения" и включаем их.

Так же включаем возможности бота:

Всё, теперь токен у нас есть, осталось использовать его по назначению.

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

В этой папке создаём текстовый документ с любым английским названием и меняем расширение с .txt на .py, думаю после прошлого гайда не стоит говорить как включить показ расширения на Windows 10.

После всего этого, открываем командную строку (Win +R, cmd) и переходим в директорию нашего скрипта который мы создали только что,

у меня это выглядит так: cd c:/python/blasthack/, у вас же cd диск:/папка/и еще папка есть есть.

Теперь вы в директории вашего скрипта, для работы с кодом который будет ниже, вам предстоит установить библиотеку vkapi, не пугайтесь это легче чем поставить лайк.

В этой же командной строке прописываем следующею команду(-_-) - pip install vkapi

После этого ждём секунд 20-30, после установки можно наконец-то приступить к написанию нашего бота, я вставлю полный закомментированный код, вы же можете просто его скопировать и вставить, вставив токен, поменяв логику общения и даже добавив пару операторов elif.




easyvkbot.py:





Код:

# Импортируем библиотеку vk_api
import
vk_api
# Достаём из неё longpoll
from
vk_api
.
longpoll
import
VkLongPoll
,
VkEventType
# Создаём переменную для удобства в которой хранится наш токен от группы
token
=
"токен"
# В ковычки вставляем аккуратно наш ранее взятый из группы токен.
# Подключаем токен и longpoll
bh
=
vk_api
.
VkApi
(
token
=
token
)
give
=
bh
.
get_api
(
)
longpoll
=
VkLongPoll
(
bh
)
# Создадим функцию для ответа на сообщения в лс группы
def
blasthack
(
id
,
text
)
:
bh
.
method
(
'messages.send'
,
{
'user_id'
:
id
,
'message'
:
text
,
'random_id'
:
0
}
)
# Слушаем longpoll(Сообщения)
for
event
in
longpoll
.
listen
(
)
:
if
event
.
type
==
VkEventType
.
MESSAGE_NEW
:
# Чтобы наш бот не слышал и не отвечал на самого себя
if
event
.
to_me
:
# Для того чтобы бот читал все с маленьких букв
message
=
event
.
text
.
lower
(
)
# Получаем id пользователя
id
=
event
.
user_id
# Доисторическая логика общения на ифах
# Перед вами структура сообщений на которые бот сможет ответить, elif можно создавать сколько угодно, if и else же могут быть только 1 в данной ситуации.
# if - если, else - иначе(значит бот получил сообщение на которое не вызвана наша функция для ответа)
if
message
==
'привет'
:
blasthack
(
id
,
'Привет, я бот!'
)
elif
message
==
'как дела?'
:
blasthack
(
id
,
'Хорошо, а твои как?'
)
else
:
blasthack
(
id
,
'Я вас не понимаю! :('
)



После этого сохраняем файл и пишем в директории со скриптом следующие:

python название.py, если у вас ошибка то командная строка или терминал скажут вам об этом и программа не запуститься.

У меня же:

python easyvkbot.py


Если вы все сделали правильно, то наш бот будет отвечать вам!

Как видим всё прекрасно работает, но я считаю это слишком простым ботом даже если добавить туда 100 ответов на определённые команды, давайте сделаем, что то чуть сложнее!

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

Отправку картинки я решил не усложнять с помощью vkupload, а решил использовать метод отправки уже загруженной в вк картинки и прикрепления текста.


Код:

easyvkbot.py:





Код:

# Импортируем библиотеку vk_api
import
vk_api
# Достаём из неё longpoll
from
vk_api
.
longpoll
import
VkLongPoll
,
VkEventType
# Создаём переменную для удобства в которой хранится наш токен от группы
token
=
""
# В ковычки вставляем аккуратно наш ранее взятый из группы токен.
# Подключаем токен и longpoll
bh
=
vk_api
.
VkApi
(
token
=
token
)
give
=
bh
.
get_api
(
)
longpoll
=
VkLongPoll
(
bh
)
# Создадим функцию для ответа на сообщения в лс группы
def
blasthack
(
id
,
text
)
:
bh
.
method
(
'messages.send'
,
{
'user_id'
:
id
,
'message'
:
text
,
'random_id'
:
0
}
)
# Слушаем longpoll(Сообщения)
for
event
in
longpoll
.
listen
(
)
:
if
event
.
type
==
VkEventType
.
MESSAGE_NEW
:
# Чтобы наш бот не слышал и не отвечал на самого себя
if
event
.
to_me
:
# Для того чтобы бот читал все с маленьких букв
message
=
event
.
text
.
lower
(
)
# Получаем id пользователя
id
=
event
.
user_id
# Доисторическая логика общения на ифах
# Перед вами структура сообщений на которые бот сможет ответить, elif можно создавать сколько угодно, if и else же могут быть только 1 в данной ситуации.
# if - если, else - иначе(значит бот получил сообщение на которое не вызвана наша функция для ответа)
if
message
==
'привет'
:
blasthack
(
id
,
'Привет, я бот!'
)
elif
message
==
'как дела?'
:
blasthack
(
id
,
'Хорошо, а твои как?'
)
elif
message
==
'картинка'
:
# Отправляем картинку и текст
bh
.
method
(
"messages.send"
,
{
"peer_id"
:
id
,
"message"
:
"Вот твоя картинка!"
,
"attachment"
:
"photo381260583_457370887"
,
"random_id"
:
0
}
)
else
:
blasthack
(
id
,
'Я вас не понимаю! :('
)



А теперь результат:

Тоже самое можно сделать и с видео, аудио, товарами, документами, записями со стены, опросами.


На этом свой гайд я хочу закончить, спасибо всем за внимание, мне будет приятно если этот гайд хоть кому то да поможет! В этом гайде мы создали самого самого простого и лёгкого бота на python.

Исходный файлик я прикреплю к данной теме, если у вас что либо не получится - постараюсь вам помочь!

Так, же чтобы не морочиться с командной строкой и постоянным вводом команды, скрипт можно компилировать с помощью библиотеки pyinstaller

Переходим в директорию со скриптом, затем:

pyinstaller -F название.py

После этого нужно будет подождать секунд 30, после чего в нашей папке появится куча других папок, но нам нужна будет папочка dist, в ней и будет наш скрипт, только уже в exe формате, кстати для его запуска не обязательно устанавливать даже питон :)


таких ботов МИЛЛИАРД, если не больше. да и под каждой библиотекой есть свой документация. самый неопытный разберется

Mamashin 08.03.2021 17:59

Цитата:

Сообщение от wulfandr

таких ботов МИЛЛИАРД, если не больше. да и под каждой библиотекой есть свой документация. самый неопытный разберется

Скинь пожалуйста миллиард таких тем именно на bh :)

clrn1w 08.03.2021 19:08

Годно, но лучше юзать асинхронные библиотеки

Fott 08.03.2021 20:22

Цитата:

Сообщение от MiR0nov

Скинь пожалуйста миллиард таких тем именно на bh :)

То что нету на бх - не значит что их нету в интернете. А таких ботов миллион на том же хабре. Да и в репозитории к библиотеке всегда есть пример с использованием

Mamashin 08.03.2021 20:54

Цитата:

Сообщение от FooOoott

То что нету на бх - не значит что их нету в интернете. А таких ботов миллион на том же хабре. Да и в репозитории к библиотеке всегда есть пример с использованием

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

Поэтому и решил создать тему в которой разжую все до крошечки. Я не считаю что открыл америку кому то, этих ботов и на том же njs полно, но я решил просто создать гайд именно на bh. :)

kfor 09.03.2021 01:22

vkbottle юзайте вместо vk_api

invilso. 09.03.2021 01:57

Цитата:

Сообщение от Руслан1111

vkbottle юзайте вместо vk_api

лучше всего aiohttp

kfor 09.03.2021 16:30

Цитата:

Сообщение от invilso.

лучше всего aiohttp

aiohttp используется в ботле

iAmerican 24.03.2021 01:01

Цитата:

Сообщение от kFor

vkbottle юзайте вместо vk_api

Цитата:

Сообщение от invilso.

лучше всего aiohttp

vkwave чем хуже?


Время: 11:19