A lightweight Python framework for building chatbots.
Project description
Chatter
Welcome to Chatter!
Chatter is a framework with the goal of allowing you to quickly and easily create chatbots. It hides away the things you want to just work, exposing a simple API, so that you can focus on writing your custom features and delivering a working chatbot.
Take a look:
from chatter_py import ChatClient, Feature, Bot, Message
from typing import Any
# Define your feature
class Echo(Feature):
def receive(self, message):
self.send_to_chat(message)
# Write a handler for your chat client, for example:
class MyChatClient(ChatClient):
def __init__(self):
self.chat_client_connection = Any
def on_chat_message(self, message: dict):
"""Receive your chat messages and convert them to bot friendly messages"""
bot_message = Message(text=message["text"], room=message["room_id"])
self.send_to_bot(bot_message)
def start_listening(self) -> None:
"""connect to your chat client"""
self.chat_client_connection.register_callback(self.on_chat_message)
self.chat_client_connection.start_listening()
def send_to_client(self, message):
"""Format your bot messages and send them off to your chat client"""
text = "<p>" + " ".join(message.text) + "</p>"
self.chat_client_connection.send(text)
def main():
# Let Chatter put it all together
Bot(MyChatClient(), [Echo]).start()
if __name__ == '__main__':
# Start your bot!
main()
Chatter encourages you to separate concerns by keeping your chat client specific message
transformations in your ChatClient
classes and letting all your Feature
classes handle
standardised
Messages
. This:
- Makes your code more testable
- Makes your bot super portable - being able to handle a new chat client is as simple as creating a
new
ChatClient
subclass and writing your custom logic for transforming messages between Bot and Presentation format.
You could even use a command-line frontend for testing your bot's logic:
from chatter_py import ChatClient, Message
class CommandLine(ChatClient):
def send_to_client(self, message: Message):
print("Chatter-bot: " + " ".join(message.text))
def start_listening(self) -> None:
while True:
input_message = input("You: ")
message_to_bot = Message(text=input_message.split(" "), room="")
self.send_to_bot(message_to_bot)
Now every time you write a new chat client class, all you have to focus on testing is given a Bot message, you receive the correct chat message, and vice versa - simple!
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
File details
Details for the file chatter_py-1.0.1.tar.gz
.
File metadata
- Download URL: chatter_py-1.0.1.tar.gz
- Upload date:
- Size: 9.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.10.1 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 037ae2965bee9bcb1da405a24bf4ceaf1f89a3516d54439ebfc39003e48bcf70 |
|
MD5 | cccc1efb682ef74ccb3ce72f223b722d |
|
BLAKE2b-256 | f609c465d1ea0a11d58537b32142d417c95716b0439bbbb8dcfd144fb4fa4226 |
File details
Details for the file chatter_py-1.0.1-py3-none-any.whl
.
File metadata
- Download URL: chatter_py-1.0.1-py3-none-any.whl
- Upload date:
- Size: 8.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.10.1 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9b90b54ce8d4eecd2e28b5ca4070cc125681caa8fb199a9100901449d642d443 |
|
MD5 | 91fd9b4766c515a9d006af70137142d1 |
|
BLAKE2b-256 | 3668a0525bfab79775d55c91214e5e51381aa4be5999ed3205832820159064c8 |