A messaging bot framework
Project description
# Kudubot
|master|develop|
|:----:|:-----:|
|[![build status](https://gitlab.namibsun.net/namboy94/kudubot/badges/master/build.svg)](https://gitlab.namibsun.net/namboy94/kudubot/commits/master)|[![build status](https://gitlab.namibsun.net/namboy94/kudubot/badges/develop/build.svg)](https://gitlab.namibsun.net/namboy94/kudubot/commits/develop)|
![Logo](kudubot/resources/logo/logo-readme.png)
Kudubot is a chat bot framework designed to work with arbitrary messaging
services, be it Whatsapp, Telegram, IRC or even Email. The framework is
completely modular and can be extended with other connection types
and services.
## Implementing a Connection.
To implement a new Connection, you will have to create a subclass
the ```kudubot.connections.Connection.Connection``` class and implement the
various abstract methods.
To integrate the connection with Kudubot, make sure your class is in
your system's python path (i.e. importable) and add an import statement
to the config file located at ```$HOME/.kudubot/connections.conf```
that would import your Connection class.
For examples see:
* [kudubot-cli](kudubot/connections/cli)
* [kudubot-telegram](kudubot/connections/telegram)
* [kudubot-whatsapp](kudubot/connections/whatsapp)
## Implementing a Service
To implement a Service, you will have to create a subclass of the
```kudubot.services.Service.Service``` class and implement the various
abstract methods.
To integrate the service with Kudubot, make sure your class is in
your system's python path (i.e. importable) and add an import statement
to the config file located at ```$HOME/.kudubot/services.conf```
that would import your Service class.
For examples see:
* [kudubot-simple-responder](kudubot/services/native/simple_responder)
* [kudubot-reminder](kudubot/services/native/reminder)
* [kudubot-anime-reminder](kudubot/services/native/anime_reminder)
## Implementing an external Service
Kudubot enables you to write a Service in any language you would like.
For this to be possible, you first need to implement a very basic python
class that inherits from `kudubot.services.ExternalService` and implement
its abstract methods, which are:
1. define_executable_file_url
Defines a URL from which the Service's executable file can be downloaded
if necessary. there is a helper method called `resolve_github_release_asset_url`
which makes it easy to provide a Github release asset as the executable
file.
2. define_executable_command
Defines the commands *preceeding* the actual executable if called from the
command line.
For example, for a `.jar` file to run, one would have to return `["java","-jar"].`
3. define_identifier
Simply a unique string which acts as an identifier for a service.
Once that has been settled, you may start implementing the service in your
preferred language. Your program needs to be runnable as a single executable.
The kudubot framework will call your executable whenever it receives a message,
then checks if the message is applicable to your service and then, if it is
applicable, asks your executable to process the message.
**In detail**:
Your executable will be provided with 4 command line arguments:
1. The mode in which your program should run. Can be either `is_applicable_to`
or `handle_message`. Your program must act accordingly.
2. A file location containing the message information in JSON format. You will
need to parse this yourself if no bindings exist for your language.
3. A file location which is used to tell the kudubot program the result of
your program's execution.
For example, if the `is_applicable_to` query was successful, i.e. the Service
is aplicable to the message, the following JSON data should be written to
the file:
{"is_applicable": true}
or when your program handled a message sucessfully and want to reply
with a message of its own:
{"mode": "reply"}
4. The location of the Connection's SQlite database file.
Should you want to reply to a message, the original message file
must be overwritten with a new Message JSON string, which needs to
have the exact same attributes as the original, just different values.
To actually make kudubot reply, `{"mode": "reply"}` must be written
into the response file.
Your executable file must be located in `.kudubot/external/bin` and
have the exact same name as your service's identifier, including the
file extension. If it is not there at runtime, kudubot will try to
download the executable from the download URL specified in
`define_executable_file_url`.
**Bindings**
There are common bindings available for the following languages:
* [Rust](kudubot/services/bindings/rust/README.md)
([crates.io](https://crates.io/crates/kudubot-bindings))
## Further Information
* [Changelog](https://gitlab.namibsun.net/namboy94/kudubot/raw/master/CHANGELOG)
* [Gitlab](https://gitlab.namibsun.net/namboy94/kudubot)
* [Github](https://github.com/namboy94/kudubot)
* [Python Package Index Site](https://pypi.python.org/pypi/kudubot)
* [Documentation(HTML)](https://docs.namibsun.net/html_docs/kudubot/index.html)
* [Documentation(PDF)](https://docs.namibsun.net/pdf_docs/kudubot.pdf)
* [Git Statistics (gitstats)](https://gitstats.namibsun.net/gitstats/kudubot/index.html)
* [Git Statistics (git_stats)](https://gitstats.namibsun.net/git_stats/kudubot/index.html)
* [Test Coverage](https://coverage.namibsun.net/kudubot/index.html)
|master|develop|
|:----:|:-----:|
|[![build status](https://gitlab.namibsun.net/namboy94/kudubot/badges/master/build.svg)](https://gitlab.namibsun.net/namboy94/kudubot/commits/master)|[![build status](https://gitlab.namibsun.net/namboy94/kudubot/badges/develop/build.svg)](https://gitlab.namibsun.net/namboy94/kudubot/commits/develop)|
![Logo](kudubot/resources/logo/logo-readme.png)
Kudubot is a chat bot framework designed to work with arbitrary messaging
services, be it Whatsapp, Telegram, IRC or even Email. The framework is
completely modular and can be extended with other connection types
and services.
## Implementing a Connection.
To implement a new Connection, you will have to create a subclass
the ```kudubot.connections.Connection.Connection``` class and implement the
various abstract methods.
To integrate the connection with Kudubot, make sure your class is in
your system's python path (i.e. importable) and add an import statement
to the config file located at ```$HOME/.kudubot/connections.conf```
that would import your Connection class.
For examples see:
* [kudubot-cli](kudubot/connections/cli)
* [kudubot-telegram](kudubot/connections/telegram)
* [kudubot-whatsapp](kudubot/connections/whatsapp)
## Implementing a Service
To implement a Service, you will have to create a subclass of the
```kudubot.services.Service.Service``` class and implement the various
abstract methods.
To integrate the service with Kudubot, make sure your class is in
your system's python path (i.e. importable) and add an import statement
to the config file located at ```$HOME/.kudubot/services.conf```
that would import your Service class.
For examples see:
* [kudubot-simple-responder](kudubot/services/native/simple_responder)
* [kudubot-reminder](kudubot/services/native/reminder)
* [kudubot-anime-reminder](kudubot/services/native/anime_reminder)
## Implementing an external Service
Kudubot enables you to write a Service in any language you would like.
For this to be possible, you first need to implement a very basic python
class that inherits from `kudubot.services.ExternalService` and implement
its abstract methods, which are:
1. define_executable_file_url
Defines a URL from which the Service's executable file can be downloaded
if necessary. there is a helper method called `resolve_github_release_asset_url`
which makes it easy to provide a Github release asset as the executable
file.
2. define_executable_command
Defines the commands *preceeding* the actual executable if called from the
command line.
For example, for a `.jar` file to run, one would have to return `["java","-jar"].`
3. define_identifier
Simply a unique string which acts as an identifier for a service.
Once that has been settled, you may start implementing the service in your
preferred language. Your program needs to be runnable as a single executable.
The kudubot framework will call your executable whenever it receives a message,
then checks if the message is applicable to your service and then, if it is
applicable, asks your executable to process the message.
**In detail**:
Your executable will be provided with 4 command line arguments:
1. The mode in which your program should run. Can be either `is_applicable_to`
or `handle_message`. Your program must act accordingly.
2. A file location containing the message information in JSON format. You will
need to parse this yourself if no bindings exist for your language.
3. A file location which is used to tell the kudubot program the result of
your program's execution.
For example, if the `is_applicable_to` query was successful, i.e. the Service
is aplicable to the message, the following JSON data should be written to
the file:
{"is_applicable": true}
or when your program handled a message sucessfully and want to reply
with a message of its own:
{"mode": "reply"}
4. The location of the Connection's SQlite database file.
Should you want to reply to a message, the original message file
must be overwritten with a new Message JSON string, which needs to
have the exact same attributes as the original, just different values.
To actually make kudubot reply, `{"mode": "reply"}` must be written
into the response file.
Your executable file must be located in `.kudubot/external/bin` and
have the exact same name as your service's identifier, including the
file extension. If it is not there at runtime, kudubot will try to
download the executable from the download URL specified in
`define_executable_file_url`.
**Bindings**
There are common bindings available for the following languages:
* [Rust](kudubot/services/bindings/rust/README.md)
([crates.io](https://crates.io/crates/kudubot-bindings))
## Further Information
* [Changelog](https://gitlab.namibsun.net/namboy94/kudubot/raw/master/CHANGELOG)
* [Gitlab](https://gitlab.namibsun.net/namboy94/kudubot)
* [Github](https://github.com/namboy94/kudubot)
* [Python Package Index Site](https://pypi.python.org/pypi/kudubot)
* [Documentation(HTML)](https://docs.namibsun.net/html_docs/kudubot/index.html)
* [Documentation(PDF)](https://docs.namibsun.net/pdf_docs/kudubot.pdf)
* [Git Statistics (gitstats)](https://gitstats.namibsun.net/gitstats/kudubot/index.html)
* [Git Statistics (git_stats)](https://gitstats.namibsun.net/git_stats/kudubot/index.html)
* [Test Coverage](https://coverage.namibsun.net/kudubot/index.html)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
kudubot-0.16.0.tar.gz
(40.2 kB
view details)
Built Distributions
kudubot-0.16.0-py3-none-any.whl
(78.0 kB
view details)
kudubot-0.16.0-py2-none-any.whl
(143.4 kB
view details)
File details
Details for the file kudubot-0.16.0.tar.gz
.
File metadata
- Download URL: kudubot-0.16.0.tar.gz
- Upload date:
- Size: 40.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3bc8d2a397dfa1e37fd0057c7ebfce663d77a978fa2a5f81e4a9660b4a5e826f |
|
MD5 | d5037c633add33ef99cd86a916acaa29 |
|
BLAKE2b-256 | 49e39081c78bd913b7dbfe53d4c54fd9cdec8b03714d748a66b97b74ab27e6d7 |
File details
Details for the file kudubot-0.16.0-py3-none-any.whl
.
File metadata
- Download URL: kudubot-0.16.0-py3-none-any.whl
- Upload date:
- Size: 78.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4ce7f196b5f80d23298663b4a5c1cf89fc0faab5786d3ca90632d8ea5371672f |
|
MD5 | 8a2a68e66f7083d8343cc612c179519e |
|
BLAKE2b-256 | f771631b2497a49b5967de4ef94f172bf6615bb968db49a4c63582539aa10b3e |
File details
Details for the file kudubot-0.16.0-py2-none-any.whl
.
File metadata
- Download URL: kudubot-0.16.0-py2-none-any.whl
- Upload date:
- Size: 143.4 kB
- Tags: Python 2
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b81cd0f7ff9af48cde47d64fe19628df5f6a9eed7849bf2529bf5e90f0e85164 |
|
MD5 | 98c90c0d7a9b4bf03bfbb21e32e457b7 |
|
BLAKE2b-256 | 5be484549fb7a1f0e605f12ae653196df3af785a8cdeee16f4f4c66176a58d4e |