6
6

More than 5 years have passed since last update.

Slackチームに新しくユーザが参加したらダイレクトラブメールを新規さんに送りつける

Posted at

はじめに

私は kosen11s という某超次元サッカーアニメチームのような名前の変態しかいない団体に属しているわけですが、
そこで「 自動化!自動化!自動化ッ!!! 」と当初は騒がれていたので自動化をしました。

main.jpg

(レベルファイブさんごめんなさい!!!)

ソースコード

kosen11s/slack_welcome_kosen11s

ぶっちゃけいうとGitHubのリポジトリをみてくれ!!って言う感じにしたい

環境

Python 3.5.1
pip 8.1.2

実装

$ git clone https://github.com/kosen11s/slack_welcome_kosen11s.git
$ cd slack_welcome_kosen11s
$ pip install -r requiredments.txt

SlackのAPIキー等は今回省略させていただきます!!申し訳な〜い!

run.py
from slackbot.bot import Bot
import slackbot_settings

if __name__ == "__main__":
    bot = Bot()
    bot.run()

これをずっと動かしている意味はあるのかどうかはわかりませんが、なんかログインユーザがいるのはなんか嬉しいやん?

welcome_bot.py
from slacker import Slacker
import json, requests
import slackbot_settings

welcomeMessage = """
Welcome to kosen11s:tada::tada::tada::tada:\n
まずは #profile チャンネルで簡単に自己紹介してね:heart:\n
他にも #github , #muscle , #nsfw , #skype があるよ!適当に入ってね:raryosu:\n
それとこれが最後!以下のリンクのスキルシートに記入をお願いしてるから記入お願いします!\n
URLはひ・み・つ♡\n
それじゃよろしくね:octocat:
"""

class Member(object):
    memberCount = 0
    def setMember(self):
        data = getJson()
        self.memberCount = len(data['channel']['members'])

def getJson():
    url = 'https://slack.com/api/channels.join'
    parameters = {
        'token' : slackbot_settings.API_TOKEN_TEAM,
        'name' : 'random'}
    r = requests.get(url, params = parameters)
    data = json.loads(r.text)
    mem = Member()
    if mem.memberCount == 0:
        mem.memberCount = len(data['channel']['members'])
    return data

def welcomePost(user):
    slack = Slacker(slackbot_settings.API_TOKEN)
    slack.chat.post_message(
        '@' + user,
        'Hi! ' + user + " " + welcomeMessage,
        as_user = True,
        link_names = 1
    )

if __name__ == '__main__':
    mem = Member()
    mem.setMember()
    while True:
        jsonChannel = getJson()
        if mem.memberCount < len(jsonChannel['channel']['members']):
            print(mem.memberCount)
            mem.memberCount = len(jsonChannel['channel']['members'])
            url = 'https://slack.com/api/users.info'
            parameters = {
                'token' : slackbot_settings.API_TOKEN_TEAM,
                'user' : jsonChannel['channel']['members'][0]}
            r_2 = requests.get(url, params = parameters)
            jsonUser = json.loads(r_2.text)
            welcomePost(jsonUser['user']['name'])

THE適当ですね。

slackbot_settings.py
API_TOKEN = 'xoxb-***********-************************'
API_TOKEN_TEAM = 'xoxp-***********-***********-***********-**********'

これで実行すると???

スクリーンショット_2016-08-02_午後8_40_51.png

新規さんに分身した私のもと(テストのためユーザを直接指定)へこんな感じにメッセージが来ましたわ!!!

終わりに

チャットボットが熱くなる前に何故か片足突っ込んでしまった私ですがみなさんもまずは簡単にSlackBOTとか作ってみてはいかがでしょうか?

スクリーンショット 2016-08-02 午後8.51.12.png

6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6