GithubHelp home page GithubHelp logo

blitzkraft / wee-slack Goto Github PK

View Code? Open in Web Editor NEW

This project forked from wee-slack/wee-slack

0.0 2.0 0.0 1.49 MB

A WeeChat plugin for Slack.com. Synchronizes read markers, provides typing notification, search, etc..

License: MIT License

Python 100.00%

wee-slack's Introduction

wee-slack

News: 1.0-RC1 is here. It is a pretty massive refactor, and fixes many of the current issues listed on github. Because there was no good way to do this, it breaks some/many existing PRs. (please report bugs in #wee-slack on freenode)

A WeeChat native client for Slack.com. Provides supplemental features only available in the web/mobile clients such as: synchronizing read markers, typing notification, threads (and more)! Connects via the Slack API, and maintains a persistent websocket for notification of events.

animated screenshot

Features

  • New Threads support!
  • New Slack Status support!
  • Slash commands (including custom ones!)
  • Upload to slack capabilities!
  • Emoji reactions!
  • Edited messages work just like the official clients, where the original message changes and has (edited) appended.
  • Unfurled urls dont generate a new message, but replace the original with more info as it is received.
  • Regex style message editing (s/oldtext/newtext/)
  • Caches message history, making startup MUCH faster
  • Smarter redraw of dynamic buffer info (much lower CPU %)
  • beta UTF-8 support
  • Doesn't use IRC gateway. Connects directly with Slack via API/Websocket
  • Multiple Teams supported! Just add multiple api tokens separated by commas
  • Replays history automatically during startup. (and sets read marker to the correct position in history)
  • Open channels synchronized with Slack. When you open/close a channel on another client it is reflected in wee-slack
  • Colorized nicks in buffer list when used with buffers.pl
  • Colorized nicks in chat
  • Supports bidirectional slack read notifications for all channels. (never reread the same messages on the web client or other devices).
  • Typing notification, so you can see when others are typing, and they can see when you type. Appears globally for direct messages
  • Away/back status handling
  • Expands/shows metadata for things like tweets/links
  • Displays edited messages (slack.com irc mode currently doesn't show these)
  • Super fun debug mode. See what the websocket is saying with /slack debug

In Development

  • add notification of new versions of wee-slack

Dependencies

Setup

0.

wee-slack doesn't use the Slack IRC gateway. If you currently connect via the gateway, you should probably remove the server definition.

/server list
    All servers:
        slack
/server del slack
/python reload

1. Install dependencies

OSX and Linux
pip install websocket-client
FreeBSD
pkg install py27-websocket-client py27-six

2. copy wee_slack.py to ~/.weechat/python/autoload

wget https://raw.githubusercontent.com/wee-slack/wee-slack/master/wee_slack.py
cp wee_slack.py ~/.weechat/python/autoload

3. Start WeeChat

weechat

NOTE: If weechat is already running, the script can be loaded using /python load python/autoload/wee_slack.py

4. Add your Slack API key(s)

/set plugins.var.python.slack.slack_api_token [YOUR_SLACK_TOKEN]

^^ (find this at https://api.slack.com/custom-integrations/legacy-tokens using the "Request token" button)

If you don't want to store your API token in plaintext you can use the secure features of weechat:

/secure passphrase this is a super secret password
/secure set slack_token [YOUR_SLACK_TOKEN]
/set plugins.var.python.slack.slack_api_token ${sec.data.slack_token}
Optional: If you would like to connect to multiple groups, use the above command with multiple tokens separated by commas. (NO SPACES)
/set plugins.var.python.slack.slack_api_token [token1],[token2],[token3]

5. $PROFIT$

/save
/python reload

Commands

Join a channel:

/join [channel]
/slack join [channel]

Start a direct chat with someone:

/query [username]
/slack talk [username]

List channels:

/slack channels

List users:

/slack users

Close channel/dm:

/part
/leave
/close

Set yourself away/back:

/slack away
/slack back

Modify previous message:

s/old text/new text/

Replace all instances of text in previous message:

s/old text/new text/g

Delete previous message:

s///

Add a reaction to the nth last message. The number can be omitted and defaults to the last message. The + can be replaced with a - to remove a reaction instead.

3+:smile:

Set all read markers to a specific time:

/slack setallreadmarkers (time in epoch)

Upload a file to the current slack buffer:

/slack upload [file_path]

Run a Slack slash command. Simply prepend /slack slash to what you'd type in the official clients.:

/slack slash /desiredcommand arg1 arg2 arg3

Debug mode:

/slack debug

Threads

Start a new thread on the most recent message The number indicates which message in the buffer to reply to, in reverse time order:

/reply 1 here is a threaded reply to the most recent message!

Open an existing thread as a channel. The argument is the thread identifier, which is printed in square brackets with every threaded message in a channel:

/thread af8

Label a thread with a memorable name. The above command will open a channel called af8, but perhaps you want to call it "meetingnotes". To do so, select that buffer and type:

/label meetingnotes

Note: labels do not persist once a thread buffer is closed

Status

Set your Slack status on a given team:

/slack status [:emoji:] [Status message]

Example:

/slack status :ghost: Boo!

Optional settings

Turn off colorized nicks:

/set plugins.var.python.slack.colorize_nicks 0

Turn on colorized messages (messages match nick color):

/set plugins.var.python.slack.colorize_nicks 1

Set channel prefix to something other than my-slack-subdomain.slack.com (e.g. when using buffers.pl):

/set plugins.var.python.slack.server_aliases "my-slack-subdomain:mysub,other-domain:coolbeans"

Show who added each reaction. Makes reactions appear like [:smile:(@nick1,@nick2)] instead of [:smile:2].

/set plugins.var.python.slack.show_reaction_nicks on

Show typing notification in main bar (slack_typing_notice):

/set weechat.bar.status.items [buffer_count],[buffer_plugin],buffer_number+:+buffer_name+{buffer_nicklist_count}+buffer_filter,[hotlist],completion,scroll,slack_typing_notice

Show channel name in hotlist after activity

/set weechat.look.hotlist_names_level 14

Support

wee-slack is provided without any warranty whatsoever, but you are welcome to ask questions in #wee-slack on freenode.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.