 |
|

14.09.2021, 06:04
|
|
Познавший АНТИЧАТ
Регистрация: 17.11.2021
Сообщений: 1,134
С нами:
2363906
Репутация:
8
|
|
да я все же выжил.
Всем привет. Уже писал тему с ботом для вк, там мы использовали модуль 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 тот сам знает как это сделать.
|
|
|

14.09.2021, 08:20
|
|
Познающий
Регистрация: 07.03.2021
Сообщений: 53
С нами:
2730548
Репутация:
13
|
|
опять вк апи не признают🙁
|
|
|

14.09.2021, 12:17
|
|
Познавший АНТИЧАТ
Регистрация: 29.09.2018
Сообщений: 1,292
С нами:
4012500
Репутация:
138
|
|
этих гайдов миллион просто, тем более на питоне, так нахуя ещё один?????
|
|
|

14.09.2021, 18:55
|
|
Познавший АНТИЧАТ
Регистрация: 17.11.2021
Сообщений: 1,134
С нами:
2363906
Репутация:
8
|
|
Сообщение от fokk1xz
этих гайдов миллион просто, тем более на питоне, так нахуя ещё один?????
На бх вряд ли соберётся миллион таких гайдов, когда я писал 1-ю часть на бх не было не 1-й темы насчёт ВК ботов, а так пусть будет 2 миллиона =)
|
|
|

14.09.2021, 23:13
|
|
Участник форума
Регистрация: 21.12.2013
Сообщений: 181
С нами:
6522707
Репутация:
83
|
|
Сообщение от F0RQU1N
этих гайдов миллион просто, тем более на питоне, так нахуя ещё один?????
да хоть 5 миллионов тебе то что? Кому-то понятен его гайд, а у других не понятно.
|
|
|

14.09.2021, 23:31
|
|
Участник форума
Регистрация: 01.09.2005
Сообщений: 194
С нами:
10889431
Репутация:
34
|
|
Зачем ты импортируешь requests и asyncio, если они не используются в твоем коде? Зачем ты устанавливаешь requests, если это синхронная либо, а vkbottle - асинхронный фреймворк? Вместо requests нужно юзать aiohttp
почему ты рекомендуешь саблайм? тот же самый pycharm намного лучше своими подсказками и форматированием кода. твои неиспользуемые импорты он бы сам убрал. Использование нормальных IDE (Pycharm) значительно ускорит скорость разработки и позволит не обращаться в документацию api вконтакте каждый раз
Очень плохой гайд, учитывая, что у 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
|
|
|

15.09.2021, 00:04
|
|
Познавший АНТИЧАТ
Регистрация: 17.11.2021
Сообщений: 1,134
С нами:
2363906
Репутация:
8
|
|
Сообщение от kFor
Зачем ты импортируешь requests и asyncio, если они не используются в твоем коде? Зачем ты устанавливаешь requests, если это синхронная либо, а vkbottle - асинхронный фреймворк? Вместо requests нужно юзать aiohttp
почему ты рекомендуешь саблайм? тот же самый pycharm намного лучше своими подсказками и форматированием кода. твои неиспользуемые импорты он бы сам убрал. Использование нормальных IDE (Pycharm) значительно ускорит скорость разработки и позволит не обращаться в документацию api вконтакте каждый раз
Очень плохой гайд, учитывая, что у 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 оказался лишним, гайд я писал не для новичков, а примерно для таких людей как ты =), если бы я писал данную тему для новичков, она бы вышла примерно сейчас
Сообщение от kFor
Зачем ты импортируешь requests и asyncio, если они не используются в твоем коде? Зачем ты устанавливаешь requests, если это синхронная либо, а vkbottle - асинхронный фреймворк? Вместо requests нужно юзать aiohttp
почему ты рекомендуешь саблайм? тот же самый pycharm намного лучше своими подсказками и форматированием кода. твои неиспользуемые импорты он бы сам убрал. Использование нормальных IDE (Pycharm) значительно ускорит скорость разработки и позволит не обращаться в документацию api вконтакте каждый раз
Очень плохой гайд, учитывая, что у 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 ++
|
|
|

15.09.2021, 00:29
|
|
Участник форума
Регистрация: 01.09.2005
Сообщений: 194
С нами:
10889431
Репутация:
34
|
|
Сообщение от Mamashin
Часть кода с импортами я взял исходника своего бота, так же random оказался лишним, гайд я писал не для новичков, а примерно для таких людей как ты =), если бы я писал данную тему для новичков, она бы вышла примерно сейчас
Насчёт саблайма, данный кодовый редактор как и этот гайд для хардкоров, вообще я бы советовал только Notepad ++
хардкоры не смотрят туториалы на бластхаке
|
|
|

15.09.2021, 03:54
|
|
Познавший АНТИЧАТ
Регистрация: 17.11.2021
Сообщений: 1,134
С нами:
2363906
Репутация:
8
|
|
Сообщение от kFor
хардкоры не смотрят туториалы на бластхаке
это и не туториал =)
|
|
|

15.09.2021, 06:38
|
|
Постоянный
Регистрация: 27.07.2016
Сообщений: 883
С нами:
5155882
Репутация:
133
|
|
Сообщение от Mamashin
Часть кода с импортами я взял исходника своего бота, так же random оказался лишним, гайд я писал не для новичков, а примерно для таких людей как ты =), если бы я писал данную тему для новичков, она бы вышла примерно сейчас
Насчёт саблайма, данный кодовый редактор как и этот гайд для хардкоров, вообще я бы советовал только Notepad ++
Таким как он не нужен твой гайд
|
|
|
|
 |
|
Предыдущая тема
Следующая тема
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|