/
kerbal-stuff.coffee
64 lines (59 loc) · 2.49 KB
/
kerbal-stuff.coffee
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# Description
# Ask hubot for Kerbal Space Program mods
#
# Configuration:
# HUBOT_KS_API_URL Kerbalstuff api url, defaults to https://spacedock.info/api (just in case someday is changed)
# HUBOT_KS_MAX_RESULTS Max results to respond in chat, defaults to 5
#
# Commands:
# hubot ks find <query> - Search in Kerbalstuff the given word
# hubot ks top - Show top mods in Kerbalstuff
# hubot ks mew - Show new mods in Kerbalstuff
# hubot ks featured - Show featured mods in Kerbalstuff
#
# Author:
# hashashin <gentoo.power@gmail.com>
api_url = process.env.HUBOT_KS_API_URL || "https://spacedock.info/api"
maxresults = process.env.HUBOT_KS_MAX_RESULTS || 5
module.exports = (robot) ->
robot.respond /ks find(?:\s+(.*))?$/i, (msg) ->
query = msg.match[1]
msg.http("#{api_url}/search/mod?query=#{query}")
.get() (err, res, body) ->
try
json = JSON.parse(body)
if json.length >= maxresults
for mod in [maxresults..0]
msg.send "#{json[mod].name} by #{json[mod].author} -- ksp:#{json[mod].versions[0].game_version} -- url: https://spacedock.info/mod/#{json[mod].id}"
else
for mod in json
msg.send "#{mod.name} by #{mod.author} ksp:#{mod.versions[0].game_version} -- url: https://spacedock.info/mod/#{mod.id}"
catch err
msg.send err
robot.respond /ks top/i, (msg) ->
msg.http("#{api_url}/browse/top")
.get() (err, res, body) ->
try
json = JSON.parse(body)
for mod in [maxresults..0]
msg.send "#{json[mod].name} by #{json[mod].author} -- ksp:#{json[mod].versions[0].game_version} -- url: https://spacedock.info/mod/#{json[mod].id}"
catch err
msg.send err
robot.respond /ks new/i, (msg) ->
msg.http("#{api_url}/browse/new")
.get() (err, res, body) ->
try
json = JSON.parse(body)
for mod in [maxresults..0]
msg.send "#{json[mod].name} by #{json[mod].author} -- ksp:#{json[mod].versions[0].game_version} -- url: https://spacedock.info/mod/#{json[mod].id}"
catch err
msg.send err
robot.respond /ks featured/i, (msg) ->
msg.http("#{api_url}/browse/featured")
.get() (err, res, body) ->
try
json = JSON.parse(body)
for mod in [maxresults..0]
msg.send "#{json[mod].name} by #{json[mod].author} -- ksp:#{json[mod].versions[0].game_version} -- url: https://spacedock.info/mod/#{json[mod].id}"
catch err
msg.send err