Asynchronous Python API for building Viber bots
Python
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
aioviber
static
.coveragerc
.gitignore
.travis.yml
CHANGELOG.md
MANIFEST.in
README.rst
TODO.md
mypy.ini
project.ini
pytest.ini
requirements-dev.txt
requirements.txt
setup.py

README.rst

aioviber

Asynchronous Python API for building Viber bots.

Build Status Coverage Status Package version Python versions

Example

import logging

from aioviber.bot import Bot
from aioviber.chat import Chat
from viberbot.api.viber_requests import ViberSubscribedRequest

logger = logging.getLogger(__name__)

bot = Bot(
    name='ViberBot',
    avatar='http://avatar.example.com/avatar.jpg',
    auth_token="**************-**************-**************",  # Public account auth token
    host="my.host.com",  # should be available from wide area network
    port=80,
    webhook="https://my.host.com",  # Webhook url
)

@bot.command('ping')
async def ping(chat: Chat, matched):
    await chat.send_text('pong')

@bot.event_handler('subscribed')
async def user_subscribed(chat: Chat, request: ViberSubscribedRequest):
    await chat.send_text('Welcome')

@bot.message_handler('sticker')
async def sticker(chat: Chat):
    await chat.send_sticker(5900)

if __name__ == '__main__':  # pragma: no branch
    bot.run()  # pragma: no cover

API designed similar to aiotg

Getting Started

In order to implement the API you will need the following: 1. An Active Viber account on a platform which supports PA (iOS/Android). 2. Active Public Account; 3. Public Account authentication token; 4. Write your bot with aioviber.

Read more: Public Account Documentation — Viber REST API

There is no way to run viber bot in polling mode like Telegram.

Install

pip install aioviber

Viber API

Messaging flow

Messaging flow

Messaging flow

Events types

Documentation about events types https://developers.viber.com/docs/api/rest-bot-api/#callbacks

Callbacks can be proceeded with @bot.event_handler('subscribed') decorator