Awesome Open Source
Awesome Open Source

Marvin, the paranoid bot (β stage)

Travis Hackage

Marvin is an attempt to combine the ease of use of hubot with the typesafety and easy syntax of Haskell and the performance gains from compiled languages.

Installing and using marvin

The verbose documentation can be found on readthedocs https://marvin.readthedocs.io. It should hopefully answer all your questions.

Installation instructions are on this documentation page.

Links

A teaser

module MyScript where

import Marvin.Prelude

script :: (IsAdapter a, SupportsFiles a) => ScriptInit a
script = defineScript "my-script" $ do
    hear "sudo (.+)" $ do
        match <- getMatch

        reply $(isL "All right, i'll do #{match !! 1}")
    
    respond "repeat" $ do
        message <- getMessage

        send $(isL "You wrote #{message}")
    
    respond "what is in file ([\\w\\._/-]+)\\??" $ do
        match <- getMatch 
        let file = match !! 1

        contents <- liftIO $ readFile file

        send contents
    
    respond "upload file ([\\w\\._/-]+)" $ do
        [_, filepath] <- getMatch
        chan <- getChannel
        f <- sendFile filepath
        case res of
            Left err -> send $(isL "Failed to share file: #{err}")
            Right _  -> send "File successfully uploaded"
    
    enterIn "random" $ do
        user <- getUser
        send $(isL "Hello #{user^.username} welcome to the random channel!")
    
    fileSharedIn "announcements" $ do
        file <- getFile
        safeFileToDir file "shared-files"

Status of the project

I currently do not actively develop this project. I am happy to merge pull requests but I will likely not have time to work on issues myself. It is also likely that the adapters are not up-to-date with the APIs they are supposed to interact with so be aware.

Maintenance Level: Happy to merge

Accepting maintainers: Yes

For information on the meaning of this see commercialhaskell guide to OSS maintenance

Issues and errors

If you are a marvin user, please report any error, issues, or improvement suggestions to the issue section or write me an email.

Testing

I welcome anybody who tests marvin by deploying it. Especially testing different adapters is a huge help.

Hacking

If you want to hack on marvin, feel free to do so and send me your changes as pull requests.

Current hot places to get started:

  • Convenient HTTP requests API in Marvin.Util.HTTP.
  • Convenient JSON handling API in Marvin.Util.JSON.
  • New adapters as submodules of Marvin.Adapter.
  • A basic library of scripts (maybe as a Marvin.Scripts.Prelude module?) (inspiration: https://awesomeopensource.com/project/github/hubot-scripts)
Related Awesome Lists
Top Programming Languages
Top Projects

Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
Haskell (20,503
Slack (13,003
Telegram (11,962
Adapter (11,212
Irc (6,269
Telegram Bot (5,945
Hubot (2,572
Slack Bot (2,294
Irc Bot (1,268
Bot Framework (840