* Added base admin login/logout flows * Ignore local database * Channel model * Admin interface for channels and plugins * Added database tests along with workflows * Added some docstrings * Ignore .coverage file * Creating plugins docs WIP * Documentation * Black everything * Some documentation * Coverage for the plugins package as well * DB Fixes * Absolute FROM in Dockerfile * Database and logging fixes * Slack: Support private channels * Added pre-commit * black'd * Fixed UserQuery.create * Fixed ChannelPluginQuery.create exists call * Added ChannelPlugin menu for debugging * Ignore sqlite databases * Updated contributing docs
		
			
				
	
	
	
	
		
			677 B
		
	
	
	
	
	
	
	
			
		
		
	
	
			677 B
		
	
	
	
	
	
	
	
Creating a Plugin
Example
This simple "Marco Polo" plugin will answer Polo to the user that say Marco:
# mypackage/plugins.py
from butterrobot.plugins import Plugin
from butterrobot.objects import Message
class PingPlugin(Plugin):
    name = "Marco/Polo"
    id = "test.marco"
    @classmethod
    def on_message(cls, message, **kwargs):
        if message.text == "Marco":
            yield Message(
                chat=message.chat, reply_to=message.id, text=f"polo",
            )
# setup.py
# ...
entrypoints = {
    "test.marco" = "mypackage.plugins:MarcoPlugin"
}
setup(
    # ...
    entry_points=entrypoints,
    # ...
)