Asynchronous Python API for building Viber bots.
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
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.
pip install aioviber
For testing your bot from local machine use ngrok. Read more #1 (comment)
Documentation about events types https://developers.viber.com/docs/api/rest-bot-api/#callbacks
Callbacks can be proceeded with @bot.event_handler('subscribed')
decorator