balebot 1.8.15
Python framework for Bale messenger Bot API
License: Apache 2.0

# Bale bot python
[![Build Status](https://avatars1.githubusercontent.com/u/35299314?s=200&v=4)](https://github.com/balemessenger)

Python SDK and samples for [Bale bot messenger](https://developers.bale.ai).


### Register for an Access Token

You'll need to create your bot by [@Bot_Father](https://web.bale.ai/). Bot_Father gives you a Token to start.

### Installation

```bash
pip install -r requirements.txt
```

### Usage

```python
import asyncio

from balebot.filters import *
from balebot.handlers import MessageHandler, CommandHandler
from balebot.models.messages import *
from balebot.updater import Updater

updater = Updater(token="Bot_token",
                  loop=asyncio.get_event_loop())
bot = updater.bot
dispatcher = updater.dispatcher

```

__Note__: You need to set Config.py if you want to use the logger class


##### Simple communication with client

> Allows you to hear from client and answer.


```python
@dispatcher.message_handler(filters=TextFilter(keywords=["hello"]))  # filter text the client enter to bot
def hear(bot, update):
    message = TextMessage('Hello')
    user_peer = update.get_effective_user()
    bot.send_message(message, user_peer, success_callback=success, failure_callback=failure)
```


##### Sending a simple voice message:
__Note__:You should upload the voice file first.

> Allows you to send a voice message. (You can also send a document in the same way).


```python
def send_voice(bot, update):
    user_peer = update.get_effective_user()
    v_message = VoiceMessage(file_id=file_id, access_hash=access_hash, name="Hello", file_size='259969',
                                 mime_type="audio/mpeg",
                                 duration=20, file_storage_version=1)
    bot.send_message(v_message, user_peer, success_callback=success, failure_callback=failure)
```

##### Sending a generic template message:

__Note__:Generic Template Messages 
> Allows you to add cool text buttons to a general message.

```python
def ask_question(bot, update):
    general_message = TextMessage("a message")
    btn_list = [TemplateMessageButton(text="yes", value="yes", action=0),
                TemplateMessageButton(text="no", value="no", action=0)]
    template_message = TemplateMessage(general_message=general_message, btn_list=btn_list)
    bot.send_message(template_message, user_peer, success_callback=success, failure_callback=failure)
```


##### Sending a generic purchase message:

> Allows you send a purchase message. Clients can pay the money requested by the message by pressing "pay" button.

```python

@dispatcher.message_handler(PhotoFilter())
def purchase_message(bot, update):
    message = update.get_effective_message()
    user_peer = update.get_effective_user()
    first_purchase_message = PurchaseMessage(msg=message, account_number=6037991067471130, amount=10,
                                             money_request_type=MoneyRequestType.normal)
    bot.send_message(first_purchase_message, user_peer, success_callback=success, failure_callback=failure)
    dispatcher.finish_conversation(update)
```

visit [bale-developers](https://developers.bale.ai) for more information



# Changelog
[![Build Status](https://avatars1.githubusercontent.com/u/35299314?s=200&v=4)](https://github.com/balemessenger)

## [1.7.14] - 2019-03-02
### Added
- exact_keywords argument to text_filter and template_response_filter
- termination signal handling
- sengin to channel by nickName
### fixed
- code examples
- base_url added to updater arguments
- set default group shield to off

## [1.6.12] - 2019-01-08
### Added
- get_quoted_message and get_quoted_sender_peer_id to
 FatSeqUpdate for getting replied and forwarded messages
- default photo and message type limitation for purchase message
- get_receipt function to BankMessage for getting receipt info as a named tuple
- get_receipt and get_quoted_message examples
### fixed
- filters problem
- handle monitoring hash function problem
- some code examples

## [1.5.11] - 2019-01-03
### Added
- added validator parameter to filters as a callable function to validate the inputs
- added text field among with text_message filed to template response message for unifying
 with other classes text field
### fixed
- state holder problem at stop

## [1.4.10] - 2018-12-23
### Added
- Quoted Message Handler
- default action and value for template_message_button
- group_shield to config for preventing bot to handle updates from group_peer
- saving bot state_machine to redis db through state_holder and redis configs in config
- template_message, location_message and contact_message load_from_json

### fixed
- bot.send_document


## [1.3.9] - 2018-12-05
### Added
- get_response method in response class
- IPG payment message
- healthy socket connection

## [1.2.8] - 2018-09-30
### Added
- Send photo message easier than the past.
- Send Document message easier than the past.


### fixed
- network connection