All Projects → JustusAdam → Marvin

JustusAdam / Marvin

Licence: bsd-3-clause
The paranoid bot (framework)

Programming Languages

haskell
3896 projects

Projects that are alternatives of or similar to Marvin

Torpedo
Pluggable, multi-network asynchronous chat bot written in Go
Stars: ✭ 19 (-62.75%)
Mutual labels:  telegram-bot, slack-bot, telegram, slack, irc
Urban Bot
🤖 The universal chatbot library based on React. Write once, launch Telegram, Facebook, Slack, ... every messenger with chatbots
Stars: ✭ 223 (+337.25%)
Mutual labels:  bot, telegram-bot, slack-bot, telegram
Sactive Bot
😈 An extensible chat bot framework. sactive-bot is an evolution of the open source hubot project. - https://www.shipengqi.top/sactive-bot .
Stars: ✭ 212 (+315.69%)
Mutual labels:  bot, hubot, slack-bot, slack
Notify
A dead simple Go library for sending notifications to various messaging services.
Stars: ✭ 727 (+1325.49%)
Mutual labels:  bot, telegram, slack
Aiva
AIVA (A.I. Virtual Assistant): General-purpose virtual assistant for developers.
Stars: ✭ 693 (+1258.82%)
Mutual labels:  bot, telegram, slack
Zabbix In Telegram
Zabbix Notifications with graphs in Telegram
Stars: ✭ 710 (+1292.16%)
Mutual labels:  bot, telegram-bot, telegram
Telegram Bot
Ruby gem for building Telegram Bot with optional Rails integration
Stars: ✭ 433 (+749.02%)
Mutual labels:  bot, telegram-bot, telegram
Java Telegram Bot Api
Telegram Bot API for Java
Stars: ✭ 819 (+1505.88%)
Mutual labels:  bot, telegram-bot, telegram
Informer
A Telegram Mass Surveillance Bot in Python
Stars: ✭ 745 (+1360.78%)
Mutual labels:  bot, telegram-bot, telegram
Obed Bot
🍴 Obed Slack Bot, na požiadanie kontroluje aktuálnu ponuku denného menu reštaurácii. [only for slovak|czech users]
Stars: ✭ 32 (-37.25%)
Mutual labels:  bot, slack-bot, slack
Irackbot
Bridge between Slack and IRC channels allowing message filtering and logging while keeping communication public
Stars: ✭ 25 (-50.98%)
Mutual labels:  bot, slack, irc
Pytelbot
A playful bot in telegram
Stars: ✭ 12 (-76.47%)
Mutual labels:  bot, telegram-bot, telegram
Slacker
Slack Bot Framework
Stars: ✭ 495 (+870.59%)
Mutual labels:  bot, slack-bot, slack
Telegraf
Modern Telegram Bot Framework for Node.js
Stars: ✭ 5,178 (+10052.94%)
Mutual labels:  bot, telegram-bot, telegram
Integrations
Connect your App to Multiple Messaging Channels with the W3C Open standard.
Stars: ✭ 721 (+1313.73%)
Mutual labels:  bot, telegram, slack
Tgbot Cpp
C++ library for Telegram bot API
Stars: ✭ 439 (+760.78%)
Mutual labels:  bot, telegram-bot, telegram
Inventory Hunter
⚡️ Get notified as soon as your next CPU, GPU, or game console is in stock
Stars: ✭ 778 (+1425.49%)
Mutual labels:  bot, telegram, slack
Spytrojan keylogger
[Solo para programadores] Troyano espía | Keylogger solo para Windows, se replica en el sistema y se inicia automaticamente al iniciar sesión. | Envío de registro mediante [Base de Datos], [Gmail] o [BotTelegram].
Stars: ✭ 32 (-37.25%)
Mutual labels:  bot, telegram-bot, telegram
Groupbutler
This bot can help you in managing your group with rules, anti-flood, description, custom triggers, and much more!
Stars: ✭ 399 (+682.35%)
Mutual labels:  bot, telegram-bot, telegram
Awesome Bots
Awesome Links about bots.
Stars: ✭ 412 (+707.84%)
Mutual labels:  bot, telegram, slack

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"

Testing and Talking

There's a slack channel where you can ask questions or play around with a test instance of marvin.

It's currently invite-only, so send me an email if you would like to join.

Status of the project

I try to respond to issues and I am happy to review and merge pull requests. I have some more features planned but I don't yet know when I'll get the time to implement them.

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://github.com/github/hubot-scripts)
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].