All Projects → abourget → Slick

abourget / Slick

Slick, a Slack bot in Go

Programming Languages

go
31211 projects - #10 most used programming language
golang
3204 projects

Projects that are alternatives of or similar to Slick

Go Sarah
Simple yet customizable bot framework written in Go.
Stars: ✭ 188 (+25.33%)
Mutual labels:  bot, bot-framework, slack-bot, slack
Intelligo
🤖 Chatbot Framework for Node.js.
Stars: ✭ 347 (+131.33%)
Mutual labels:  bot, bot-framework, slack-bot, slack
Slack Machine
A sexy, simple, yet powerful and extendable Slack bot
Stars: ✭ 91 (-39.33%)
Mutual labels:  bot, bot-framework, slack-bot, slack
Slacker
Slack Bot Framework
Stars: ✭ 495 (+230%)
Mutual labels:  bot, bot-framework, slack-bot, slack
Jbot
Make Slack and Facebook Bots in Java.
Stars: ✭ 1,148 (+665.33%)
Mutual labels:  bot, bot-framework, slack-bot, slack
Botonomous
A PHP Framework For Creating Autonomous Slack Bots
Stars: ✭ 109 (-27.33%)
Mutual labels:  bot, slack-bot, slack
Botkit
Botkit is an open source developer tool for building chat bots, apps and custom integrations for major messaging platforms.
Stars: ✭ 10,555 (+6936.67%)
Mutual labels:  bot, slack, conversational-ui
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 (-78.67%)
Mutual labels:  bot, slack-bot, slack
Hubcommander
A Slack bot for GitHub organization management -- and other things too
Stars: ✭ 1,149 (+666%)
Mutual labels:  bot, slack-bot, slack
Serverless Slack App
A Serverless.js Slack App Boilerplate with OAuth and Bot actions
Stars: ✭ 217 (+44.67%)
Mutual labels:  bot, bot-framework, slack
Botframework Solutions
Welcome to the Bot Framework Solutions repository which is the home for a set of templates and solutions to help build advanced conversational experiences using Azure Bot Service and Bot Framework. Microsoft Bot Framework is a comprehensive framework for building enterprise-grade conversational AI experiences.
Stars: ✭ 965 (+543.33%)
Mutual labels:  bot, bot-framework, conversational-ui
Slack Block Builder
Lightweight, no-dependency JavaScript library for creating Slack Block Kit UIs, with a builder syntax, inspired by SwiftUI.
Stars: ✭ 129 (-14%)
Mutual labels:  bot-framework, slack-bot, slack
Stealth
An open source Ruby framework for text and voice chatbots. 🤖
Stars: ✭ 481 (+220.67%)
Mutual labels:  bot, bot-framework, conversational-ui
Urban Bot
🤖 The universal chatbot library based on React. Write once, launch Telegram, Facebook, Slack, ... every messenger with chatbots
Stars: ✭ 223 (+48.67%)
Mutual labels:  bot, bot-framework, slack-bot
Botframework Webchat
A highly-customizable web-based client for Azure Bot Services.
Stars: ✭ 1,198 (+698.67%)
Mutual labels:  bot, bot-framework, conversational-ui
Marvin
The paranoid bot (framework)
Stars: ✭ 51 (-66%)
Mutual labels:  bot, slack-bot, slack
Ex mustang
✨ A simple, clueless bot
Stars: ✭ 67 (-55.33%)
Mutual labels:  bot, slack-bot, slack
Slacky
🐍 The BEST Slack Selfbot on GitHub | No Bot User, Acts Like It's You! ⭐️
Stars: ✭ 80 (-46.67%)
Mutual labels:  bot, slack-bot, slack
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 (+41.33%)
Mutual labels:  bot, slack-bot, slack
Botpress
🤖 Dev tools to reliably understand text and automate conversations. Built-in NLU. Connect & deploy on any messaging channel (Slack, MS Teams, website, Telegram, etc).
Stars: ✭ 9,486 (+6224%)
Mutual labels:  bot, bot-framework, conversational-ui

Slick - A Slack bot in Go

Build Status

Slick is a Slack bot to do ChatOps and other cool things.

Features

Supported features:

  • Plugin interface for chat messages
  • Plugin-based HTTP handlers
  • Simple API to reply to users
  • Keeps an internal state of channels, users and their state.
  • Listen for Reactions; take actions based on them (like buttons).
  • Simple API to message users privately
  • Simple API to update a previously sent message
  • Simple API to delete bot messages after a given time duration.
  • Easy plugin interface, listeners with criterias like:
    • Messages directed to the bot only
    • Private or public messages
    • Listens for a duration or until a given time.Time
    • Selectively on a channel, or from a user
    • Expire listeners and unregister them dynamically
    • Supports listening for edits or not
    • Regexp match messages, or Contains checks
  • Built-in KV store for data persistence (backed by BoltDB and JSON serialization)
  • The bot has a mood (happy and hyper) which changes randomly.. you can base some decisions on it, to spice up conversations.
  • Supports listening for any Slack events (ChannelCreated, ChannelJoined, EmojiChanged, FileShared, GroupArchived, etc..)
  • A PubSub system to facilitate inter-plugins (or chat-to-web) communications.

Stock plugins

  1. Recognition: a plugin to recognize your peers (!recognize @user1 for doing an awesome job)

  2. Faceoff: a game to learn the names and faces of your colleagues. The code for this one is interesting to learn to build interactive features with slick.

  3. Vote: a simple voting plugin to decide where to lunch

  4. Funny: a bunch of jokes and memes in reply to some strings in channels.. (inspired by Hubot's jokes)

  5. Healthy: a very simple plugin that pokes URLs and reports on their health

  6. Deployer: an example plugin to do deployments wth ansible (you'll probably want to roll out your own though).

  7. Todo: todo list manager, one per channel

Local build and install

Try it with:

go get github.com/abourget/slick
cd $GOPATH/src/github.com/abourget/slick/example-bot
go install -v && $GOPATH/bin/example-bot

Copy the slick.sample.conf file to $HOME/.slick and tweak at will.

You might need mercurial installed to get some dependencies.

Writing your own plugin

Example code to handle deployments:

// listenDeploy was hooked into a plugin elsewhere..
func listenDeploy() {
	keywords := []string{"project1", "project2", "project3"}
	bot.Listen(&slick.Listener{
		Matches:        regexp.MustCompile("(can you|could you|please|plz|c'mon|icanhaz) deploy (" + strings.Join(keywords, "|") + ") (with|using)( revision| commit)? `?([a-z0-9]{4,42})`?"),
		MentionsMeOnly: true,
		MessageHandlerFunc: func(listen *slick.Listener, msg *slick.Message) {

			projectName := msg.Match[2]
			revision := msg.Match[5]

			go func() {
				go msg.AddReaction("work_hard")
				defer msg.RemoveReaction("work_hard")

				// Do the deployment with projectName and revision...

			}()
		},
	})
}

Take inspiration by looking at the different plugins, like Funny, Healthy, Storm, Deployer, etc.. Don't forget to update your bot's plugins list, like in example-bot/main.go

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].