Skip to content

Ваш первый бот

lxstvayne edited this page Nov 20, 2021 · 1 revision

Предисловие

В примерах token предполагает ключ доступа вашего сообщества.

Простейший эхо бот


Класс Vk инкапсулирует все методы работы с токеном сообщества. Класс LongPoll предоставляет возможность работы с событиями сообщества.

Создайте файл echo_bot.py. Откройте его и создайте экземпляр класса Vk:

from vk_maria import Vk, types
from vk_maria.longpoll import LongPoll, EventType


vk = Vk(access_token='token')

Примечание: Обязательно замените token ключом доступа вашего сообщества.

Затем создайте экземпляр класса LongPoll передав ему в качестве аргумента vk:

lp = LongPoll(vk)

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

Давайте определим обработчик событий, который будет обрабатывать все входящие сообщения от пользователя в личные сообщения сообщества и отвечать на команду Начать:

@lp.message_handler(commands=['Начать'])
def send_welcome(event: types.Message):
    vk.messages_send(user_id=event.message.from_id, message='Добро пожаловать!')

Добавим ещё один обработчик:

@lp.message_handler()
def echo(event: types.Message):
    event.answer(event.message.text)

Декорированная функция может иметь произвольное имя, однако она должна принимать только 1 параметр (event).

Примечание: все обработчики тестируются в том порядке, в котором они были объявлены.

Отлично, теперь у нас есть простой бот, который отвечает на сообщение Начать приветствием и повторяет остальные отправленные сообщения. Чтобы запустить бота добавьте в исходный код следующее:

lp.polling()

Вот и всё! Наш исходный файл теперь выглядит так:

from vk_maria import Vk, types
from vk_maria.longpoll import LongPoll, EventType


vk = Vk(access_token='token')
lp = LongPoll(vk)

@lp.message_handler(commands=['Начать'])
def send_welcome(event: types.Message):
    vk.messages_send(user_id=event.message.from_id, message='Добро пожаловать!')


@lp.message_handler()
def echo(event: types.Message):
    event.answer(event.message.text)


lp.polling()

Чтобы запустить бота, просто откройте терминал, введите python echo_bot.py и протестируйте его.