项目作者: vbalazs

项目描述 :
Sends notification to Slack about new Reddit posts
高级语言: Ruby
项目地址: git://github.com/vbalazs/reddit-slack-notifier.git
创建时间: 2017-07-26T06:28:10Z
项目社区:https://github.com/vbalazs/reddit-slack-notifier

开源协议:MIT License

下载


Reddit post Slack notifications

Codeship Status for vbalazs/reddit-slack-notifier Dependency Status Code Climate Test Coverage Issue Count

Sends notification to Slack about new Reddit posts.
The motivation was that we are using with a private subreddit as a forum but we lacked notifications about new posts.

It can send notifications into multiple channels specified by tags in the reddit post’s title.
Some examples:

  • Reddit post title: “[ruby] Ruby is awesome” -> posts it to the ruby channel
  • Reddit post title: “[elixir][kotlin] What to learn next?” -> posts it to the elixir and kotlin channels
  • Reddit post title: “What to do on our next team building?” -> posts it to the channel set as default

It does not check for channel existence on Slack therefore posts tagged with non-existent channels will be ignored.

How to use

1. Make sure you have the correct ruby version installed

Refer to .ruby-version.

2. Configuration

The application uses environment variables for configuration:

LOG_LEVEL: level supported by Ruby Logger. It logs to STDOUT so you might want to redirect the output of the script to a file.
Default: info.

SLACK_INCOMING_WEBHOOK_URL: Slack webhook url, something like: https://hooks.slack.com/services/XXXXXYYYYZZ
Specify your slack bot settings here: name, avatar, etc.

SLACK_DEFAULT_CHANNEL: If no tags found or the tag is not in the whitelist, the notification will be sent here.
Default: random

SLACK_CHANNELS_WHITELIST: Comma separated lists of channels where the notifier allowed to send messages. Add defualt channel explicitly if you want to allow that in a multiple tags scenario.
For example: ruby,elixir,dev-ops,r_lang

REDDIT_USER, REDDIT_PASSWORD: The credentials of your or your bot’s user on Reddit

REDDIT_SUBREDDIT: The subreddit will be polled for new posts.
Default: aww

REDDIT_APP_CLIENT_ID, REDDIT_APP_SECRET: Create an app on Reddit with script type. Fill redirect uri with some bogus value, it’s not used.

REDDIT_APP_USER_AGENT: Set your User-Agent for Reddit, you can read about this in their API rules
Default: Redd:RedditToSlack-rb:v1.0.0 (by /u/$YOUR_REDDIT_USER)

STORE: At the moment just a YAML file is supported to store “last_run” information between executions. You can specify a file path without the extension.
Default: $app_dir/db

3. Install the dependencies

bundle install

Schedule the script

Use your favourite tools and methods, for example with cron:

*/1 * * * * source ~/env.sh && cd ~/app && bundle exec run.rb >> logs/app.log 2>>logs/stderr.log

Notice
Don’t set the interval too short because the script runs might overlap and you will have a bad time (probably duplicated slack notifications).
Also, watch out for reddit API rate limits.

Use at your own risk!