instachatbot

Simple framework for building Instagram chat bots with menu driven interface


Keywords
chatbot, instagram, bot, framework, python
License
MIT
Install
pip install instachatbot==0.4

Documentation

instachatbot

PyPI version

Simple framework for building Instagram chat bots with menu driven interface

Installation

pip3 install instachatbot

To install development version:

pip3 install git+https://github.com/art-vasilyev/instachatbot.git

How to use

Create sample script main.py:

from instachatbot.bot import InstagramChatBot
from instachatbot.nodes import (
    MenuNode, MenuItem, MessageNode, QuestionnaireNode, NotifyAdminNode)

menu = MenuNode(
    '๐Ÿ’กChoose menu:\n',
    [
        MenuItem(
            'text message',
            MessageNode('This is a message๐Ÿ˜€')),
        MenuItem(
            'questionnaire',
            QuestionnaireNode(
                [
                    'What is your favourite book? ๐Ÿ“š',
                    'What is your favourite fruit? ๐Ÿ ๐ŸŠ ๐Ÿ‹'
                ],
                header='Please answer the following questions',
                admin_username='<user to send results to>',
                response='Thank your for your answers')),
        MenuItem(
            'send notification to admin',
            NotifyAdminNode(
                'Thank you',
                notification='Sample notification from bot user',
                admin_username='<username to send notification to>'
            )
        ),
    ],
    error_message='Failed to select menu.'
)

chatbot = InstagramChatBot(menu=menu)
chatbot.login(
    username='<instagram-username>',
    password='<instagram-password>')
chatbot.start()

Run the script:

python3 main.py

Persistent conversation state

By default conversation state is discarded on bot restart, to make it persistent you should provide persistent storage on bot initialization:

chatbot = InstagramChatBot(menu=menu, storage=FileStorage())

Menu triggers

By default a bot sends the menu on any message it receives. If you want menu to appear only if bot receives special message, set trigger argument on bot initialization:

chatbot = InstagramChatBot(menu=menu, trigger='/menu')