Skip to content

Instantly share code, notes, and snippets.

@katabame
Last active October 9, 2016 12:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save katabame/2a737eb002453f87c28fe50f983acc33 to your computer and use it in GitHub Desktop.
Save katabame/2a737eb002453f87c28fe50f983acc33 to your computer and use it in GitHub Desktop.
TravisCIの通知をWebHookを利用し、Discordに送るBotです。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# using
from flask import Flask, request, Response, jsonify, abort
from datetime import datetime
import json
import requests
# define basic vars
app = Flask(__name__)
api_token = "<API token here>"
channel_id = "<Channel ID here>"
# wait connection
@app.route('/travisbot', methods=['GET', 'POST'])
def index():
if request.method == 'POST':
json_root = json.loads(request.form["payload"]) # load json
# print("json_root:\n" + str(json_root) + "\n\n") # print json (opt.)
start = datetime.strptime(json_root["started_at"], "%Y-%m-%dT%H:%M:%SZ") # define started time
finish = datetime.strptime(json_root["finished_at"], "%Y-%m-%dT%H:%M:%SZ") # define finished time
buildTime = (finish - start).total_seconds() # calc build time
# define vars for discord rest api
message = "Build #" + json_root["number"] + " was " + json_root["status_message"] + ".\n```\nBuild: #" + json_root["number"] + "\nStatus: " + json_root["status_message"] + "\nBuildTime: " + str(buildTime) + " sec\nCommit: " + json_root["commit"] + "```"
header = {"Authorization": "Bot {}".format(api_token)}
data = {"content": message}
url = "https://discordapp.com/api/channels/" + channel_id + "/messages"
requests.post(url, data, headers=header) # post message via rest api
return jsonify(json_root) # return
abort(405) # Method Now Allowed
# host web server
if __name__ == '__main__':
app.run(host='0.0.0.0')

Travis Bot

TravisCIの通知をWebHookを利用し、Discordに送るBotです。

使い方

api_tokenchannel_idを埋めてください。(Discordのものです)
デフォルトでは http://0.0.0.0:5000/travisbot で待ち受けしています。 nginxで転送するなりしてください。
TravisCI側でWebHookを有効にして設定したURLにHookを送ってください。
投稿される内容は message を編集することで変更できます。 json_root 以下は # print json (opt.) をコメントアウトして標準出力するなりTravisCIのドキュメント読むなりしてください。

License

WTFPLです。 原作者表示してくれるとうれしい。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment