ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   Python (https://forum.antichat.xyz/forumdisplay.php?f=205)
-   -   VK Бот на Python 2 часть - Keyboard / Динамичное меню (https://forum.antichat.xyz/showthread.php?t=1401548)

Mamashin 14.09.2021 06:04

да я все же выжил.

Всем привет. Уже писал тему с ботом для вк, там мы использовали модуль vk_api(честно сказать не очень для постоянной основы).

Сегодня немного познакомлю вас с таким модулем как vkbottle, ко всем строкам в коде буду оставлять комментарии, так что не бойтесь.

Хотел бы начать с того, что данный модуль действительно удобен во многом - код, реакция на ошибки со стороны вк, структура.

НАДА:

1. Python(Желательно 3.9) - python.org

2. Любой кодовый редактор(НЕ БЛОКНОТ!) - Notepad ++, Atom, VSC, IDLE Python, PyCharm, я использую Sublime Text и вам советую.

3. Сама библиотека vkbottle - Установка: pip install vkbottle

4. Так же библиотека asyncio - pip install asyncio

Так же:

pip install requests

ВНИМАНИЕ! В данном гайде я не буду рассказывать как создать python-файл и как запустить его, так как если вы не знаете этого, данная тема будет вам довольно сложна и не понятно, советую вам начать с vk_api если так надо.

Начнём с настройки сообщества, перед этим создаем его, создаем API ключ, ставим галочки на нужные евенты, так же и с LongPoll, затем ставим самую последнию версию Long Poll Api(Советую 5.131)

Затем, заходим в "Сообщения" включаем их, так же включаем возможности ботов, по желанию можно включить кнопку "Начать" и указать приветствие.


Теперь копируем наш созданный API ключ, так же нам нужно ID сообщества(цифры после public....) если у вас паблик уже с аудиторией, вы можете узнать ID своего паблика тут -regvk.com

Теперь наконец-то, мы можем перейти к коду =)

Для начала импортируем нужные нам библиотеки и библиотеки которые мы установили.

Затем создадим переменные в которые поместим и передадим нужные нам данные, в нашем случае это токен и id нашей группы.

Так же, дабы не ходить во круг и около, создадим первую функцию ответа на сообщение!


One:





Код:

# - НАДА -
import
asyncio
import
requests
import
random
# - Вк -
from
typing
import
Optional
from
vkbottle
import
GroupEventType
,
GroupTypes
,
Keyboard
,
Text
,
VKAPIError
from
vkbottle
.
bot
import
Bot
,
Message
from
vkbottle
import
Keyboard
,
KeyboardButtonColor
,
Text
,
OpenLink
from
vkbottle
.
tools
import
DocMessagesUploader
# Переменные
group_id
=
'206644831'
secret
=
'ВАШ ТОКЕН'
# Для удобства
bot_token
=
secret
bot_group_id
=
group_id
vk
=
Bot
(
bot_token
,
bot_group_id
)
# Приветствие
# Есть 3 типа - private_message - ожидание\ответ только в личные сообщения группы!
# chat_message - ожидание\ответ только в беседе!
# message - ожидание\ответ и в беседе и в личные сообщения!
@vk.on.private_message
(
text
=
[
'Начать'
,
'Ку'
,
'Привет'
]
)
# Сама функция:
async
def
privet
(
message
:
Message
)
:
# Ответ на сообщение
await
message
.
answer
(
'Приветик!'
)
# Толик видиорегистратор система мене
vk
.
run_forever
(
)



Теперь сразу разберем вопрос с вложениями видео/фото/файлы и тд

В методах вк -vk.com/dev, в категории messages, есть метод attachment - отвечающий за прикрепление вложений к сообщению.

Создадим пару функций..


Two:





Код:

# - НАДА -
import
asyncio
import
requests
import
random
# - Вк -
from
typing
import
Optional
from
vkbottle
import
GroupEventType
,
GroupTypes
,
Keyboard
,
Text
,
VKAPIError
from
vkbottle
.
bot
import
Bot
,
Message
from
vkbottle
import
Keyboard
,
KeyboardButtonColor
,
Text
,
OpenLink
from
vkbottle
.
tools
import
DocMessagesUploader
# Переменные
group_id
=
'206644831'
secret
=
'ВАШ ТОКЕН'
ya
=
'doc381260583_611979108'
ya2
=
'photo381260583_457378962'
ya3
=
'video-200537102_456239073'
# Для удобства
bot_token
=
secret
bot_group_id
=
group_id
vk
=
Bot
(
bot_token
,
bot_group_id
)
# Приветствие
# Есть 3 типа - private_message - ожидание\ответ только в личные сообщения группы!
# chat_message - ожидание\ответ только в беседе!
# message - ожидание\ответ и в беседе и в личные сообщения!
@vk.on.private_message
(
text
=
[
'Начать'
,
'Ку'
,
'Привет'
]
)
# Сама функция:
async
def
privet
(
message
:
Message
)
:
# Ответ на сообщение
await
message
.
answer
(
'Приветик!'
)
# Фото
@vk.on.private_message
(
text
=
'фото'
)
async
def
photo
(
message
:
Message
)
:
await
message
.
answer
(
'Вот твоя фотка '
,
attachment
=
ya2
)
# Видео
@vk.on.private_message
(
text
=
'видео'
)
async
def
video
(
message
:
Message
)
:
await
message
.
answer
(
'Вот твое видео '
,
attachment
=
ya3
)
# Файл
@vk.on.private_message
(
text
=
'файл'
)
async
def
file
(
message
:
Message
)
:
await
message
.
answer
(
'Вот твой файл '
,
attachment
=
ya
)
# Толик видиорегистратор система мене
vk
.
run_forever
(
)



Теперь рассмотрим клавиатуру и напишем простое динамичное меню, так же добавим ответ на сообщение которое мы не знаем =)

Keyborad + Menu:





[CODE]
# - НАДА -
import
asyncio
import
requests
import
random
# - Вк -
from
typing
import
Optional
from
vkbottle
import
GroupEventType
,
GroupTypes
,
Keyboard
,
Text
,
VKAPIError
from
vkbottle
.
bot
import
Bot
,
Message
from
vkbottle
import
Keyboard
,
KeyboardButtonColor
,
Text
,
OpenLink
from
vkbottle
.
tools
import
DocMessagesUploader
# Переменные
group_id
=
'206644831'
secret
=
'ВАШ ТОКЕН'
ya
=
'doc381260583_611979108'
ya2
=
'photo381260583_457378962'
ya3
=
'video-200537102_456239073'
# Для удобства
bot_token
=
secret
bot_group_id
=
group_id
vk
=
Bot
(
bot_token
,
bot_group_id
)
# Приветствие
# Есть 3 типа - private_message - ожидание\ответ только в личные сообщения группы!
# chat_message - ожидание\ответ только в беседе!
# message - ожидание\ответ и в беседе и в личные сообщения!
@vk.on.private_message
(
text
=
[
'Начать'
,
'Ку'
,
'Привет'
]
)
# Сама функция:
async
def
privet
(
message
:
Message
)
:
# Ответ на сообщение
await
message
.
answer
(
'Приветик!'
)
# Фото
#@vk.on.private_message(text='фото')
#async def photo(message: Message):
# await message.answer('Вот твоя фотка ', attachment=ya2)
# Видео
#@vk.on.private_message(text='видео')
#async def video(message: Message):
# await message.answer('Вот твое видео ', attachment=ya3)
# Файл
#@vk.on.private_message(text='файл')
#async def file(message: Message):
# await message.answer('Вот твой файл ', attachment=ya)
# Меню
@vk.on.private_message
(
text
=
[
'/mm'
,
'menu'
,
'меню'
]
)
@vk.on.private_message
(
payload
=
{
'cmd'
:
'menu'
}
)
async
def
menu
(
message
:
Message
)
:
await
message
.
answer
(
# Сообщение при отправлении клавиатуры
message
=
'Меню: '
,
# Клавиатура
keyboard
=
(
# one_time - True - одноразовая клавиатура, False - постоянная клавиатура
# inline - True - клавиатура прикрепляется к сообщению(РАССМОТРИМ), False - клавиаутра в стандартном положении
# .add - добавить кнопку
# .row - отступ
# Цвета: POSITIVE - Ярко зеленый, SECONDARY(можно нечего не указывать) - БЛЕДНО БЕЛЫЙ
# PRIMARY - СИНИЙ, NEGATIVE - КРАСНЫЙ
Keyboard
(
one_time
=
False
,
inline
=
False
)
.
add
(
Text
(
'Инфа'
)
,
color
=
KeyboardButtonColor
.
POSITIVE
)
.
add
(
Text
(
'ЛУЧШИЙ ПОРТАЛ'
)
,
color
=
KeyboardButtonColor
.
NEGATIVE
)
.
row
(
)
.
add
(
Text
(
'Магаз'
)
,
color
=
KeyboardButtonColor
.
PRIMARY
)
)
)
@vk.on.private_message
(
text
=
'Магаз'
)
async
def
magaz
(
message
:
Message
)
:
await
message
.
answer
(
message
=
'Пятерочка: '
,
keyboard
=
(
Keyboard
(
one_time
=
False
,
inline
=
False
)
.
add
(
Text
(
'Сигареты'
)
,
color
=
KeyboardButtonColor
.
POSITIVE
)
.
add
(
Text
(
'Чипсы'
)
,
color
=
KeyboardButtonColor
.
POSITIVE
)
.
row
(
)
.
add
(
Text
(
'Блейзуха'
)
,
color
=
KeyboardButtonColor
.
POSITIVE
)
.
add
(
Text
(
'Круггетсы'
)
,
color
=
KeyboardButtonColor
.
NEGATIVE
)
.
row
(
)
.
add
(
Text
(
'Назад'
,
payload
=
{
'cmd'
:
'menu'
}
)
)
)
)
#





Вроде бы все, прикреплю исходный файл к теме, так же видео дабы показать как это все работает =)

Если у вас есть срочные вопросы можете задавать их напрямую в
вк(кликабельно), а так пишите в данной теме.

Думаю, основное я вам донёс :)

Видео:


p.s я импортировал модуль Random, хотел сделать отправку рандомных ответов, думаю кто знает python тот сам знает как это сделать.

misteralen 14.09.2021 08:20

опять вк апи не признают🙁

F0RQU1N and 14.09.2021 12:17

этих гайдов миллион просто, тем более на питоне, так нахуя ещё один?????

Mamashin 14.09.2021 18:55

Цитата:

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

этих гайдов миллион просто, тем более на питоне, так нахуя ещё один?????

На бх вряд ли соберётся миллион таких гайдов, когда я писал 1-ю часть на бх не было не 1-й темы насчёт ВК ботов, а так пусть будет 2 миллиона =)

laiser 14.09.2021 23:13

Цитата:

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

этих гайдов миллион просто, тем более на питоне, так нахуя ещё один?????

да хоть 5 миллионов тебе то что? Кому-то понятен его гайд, а у других не понятно.

kfor 14.09.2021 23:31

Зачем ты импортируешь requests и asyncio, если они не используются в твоем коде? Зачем ты устанавливаешь requests, если это синхронная либо, а vkbottle - асинхронный фреймворк? Вместо requests нужно юзать aiohttp

почему ты рекомендуешь саблайм? тот же самый pycharm намного лучше своими подсказками и форматированием кода. твои неиспользуемые импорты он бы сам убрал. Использование нормальных IDE (Pycharm) значительно ускорит скорость разработки и позволит не обращаться в документацию api вконтакте каждый раз

