A lib to create chatbots
Project description
eddie is a library you can use to create your own chat bots in seconds.
This is a very young library, any request/suggestion/help will be very appreciated. For them, create an issue or contact me!
Install
You can install eddie using just pip:
$ pip install eddie
If you want the latest version download this repository in your project or using pip:
$ pip install git+https://github.com/greenkey/eddie.git
Usage
You have to define your bot class, extending the default Bot class:
>>> from eddie.bot import Bot
>>> class MyBot(Bot):
... pass
...
>>> b = MyBot()
>>> b
<__main__.MyBot object at 0x7f16e79f3940>
Of course you’ll want to define some bahaviour, the following chapters teach you how to do it.
Defining a default response
>>> from eddie.bot import Bot
>>> class MyBot(Bot):
... def default_response(self, in_message):
... # setting echo as default response
... return in_message
...
>>> b = MyBot()
>>> b.process("Hello!")
'Hello!'
>>> b.process("Goodbye!")
'Goodbye!'
Defining commands
Just define a method of your Bot class using the command decorator.
>>> from eddie.bot import Bot, command
>>> class MyBot(Bot):
... @command
... def hello(self):
... return "hello!"
...
>>> bot = MyBot()
>>> bot.process("/hello") # the default command prepend is "/"
'hello!'
Defining interfaces
A bot running in local would be pretty useless, isn’t it?
The simplest interface we can give to our bot is the http one.
>>> from eddie.bot import Bot
>>> from eddie.endpoints import HttpEndpoint
>>> class MyBot(Bot):
... def default_response(self, in_message):
... return in_message
...
>>> bot = MyBot()
>>> ep = HttpEndpoint()
>>> bot.add_endpoint(ep)
>>> bot.run()
Then you can send message to the bot using simple GET requests: http://localhost:8000/process?in_message=hello
Note: default port is 8000, if it is already used, HttpEndpoint will use the first free port after 8000 (8001, 8002…).
The output using the example will be a json with the message: {"out_message": "hello"}
Telegram
Yes, you can easily connect your bot with the Telegram API, thanks to the python-telegram-bot library.
You don’t have to worry about nothing, except getting a token from the BotFather and passing it to your bot.
>>> from eddie.bot import Bot
>>> from eddie.endpoints import TelegramEndpoint
>>> class MyBot(Bot):
... def default_response(self, in_message):
... return in_message
...
>>> bot = MyBot()
>>> ep = TelegramEndpoint(
... token='123:ABC'
... )
>>> bot.add_endpoint(ep)
>>> bot.run()
It’s not a proper bot framework, but with eddie you can have a bot in Twitter too, thanks to the tweepy library.
Just follow the instrunction on how to create a Twitter App , get all the tokens and use them to instantiate the TwitterEndpoint.
>>> from eddie.bot import Bot
>>> from eddie.endpoints import TwitterEndpoint
>>> class MyBot(Bot):
... def default_response(self, in_message):
... return in_message
...
>>> bot = MyBot()
>>> ep = TwitterEndpoint(
... consumer_key='your consumer_key',
... consumer_secret='your consumer_secret',
... access_token='your access_token',
... access_token_secret='your access_token_secret'
... )
>>> bot.add_endpoint(ep)
>>> bot.run()
Logging
This library uses the logging module. To set up logging to standard output, put:
import logging
logging.basicConfig(level=logging.DEBUG)
at the beginning of your script.
Get involved
If you want to contribute, download the repository, then:
$ virtualenv ~/.venv/eddie # not required but highly suggested
$ source ~/.venv/eddie/bin/activate
$ pip install -r requirements-dev.txt # install all the requirements
$ pytest
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
File details
Details for the file eddie-0.9.5.tar.gz
.
File metadata
- Download URL: eddie-0.9.5.tar.gz
- Upload date:
- Size: 14.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2263351a8443c5b60780cdf44d944b985ca9b9b396a9fc115f190e2ed23bf6e9 |
|
MD5 | d24eef0f91c3cd48d16dffcbdc5c0e4e |
|
BLAKE2b-256 | dc2ad4d1b1f7024e6f0daa9ff50f5f6171620d6867d7cb11ff1fa82adfd548bf |