Skip to content

A customizable Slack bot tool with pet-like friendliness written in swift

License

Notifications You must be signed in to change notification settings

YutoMizutani/SlackPet

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

38 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SlackPet

A customizable Slack bot tool with pet-like friendliness written in swift.

初期設定

exampleEnv.swift でコメントアウトされている部分を env.swift に追加してください。 各 Secrets("")"" 内に記述することで動作します。

  • bitrisePersonalAccessToken: Bitrise のパーソナルアクセストークン
  • slackBotToken: SlackBot トークン
  • slackShellSuperUserIDs: SlackBot で Shell コマンドを実行可能なユーザーID名
  • githubUserName: GitHub のユーザ名
  • githubPersonalToken: GitHub のパーソナルアクセストークン
  • githubTargetUser: GitHub の対象リポジトリユーザー名
  • githubTargetRepository: GitHub の対象リポジトリ名
public extension Secrets {
    static let bitrisePersonalAccessToken = Secrets("")
    static let slackBotToken = Secrets("")
    static let slackShellSuperUserIDs = Secrets([])
    static let githubUserName = Secrets("")
    static let githubPersonalToken = Secrets("")
    static let githubTargetUser = Secrets("")
    static let githubTargetRepository = Secrets("")
}

実行

実行には以下のコマンドを入力してください。

$ make all

Bitrise トリガービルド

Bitrise のビルドを開始します。

反応メッセージ

:hammer: + Bitrise app タイトル

メッセージ例

🔨 SlackPet
branch: master
workflow: test
CUSTOM_API_KEY: XXXX-XXXX-XXXX-XXXX
CUSTOM_MESSAGE: Foo Bar

オプション

  • 2行目以降に branch: + Branch 名 で実行ブランチを指定する必要があります。
  • 2行目以降に workflow: + Workflow 名 で実行ワークフローを指定できます。
  • 2行目以降に Key 名 + : + Value 名 でカスタム環境変数を指定できます。

スクリーンショット

screenshot 74

GitHub issue 追加

SlackBot が存在するチャンネルでの発言に応じて GitHub に issue を作成します。

反応メッセージ

:ticket: + 任意のタイトル + (改行) + 任意の内容

メッセージ例

🎫 Issue title
labels: enhancement, help wanted
assignees: YutoMizutani

オプション

  • 2行目以降に ( labels: or label: ) + 存在するラベル名 でラベルがつきます (存在しない場合はラベルが生成されます)
  • 2行目以降に assignees: + 存在するコントリビュータ名 でアサイン指定ができます

スクリーンショット

screenshot 291

Slack emoji 作成

文字列からカスタム絵文字用の emoji 画像を生成し,アップロードします。

⚠️ 現状 Slack には Custom emoji の作成に対応した API が公開されていないため,Bot は追加用 URL を発行します。

メッセージ例

🎨 絵文
字。
color: #000000
background: #FFFFFF

オプション

  • 2行目以降に ( color: or textColor: or text: ) + ( 0xRRGGBB or 0xAARRGGBB or #RRGGBB #AARRGGBB ) で文字色を指定できます。
  • 2行目以降に ( background: or backgroundColor: or back: ) + ( 0xRRGGBB or 0xAARRGGBB or #RRGGBB #AARRGGBB ) で背景色を指定できます (未指定の場合は透過します)。

スクリーンショット

screenshot 1

screenshot 4

longcat

longcat を出力します。

反応メッセージ

:cat: (+ オプション) + (任意の文字)

メッセージ例

🐱 -l 5 -i 0.5
Usage of longcat:
  -R    flip vertical
  -i float
        rate of intervals (default 1)
  -l int
        number of columns (default 1)
  -n int
        how long cat (default 1)
  -o string
        output image file
  -r    flip holizontal

スクリーンショット

screenshot 100

ojichat

ojichat を出力します。

反応メッセージ

:older_man: (+ オプション) + (任意の文字)

メッセージ例

👴 たかね -e 3
Options:
  -h, --help      ヘルプを表示.
  -V, --version   バージョンを表示.
  -e <number>     絵文字/顔文字の最大連続数 [default: 4].
  -p <level>      句読点挿入頻度レベル [min:0, max:3] [default: 0].

スクリーンショット

screenshot 305

シェルコマンド

任意のシェルコマンドを実行します。パイプ等も使用可能なため,環境変数に指定されたユーザーのみ実行が許可されます。

反応メッセージ

(:shell: or :heavy_dollar_sign: ) (任意のコマンド)

メッセージ例

🐚 echo Hello, world!

スクリーンショット

タイマー

入力した時間後に Slack から通知するタイマー機能です。

反応メッセージ

:clock + x時間 + x分 + (伝え or 知らせ or 教え)

メッセージ例

🕒 今から寝るね!2時間後に「もう起きてー!」って知らせて!

オプション

「」 を利用することで,通知時に任意のメッセージを含めることができます。

スクリーンショット

screenshot 289

screenshot 290

screenshot 303

イースターエッグ

Hello

  • hello (完全一致) -> Hello, world!!

スクリーンショット

screenshot 297

Echoes

  • こんにちは -> こんにちは
  • こんにちわ -> こんにちわ

スクリーンショット

screenshot 298

Emotions

  • ありがとう -> どういたしまして!

スクリーンショット

screenshot 299

開発者用

詳しくは ./Makefile を参照して下さい。

環境構築

Swift のインストールなど

$ make deps

依存関係のインストール

$ make install

依存関係のアップデート

$ make update

Xcode を開く

$ make open

ビルド

$ make build

ビルドして実行 (Run)

$ make run

テスト

$ make test

クリーン

$ make clean

About

A customizable Slack bot tool with pet-like friendliness written in swift

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published