Skip to main content

Build Status

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()

Twitter

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

Release files for eddie 0.9.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for eddie 0.9.5
File Size Uploaded
eddie-0.9.5.tar.gz 14.8 kB Details

Release files / eddie-0.9.5.tar.gz

Download URL eddie-0.9.5.tar.gz
Size 14.8 kB
Tags Source
SHA-256 checksum
How to use checksums
2263351a8443c5b60780cdf44d944b985ca9b9b396a9fc115f190e2ed23bf6e9
BLAKE2b-256 checksum
How to use checksums
dc2ad4d1b1f7024e6f0daa9ff50f5f6171620d6867d7cb11ff1fa82adfd548bf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

0.9.5 This release

1 release file

0.9.4

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page