Skip to content

Юзер гайд

Nazar Kravtsov edited this page Apr 13, 2017 · 2 revisions

Errbot VK плагин

Установка

Самое простое - установить все из pip:

pip3 install errbot
pip3 install vk_api

Это все, что понадобится для бота. Для подробной информации: http://errbot.io/en/latest/user_guide/setup.html#installation

Дальше, нужно установить бот в директорию.

mkdir ~/vk-bot
cd ~/vk-bot
errbot --init

В папке появится две папки: data и plugins, а так же config.py. Заходим в config.py и добавляем строку:

  • Если используются логин/пароль: BOT_IDENTITY = {'login':'логин', 'password':'пароль'}
  • Если используется токен: BOT_IDENTITY = {'token':'токен'}

Дальше, добавляем следующую строку: BOT_ADMINS = ('10399749', )

Вместо цифр заменяем на свой айди в ВК.

Так же вписываем: BACKEND = 'VK' BOT_EXTRA_BACKEND_DIR = '/путь_до_папки_с_ботом/errbot-vk/'

Теперь можно проверять работу, в той же директории пишем команду:

errbot

В базе бота уже включены некоторые команды, такие как !help, !echo и т.д.

Как написать первый плагин

Заходим в папку plugins/err-example, заходим в example.py, видим вот такой файл:

from errbot import BotPlugin, botcmd


class Example(BotPlugin):
    """
    This is a very basic plugin to try out your new installation and get you started.
    Feel free to tweak me to experiment with Errbot.
    You can find me in your init directory in the subdirectory plugins.
    """

    @botcmd  # flags a command
    def tryme(self, msg, args):  # a command callable with !tryme
        """
        Execute to check if Errbot responds to command.
        Feel free to tweak me to experiment with Errbot.
        You can find me in your init directory in the subdirectory plugins.
        """
        return 'It *works* !'  # This string format is markdown.

Это простой плагин, который отвечает сообщением 'It works!', если пользователь написал !tryme.

Примеры

В боте уже включены некоторые функции, которые упрощают связь с ВК.

  • Отправить ответ на сообщение

    self._bot.send_reply(msg, vk_message)

Пример:

@re_botcmd(pattern="^(правда)+.*", prefixed=False)
def truth_or_false(self, mess, match):
    pravdamsg = []
    goodmsg = ["🎱Абсолютно!", "🎱Абсолютно точно!", "🎱Верно!", "🎱Правда!", "🎱Конечно же да!", "🎱Бесспорно.", "🎱Думаю да."]
    neutralmsg = ["🎱Возможно.", "🎱Не уверен.", "🎱Лучше не рассказывать.", "🎱Весьма сомнительно."]
    badmsg = ["🎱Скорее всего нет.", "🎱Врядли.", "🎱Что-то мне подсказывает, что нет.", "🎱Конечно нет.", "🎱Перспективы не очень хорошие.", "🎱Неправда. "]
    pravdamsg = goodmsg + neutralmsg + badmsg
    pravdafinal = random.choice(pravdamsg)
    vk_message = str(pravdafinal)
    self._bot.send_reply(mess, vk_message)
  • Получить данные о групповом чате

    chat = self._bot.get_chat_query(mess.to-2000000000)

Пример:

@re_botcmd(pattern="^(кто)+.*", prefixed=False)
def whois(self, mess, match):
    if mess.to > 2000000000:
        chat = self._bot.get_chat_query(mess.to-2000000000)
        chat_users = chat["users"]
        done = False

        while done is False:
            user = random.choice(chat_users)
            if user["last_name"] == "":
                continue
            else:
                done = True
        return_msg =  "Я думаю, что это {} {}.".format(user["first_name"], user["last_name"])
        self._bot.send_reply(mess, return_msg)

    else:
        return "Я думаю, что это вы."
  • Отправить вложение

    msg.extras["attachment"] = "photo10399749_456240725"

Пример:

@botcmd
def pics(self, mess, args):
    #print(self.get("pics_album", None))
    photos = self._bot.get_photo_by_album_id(163328612, 215397085)
    photo = random.choice(photos["items"])
    mess.extras["attachment"] = "photo{}_{}".format(photo["owner_id"], photo["id"])
    mess.extras["fwd_off"] = True
    self._bot.send_reply(mess, "")
  • Отправка множественных сообщений

    yield "Привет!"

Пример:

@botcmd
def longcompute(self, mess, args):
    yield "Going to sleep"
    sleep(10)
    yield "Waking up"

Вся документация есть на сайте http://errbot.io/en/latest/user_guide/plugin_development/

Если есть какие-нибудь вопросы, не стесняйтесь, пишите: https://vk.com/ax3effect