A Cleverbot API wrapper for Python with asynchronous functionality.
Project description
cleverbot.py is a Cleverbot API wrapper for Python made to be both fully-featured and easy to use.
Example
import cleverbot
cb = cleverbot.Cleverbot('YOUR_API_KEY', timeout=60)
text = input("Say to Cleverbot: ")
try:
reply = cb.say(text)
except cleverbot.CleverbotError as error:
print(error)
else:
print(reply)
Installing
Install it from PyPI with pip:
pip install cleverbot.py
Or install it from GitHub using git:
git clone https://github.com/orlnub123/cleverbot.py cd cleverbot.py python setup.py install
If you don’t have pip or git you can also download the source and run python setup.py install on it.
To install Cleverbot with asynchronous support you’ll have to use pip and be on Python 3.4.2+.
pip install cleverbot.py[async]
This is not required if you already have aiohttp.
Requirements:
Python 3.2+ or 2.6+
Dependencies:
Requests 1.0.0+
aiohttp 1.0.0+ (Optional, for asynchronous support.)
Usage
First import the module.
import cleverbot
Then initialize Cleverbot with your API key and optionally a cleverbot state and or timeout.
cb = cleverbot.Cleverbot('YOUR_API_KEY', cs='76nxdxIJ02AAA', timeout=60)
The cleverbot state is the encoded state of the conversation so far and includes the whole conversation history up to that point.
You can now start talking to Cleverbot.
Get the reply from the input:
reply = cb.say("Hello")
Or alternatively get it later:
cb.say("Hello")
reply = cb.output
If you want to talk to Cleverbot asynchronously use asay instead. This only works if you’re on Python 3.4.2+ and have aiohttp installed. Experience with asyncio is recommended as you’ll have to run it in an event loop.
await cb.asay("Hello")
A big benefit of using asay is that it allows multiple requests to be sent at once instead of waiting for the previous request to return a response which can take significantly longer.
If something goes wrong with the request, such as an invalid API key an APIError will be raised containing the error message or, if you’ve defined a timeout and you don’t get a reply within the defined amount of seconds you’ll get a Timeout.
As an example:
cleverbot.errors.APIError: Missing or invalid API key or POST request, please visit www.cleverbot.com/api
You can get the error message and additionally the status like so:
try:
cb.say("Hello")
except cleverbot.APIError as error:
print(error.error, error.status)
This is also applicable to Timeout where you can get the defined timeout value with error.timeout.
Also, all Cleverbot errors subclass CleverbotError so you can use it to catch everything Cleverbot related.
Print out all of the attributes Cleverbot gained from the previous conversation.
print(cb._attr_list)
Make sure to never modify the _attr_list as it’s how Cleverbot knows what to reset when resetting.
Take note of the cs attribute as we’ll use it to save the conversation in the next section.
To get a list of all of the attributes’ descriptions either take a look at the _query function’s docstring in cleverbot.py or go to the JSON Reply section in the official Cleverbot API docs.
Save the conversation in preparation for a reset.
cs = cb.cs
Reset Cleverbot, deleting all of the attributes it’s gained from the previous conversations.
cb.reset()
Note that if you try to get the cleverbot state now you’ll get an error:
AttributeError: 'Cleverbot' object has no attribute 'cs'
Now start right where you left off by setting the cleverbot state you saved earlier.
cb.cs = cs
Or by setting it when creating a new Cleverbot instance.
cb = cleverbot.Cleverbot('YOUR_API_KEY', cs=cs)
If you wish to use cleverbot as a variable name you can do one of the following:
import cleverbot as some_other_name
from cleverbot import *
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
Built Distribution
Hashes for cleverbot.py-1.2.1-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | db0b32a219e1a1aea353ca1cefdeb42894cb182e3a2fbf815965c21e142819a9 |
|
MD5 | 906b04750d2c56db0397e0b8e34e3a16 |
|
BLAKE2b-256 | dd892832bdb5bbd0491a933f109a4d8a37f6b906024ef79b0d8511356039a3b8 |