https://github.com/vkbottle/vkbottle...ghlighting.png

Очень плохой гайд, учитывая, что у vkbottle есть свой туториал для новичков, который более понятный и информативный.

vkbottle/docs/tutorial/index.md at master · vkbottle/vkbottle

Сustomizable asynchronous VK API framework. Contribute to vkbottle/vkbottle development by creating an account on GitHub.

github.com

Mamashin 15.09.2021 00:04

Цитата:

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

Зачем ты импортируешь requests и asyncio, если они не используются в твоем коде? Зачем ты устанавливаешь requests, если это синхронная либо, а vkbottle - асинхронный фреймворк? Вместо requests нужно юзать aiohttp

почему ты рекомендуешь саблайм? тот же самый pycharm намного лучше своими подсказками и форматированием кода. твои неиспользуемые импорты он бы сам убрал. Использование нормальных IDE (Pycharm) значительно ускорит скорость разработки и позволит не обращаться в документацию api вконтакте каждый раз

https://github.com/vkbottle/vkbottle...ghlighting.png

Очень плохой гайд, учитывая, что у vkbottle есть свой туториал для новичков, который более понятный и информативный.

vkbottle/docs/tutorial/index.md at master · vkbottle/vkbottle

Сustomizable asynchronous VK API framework. Contribute to vkbottle/vkbottle development by creating an account on GitHub.

github.com


Часть кода с импортами я взял исходника своего бота, так же random оказался лишним, гайд я писал не для новичков, а примерно для таких людей как ты =), если бы я писал данную тему для новичков, она бы вышла примерно сейчас
https://forum.antichat.xyz/attachmen...a071c44ca8.png

Цитата:

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

Зачем ты импортируешь requests и asyncio, если они не используются в твоем коде? Зачем ты устанавливаешь requests, если это синхронная либо, а vkbottle - асинхронный фреймворк? Вместо requests нужно юзать aiohttp

почему ты рекомендуешь саблайм? тот же самый pycharm намного лучше своими подсказками и форматированием кода. твои неиспользуемые импорты он бы сам убрал. Использование нормальных IDE (Pycharm) значительно ускорит скорость разработки и позволит не обращаться в документацию api вконтакте каждый раз

https://github.com/vkbottle/vkbottle...ghlighting.png

Очень плохой гайд, учитывая, что у vkbottle есть свой туториал для новичков, который более понятный и информативный.

vkbottle/docs/tutorial/index.md at master · vkbottle/vkbottle

Сustomizable asynchronous VK API framework. Contribute to vkbottle/vkbottle development by creating an account on GitHub.

github.com


Насчёт саблайма, данный кодовый редактор как и этот гайд для хардкоров, вообще я бы советовал только Notepad ++

kfor 15.09.2021 00:29

Цитата:

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

Часть кода с импортами я взял исходника своего бота, так же random оказался лишним, гайд я писал не для новичков, а примерно для таких людей как ты =), если бы я писал данную тему для новичков, она бы вышла примерно сейчас

Насчёт саблайма, данный кодовый редактор как и этот гайд для хардкоров, вообще я бы советовал только Notepad ++

хардкоры не смотрят туториалы на бластхаке

Mamashin 15.09.2021 03:54

Цитата:

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

хардкоры не смотрят туториалы на бластхаке

это и не туториал =)

madrasso 15.09.2021 06:38

Цитата:

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

Часть кода с импортами я взял исходника своего бота, так же random оказался лишним, гайд я писал не для новичков, а примерно для таких людей как ты =), если бы я писал данную тему для новичков, она бы вышла примерно сейчас

Насчёт саблайма, данный кодовый редактор как и этот гайд для хардкоров, вообще я бы советовал только Notepad ++

Таким как он не нужен твой гайд


Время: 16:00