- 1,077
- 594
да я все же выжил.
Всем привет. Уже писал тему с ботом для вк, там мы использовали модуль 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 нашей группы.
Так же, дабы не ходить во круг и около, создадим первую функцию ответа на сообщение!
Теперь сразу разберем вопрос с вложениями видео/фото/файлы и тд
В методах вк -vk.com/dev, в категории messages, есть метод attachment - отвечающий за прикрепление вложений к сообщению.
Создадим пару функций..
Теперь рассмотрим клавиатуру и напишем простое динамичное меню, так же добавим ответ на сообщение которое мы не знаем =)
Вроде бы все, прикреплю исходный файл к теме, так же видео дабы показать как это все работает =)
Если у вас есть срочные вопросы можете задавать их напрямую в вк(кликабельно), а так пишите в данной теме.
Думаю, основное я вам донёс :)
Видео:
p.s я импортировал модуль Random, хотел сделать отправку рандомных ответов, думаю кто знает python тот сам знает как это сделать.
Всем привет. Уже писал тему с ботом для вк, там мы использовали модуль 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:
# - НАДА -
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'}))
)
)
# <3
@vk.on.private_message(text='ЛУЧШИЙ ПОРТАЛ')
async def blasthk(message: Message):
await message.answer(
message = 'ЛУЧШИЙ СУКА САЙТ:',
keyboard = (
Keyboard(inline = True)
.add(OpenLink('https://blast.hk/', 'ЛУЧШИЙ ПОРТАЛ'))
)
)
# нада сделать
@vk.on.private_message()
async def main(message):
await message.answer('Я не знаю, что ответить на это =(\n\nВозможно потом когда нибудь я смогу ответить тебе на это =)')
# Толик видиорегистратор система мене
vk.run_forever()
Вроде бы все, прикреплю исходный файл к теме, так же видео дабы показать как это все работает =)
Если у вас есть срочные вопросы можете задавать их напрямую в вк(кликабельно), а так пишите в данной теме.
Думаю, основное я вам донёс :)
Видео:
p.s я импортировал модуль Random, хотел сделать отправку рандомных ответов, думаю кто знает python тот сам знает как это сделать.
Вложения
Последнее редактирование: