├── external-scripts.json ├── .gitignore ├── Procfile ├── hubot-scripts.json ├── bin ├── hubot.cmd └── hubot ├── scripts ├── ganbaruzoi.coffee ├── events.coffee ├── lgtm.coffee ├── lovelivegif.coffee ├── ping.coffee ├── storage.coffee ├── tiqav.coffee ├── misawa.coffee ├── httpd.coffee ├── help.coffee ├── roles.coffee ├── makigif.coffee └── maki.coffee ├── README.md └── package.json /external-scripts.json: -------------------------------------------------------------------------------- 1 | [] -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .DS_Store* -------------------------------------------------------------------------------- /Procfile: -------------------------------------------------------------------------------- 1 | web: bin/hubot --adapter slack -------------------------------------------------------------------------------- /hubot-scripts.json: -------------------------------------------------------------------------------- 1 | ["redis-brain.coffee", "shipit.coffee"] 2 | -------------------------------------------------------------------------------- /bin/hubot.cmd: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | npm install && node_modules\.bin\hubot.cmd %* -------------------------------------------------------------------------------- /bin/hubot: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | npm install 4 | export PATH="node_modules/.bin:node_modules/hubot/node_modules/.bin:$PATH" 5 | 6 | export HUBOT_TUMBLR_API_KEY="Z8OAGgeUyNQUxnjJuKBF5pzZ54xSGAlBakWrqBoz7LhZOgIvnx" 7 | 8 | exec node_modules/.bin/hubot "$@" 9 | 10 | -------------------------------------------------------------------------------- /scripts/ganbaruzoi.coffee: -------------------------------------------------------------------------------- 1 | # Description: 2 | # 今日も一日がんばるぞい 3 | # 4 | # Commands: 5 | # がんばる - がんばるぞい! 6 | 7 | module.exports = (robot) -> 8 | robot.hear /がんば|頑張/, (msg) -> 9 | msg.send "http://33.media.tumblr.com/0bf0db79da89175b8bd514b13f9e5bb7/tumblr_n8i0tabaMp1re64ggo1_400.png" 10 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Makibot 2 | 3 | Makibot is Nishikino Maki bot 4 | 5 | ![](https://31.media.tumblr.com/4d20232bef50e3204cdacecaaa585755/tumblr_inline_n7pekiSsG31qaxsyz.png) 6 | 7 | # Deploy Hubot to Heroku 8 | 9 | - 10 | 11 | # Command 12 | 13 | - `@maki` / `:maki` 14 | - ランダムで発言する 15 | - `llgif` / `lovelivegif` 16 | - lovelivegif.tumblr.com からランダムで表示 17 | - `makigif` 18 | - 西木野真姫が映ってるgifアニメをランダムで表示 19 | - あとラブライブっぽい単語に反応します -------------------------------------------------------------------------------- /scripts/events.coffee: -------------------------------------------------------------------------------- 1 | # Description: 2 | # Event system related utilities 3 | # 4 | # Commands: 5 | # hubot fake event - Triggers the event for debugging reasons 6 | # 7 | # Events: 8 | # debug - {user: } 9 | 10 | util = require 'util' 11 | 12 | module.exports = (robot) -> 13 | 14 | robot.respond /FAKE EVENT (.*)/i, (msg) -> 15 | msg.send "fake event '#{msg.match[1]}' triggered" 16 | robot.emit msg.match[1], {user: msg.message.user} 17 | 18 | robot.on 'debug', (event) -> 19 | robot.send event.user, util.inspect event -------------------------------------------------------------------------------- /scripts/lgtm.coffee: -------------------------------------------------------------------------------- 1 | # Description: 2 | # LGTM 3 | # 4 | # Commands: 5 | # LGTM - LGTM画像をランダムで出す 6 | 7 | util = require 'util' 8 | 9 | module.exports = (robot) -> 10 | robot.hear /lgtm(?:\s*)$/i, (msg) -> 11 | msg.http('http://www.lgtm.in/g') 12 | .header('Accept', 'application/json') 13 | .get() (err, res, body) -> 14 | if err 15 | msg.send util.inspect err 16 | else 17 | try 18 | data = JSON.parse(body) 19 | msg.send data.actualImageUrl 20 | catch _err 21 | msg.send "Ran into an error parsing JSON :(" 22 | -------------------------------------------------------------------------------- /scripts/lovelivegif.coffee: -------------------------------------------------------------------------------- 1 | # Description: 2 | # lovelivegif.tumblr.comからラブライブgifアニメ出す 3 | # 4 | # Dependencies: 5 | # "tumblrbot": "0.1.0" 6 | # 7 | # Configuration: 8 | # HUBOT_TUMBLR_API_KEY - A Tumblr OAuth Consumer Key will work fine 9 | # 10 | # Commands: 11 | # llgif / lovelivegif - ラブライブgifアニメをランダムで出す 12 | 13 | 14 | tumblr = require "tumblrbot" 15 | SOURCES = { 16 | "lovelivegif.tumblr.com" 17 | } 18 | 19 | getGif = (blog, msg) -> 20 | tumblr.photos(blog).random (post) -> 21 | msg.send post.photos[0].original_size.url 22 | 23 | module.exports = (robot) -> 24 | robot.hear /llgif|lovelivegif/i, (msg) -> 25 | blog = msg.random Object.keys(SOURCES) 26 | getGif blog, msg 27 | -------------------------------------------------------------------------------- /scripts/ping.coffee: -------------------------------------------------------------------------------- 1 | # Description: 2 | # Utility commands surrounding Hubot uptime. 3 | # 4 | # Commands: 5 | # hubot ping - Reply with pong 6 | # hubot echo - Reply back with 7 | # hubot time - Reply with current time 8 | # hubot die - End hubot process 9 | 10 | module.exports = (robot) -> 11 | robot.respond /PING$/i, (msg) -> 12 | msg.send "PONG" 13 | 14 | robot.respond /ADAPTER$/i, (msg) -> 15 | msg.send robot.adapterName 16 | 17 | robot.respond /ECHO (.*)$/i, (msg) -> 18 | msg.send msg.match[1] 19 | 20 | robot.respond /TIME$/i, (msg) -> 21 | msg.send "Server time is: #{new Date()}" 22 | 23 | robot.respond /DIE$/i, (msg) -> 24 | msg.send "Goodbye, cruel world." 25 | process.exit 0 26 | -------------------------------------------------------------------------------- /scripts/storage.coffee: -------------------------------------------------------------------------------- 1 | # Description: 2 | # Inspect the data in redis easily 3 | # 4 | # Commands: 5 | # hubot show users - Display all users that hubot knows about 6 | # hubot show storage - Display the contents that are persisted in the brain 7 | 8 | 9 | Util = require "util" 10 | 11 | module.exports = (robot) -> 12 | robot.respond /show storage$/i, (msg) -> 13 | output = Util.inspect(robot.brain.data, false, 4) 14 | msg.send output 15 | 16 | robot.respond /show users$/i, (msg) -> 17 | response = "" 18 | 19 | for own key, user of robot.brain.data.users 20 | response += "#{user.id} #{user.name}" 21 | response += " <#{user.email_address}>" if user.email_address 22 | response += "\n" 23 | 24 | msg.send response 25 | 26 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "hosted-hubot", 3 | "version": "2.7.1", 4 | "private": true, 5 | "author": "GitHub Inc.", 6 | "keywords": [ 7 | "github", 8 | "hubot", 9 | "campfire", 10 | "bot" 11 | ], 12 | "description": "A simple helpful robot for your Company", 13 | "licenses": [ 14 | { 15 | "type": "MIT", 16 | "url": "https://github.com/github/hubot/raw/master/LICENSE" 17 | } 18 | ], 19 | "repository": { 20 | "type": "git", 21 | "url": "https://github.com/github/hubot.git" 22 | }, 23 | "dependencies": { 24 | "hubot": ">= 2.6.0 < 3.0.0", 25 | "hubot-scripts": ">= 2.5.0 < 3.0.0", 26 | "hubot-slack": "~2.1.0", 27 | "tumblrbot": "0.1.0", 28 | "cron": "~1.0.4" 29 | }, 30 | "engines": { 31 | "node": ">= 0.8.x", 32 | "npm": ">= 1.1.x" 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /scripts/tiqav.coffee: -------------------------------------------------------------------------------- 1 | # Description: 2 | # tiqav から画像を返す 3 | # 4 | # Configuration: 5 | # HUBOT_TIQAV_404_MESSAGE - 画像がなかった場合のメッセージ 6 | # HUBOT_TIQAV_ERROR_MESSAGE - エラーが発生した場合のメッセージ 7 | # 8 | # Commands: 9 | # hubot tiqav - tiqavから で検索した画像を返す。 がない場合はランダム。 10 | # 11 | # Author 12 | # moqada 13 | 14 | module.exports = (robot) -> 15 | robot.respond /tiqav( (.*))?/i, (msg) -> 16 | query = msg.match[2] 17 | if query 18 | imageMe msg, 'http://api.tiqav.com/search.json', {q: query} 19 | else 20 | imageMe msg, 'http://api.tiqav.com/search/random.json' 21 | 22 | imageMe = (msg, url, query)-> 23 | http = msg.http url 24 | if query 25 | http = http.query query 26 | http.get() (err, res, body) -> 27 | if res.statusCode is 404 28 | msg.send process.env.HUBOT_TIQAV_404_MESSAGE or "画像ない" 29 | else if res.statusCode isnt 200 30 | msg.send process.env.HUBOT_TIQAV_ERROR_MESSAGE or "エラーっぽい" 31 | else 32 | images = JSON.parse body 33 | image = msg.random images 34 | msg.send "http://img.tiqav.com/#{image.id}.#{image.ext}" 35 | -------------------------------------------------------------------------------- /scripts/misawa.coffee: -------------------------------------------------------------------------------- 1 | # Description: 2 | # 惚れさせ男子データベースからミサワ画像を返す 3 | # 4 | # Configuration: 5 | # HUBOT_MISAWA_404_MESSAGE - 画像がなかった場合のメッセージ 6 | # HUBOT_MISAWA_ERROR_MESSAGE - エラーが発生した場合のメッセージ 7 | # 8 | # Commands: 9 | # hubot misawa - 惚れさせ男子データベースから で検索した画像を返す。 がない場合はランダム。 10 | # 11 | # Author 12 | # moqada 13 | 14 | module.exports = (robot) -> 15 | robot.respond /misawa( (.*))?/i, (msg) -> 16 | q = msg.match[2] 17 | msg.http('http://horesase-boys.herokuapp.com/meigens.json') 18 | .get() (err, res, body) -> 19 | if err 20 | res = process.env.HUBOT_MISAWA_ERROR_MESSAGE or "エラーっぽい" 21 | else 22 | meigens = JSON.parse body 23 | if q 24 | meigens = meigens.filter (meigen) -> 25 | for key in ['title', 'body', 'character'] 26 | if meigen[key] and meigen[key].indexOf(q) isnt -1 27 | return true 28 | return false 29 | if meigens.length > 0 30 | res = msg.random(meigens).image 31 | else 32 | res = process.env.HUBOT_MISAWA_404_MESSAGE or "画像ない" 33 | msg.send res 34 | -------------------------------------------------------------------------------- /scripts/httpd.coffee: -------------------------------------------------------------------------------- 1 | # Description: 2 | # A simple interaction with the built in HTTP Daemon 3 | # 4 | # Dependencies: 5 | # None 6 | # 7 | # Configuration: 8 | # None 9 | # 10 | # Commands: 11 | # None 12 | # 13 | # URLS: 14 | # /hubot/version 15 | # /hubot/ping 16 | # /hubot/time 17 | # /hubot/info 18 | # /hubot/ip 19 | 20 | spawn = require('child_process').spawn 21 | 22 | module.exports = (robot) -> 23 | 24 | robot.router.get "/hubot/version", (req, res) -> 25 | res.end robot.version 26 | 27 | robot.router.post "/hubot/ping", (req, res) -> 28 | res.end "PONG" 29 | 30 | robot.router.get "/hubot/time", (req, res) -> 31 | res.end "Server time is: #{new Date()}" 32 | 33 | robot.router.get "/hubot/info", (req, res) -> 34 | child = spawn('/bin/sh', ['-c', "echo I\\'m $LOGNAME@$(hostname):$(pwd) \\($(git rev-parse HEAD)\\)"]) 35 | 36 | child.stdout.on 'data', (data) -> 37 | res.end "#{data.toString().trim()} running node #{process.version} [pid: #{process.pid}]" 38 | child.stdin.end() 39 | 40 | robot.router.get "/hubot/ip", (req, res) -> 41 | robot.http('http://ifconfig.me/ip').get() (err, r, body) -> 42 | res.end body 43 | -------------------------------------------------------------------------------- /scripts/help.coffee: -------------------------------------------------------------------------------- 1 | # Description: 2 | # Generates help commands for Hubot. 3 | # 4 | # Commands: 5 | # hubot help - Displays all of the help commands that Hubot knows about. 6 | # hubot help - Displays all help commands that match . 7 | # 8 | # URLS: 9 | # /hubot/help 10 | # 11 | # Notes: 12 | # These commands are grabbed from comment blocks at the top of each file. 13 | 14 | helpContents = (name, commands) -> 15 | 16 | """ 17 | 18 | 19 | 20 | 21 | #{name} Help 22 | 45 | 46 | 47 |

#{name} Help

48 |
49 | #{commands} 50 |
51 | 52 | 53 | """ 54 | 55 | module.exports = (robot) -> 56 | robot.respond /help\s*(.*)?$/i, (msg) -> 57 | cmds = robot.helpCommands() 58 | filter = msg.match[1] 59 | 60 | if filter 61 | cmds = cmds.filter (cmd) -> 62 | cmd.match new RegExp(filter, 'i') 63 | if cmds.length == 0 64 | msg.send "No available commands match #{filter}" 65 | return 66 | 67 | prefix = robot.alias or robot.name 68 | cmds = cmds.map (cmd) -> 69 | cmd = cmd.replace /^hubot/, prefix 70 | cmd.replace /hubot/ig, robot.name 71 | 72 | emit = cmds.join "\n" 73 | 74 | msg.send emit 75 | 76 | robot.router.get "/#{robot.name}/help", (req, res) -> 77 | cmds = robot.helpCommands().map (cmd) -> 78 | cmd.replace(/&/g,'&').replace(//g,'>') 79 | 80 | emit = "

#{cmds.join '

'}

" 81 | 82 | emit = emit.replace /hubot/ig, "#{robot.name}" 83 | 84 | res.setHeader 'content-type', 'text/html' 85 | res.end helpContents robot.name, emit 86 | -------------------------------------------------------------------------------- /scripts/roles.coffee: -------------------------------------------------------------------------------- 1 | # Description: 2 | # Assign roles to people you're chatting with 3 | # 4 | # Commands: 5 | # hubot is a badass guitarist - assign a role to a user 6 | # hubot is not a badass guitarist - remove a role from a user 7 | # hubot who is - see what roles a user has 8 | # 9 | # Examples: 10 | # hubot holman is an ego surfer 11 | # hubot holman is not an ego surfer 12 | 13 | module.exports = (robot) -> 14 | 15 | if process.env.HUBOT_AUTH_ADMIN? 16 | robot.logger.warning 'The HUBOT_AUTH_ADMIN environment variable is set not going to load roles.coffee, you should delete it' 17 | return 18 | 19 | getAmbiguousUserText = (users) -> 20 | "Be more specific, I know #{users.length} people named like that: #{(user.name for user in users).join(", ")}" 21 | 22 | robot.respond /who is @?([\w .\-]+)\?*$/i, (msg) -> 23 | joiner = ', ' 24 | name = msg.match[1].trim() 25 | 26 | if name is "you" 27 | msg.send "Who ain't I?" 28 | else if name is robot.name 29 | msg.send "The best." 30 | else 31 | users = robot.brain.usersForFuzzyName(name) 32 | if users.length is 1 33 | user = users[0] 34 | user.roles = user.roles or [ ] 35 | if user.roles.length > 0 36 | if user.roles.join('').search(',') > -1 37 | joiner = '; ' 38 | msg.send "#{name} is #{user.roles.join(joiner)}." 39 | else 40 | msg.send "#{name} is nothing to me." 41 | else if users.length > 1 42 | msg.send getAmbiguousUserText users 43 | else 44 | msg.send "#{name}? Never heard of 'em" 45 | 46 | robot.respond /@?([\w .\-_]+) is (["'\w: \-_]+)[.!]*$/i, (msg) -> 47 | name = msg.match[1].trim() 48 | newRole = msg.match[2].trim() 49 | 50 | unless name in ['', 'who', 'what', 'where', 'when', 'why'] 51 | unless newRole.match(/^not\s+/i) 52 | users = robot.brain.usersForFuzzyName(name) 53 | if users.length is 1 54 | user = users[0] 55 | user.roles = user.roles or [ ] 56 | 57 | if newRole in user.roles 58 | msg.send "I know" 59 | else 60 | user.roles.push(newRole) 61 | if name.toLowerCase() is robot.name.toLowerCase() 62 | msg.send "Ok, I am #{newRole}." 63 | else 64 | msg.send "Ok, #{name} is #{newRole}." 65 | else if users.length > 1 66 | msg.send getAmbiguousUserText users 67 | else 68 | msg.send "I don't know anything about #{name}." 69 | 70 | robot.respond /@?([\w .\-_]+) is not (["'\w: \-_]+)[.!]*$/i, (msg) -> 71 | name = msg.match[1].trim() 72 | newRole = msg.match[2].trim() 73 | 74 | unless name in ['', 'who', 'what', 'where', 'when', 'why'] 75 | users = robot.brain.usersForFuzzyName(name) 76 | if users.length is 1 77 | user = users[0] 78 | user.roles = user.roles or [ ] 79 | 80 | if newRole not in user.roles 81 | msg.send "I know." 82 | else 83 | user.roles = (role for role in user.roles when role isnt newRole) 84 | msg.send "Ok, #{name} is no longer #{newRole}." 85 | else if users.length > 1 86 | msg.send getAmbiguousUserText users 87 | else 88 | msg.send "I don't know anything about #{name}." 89 | 90 | -------------------------------------------------------------------------------- /scripts/makigif.coffee: -------------------------------------------------------------------------------- 1 | # Description: 2 | # makigif 3 | # 4 | # Commands: 5 | # makigif - 西木野真姫が映ってるgifアニメをランダムで表示 6 | 7 | 8 | makigif = [ 9 | "http://37.media.tumblr.com/6ecdbb327dd232eb564fe4250a5a3fd4/tumblr_n7ltynJY161r3rdh2o1_500.gif", 10 | "http://37.media.tumblr.com/08ade75c57c1bfca733990a429991fba/tumblr_n7n5dugT6p1r3fop8o1_500.gif", 11 | "http://37.media.tumblr.com/fb30fa6701fc290d98dfbd4da5609893/tumblr_n6vfljkHaK1qzd219o1_500.gif", 12 | "http://37.media.tumblr.com/78d253d7b0dfbb950f893bb7ea4c0530/tumblr_n6v199Ntiu1s74h99o2_500.gif", 13 | "http://38.media.tumblr.com/5b48117c64c15fd472c3f8ddd876ce84/tumblr_n6v03g6YbV1s74h99o1_500.gif", 14 | "http://38.media.tumblr.com/902d9c1259de177cb0610d293121ec88/tumblr_n6v03g6YbV1s74h99o2_500.gif", 15 | "http://38.media.tumblr.com/55a25d35c2338d4c4f36366cbbced5d0/tumblr_n6i3waVWIR1r54lc0o1_400.gif", 16 | "http://37.media.tumblr.com/6e991e5e880cbc8e5fd8566927b460b4/tumblr_n6i3vo2E8x1r54lc0o1_500.gif", 17 | "http://37.media.tumblr.com/fb8f4fc8620d25efd814c15860726d21/tumblr_n6il7tFv0Q1ryjfqqo1_500.gif", 18 | "http://31.media.tumblr.com/3a2faeff050e43255f13eb0aa5fbd694/tumblr_n6i92aEvUs1s74h99o1_500.gif", 19 | "http://37.media.tumblr.com/b7d143e0da70f251dd550c3290f1a39e/tumblr_n6jr1kTehj1r54lc0o1_500.gif", 20 | "http://38.media.tumblr.com/741abc196d0d14f1d099cd4e86a81bbf/tumblr_n6js6sodGO1r54lc0o1_500.gif", 21 | "http://38.media.tumblr.com/a2e5b451f86d45afd4e0637cf542ffc6/tumblr_n6jh83SbZh1tabt33o1_500.gif", 22 | "http://38.media.tumblr.com/ce9d2687040b0913dbc225385ad40a03/tumblr_n656e2U6t31r3fop8o1_500.gif", 23 | "http://31.media.tumblr.com/221d7bc9ff012e21acf077ea5d0d37c6/tumblr_n65r4gNhay1qd1q2so1_500.gif", 24 | "http://37.media.tumblr.com/2d72fef4017cfd5f56aff61d123bf196/tumblr_n65r1ht1B31qd1q2so1_500.gif", 25 | "http://37.media.tumblr.com/4cd17fa2e896d4fa02c561957d48a701/tumblr_n65cniRqS91s4qvrdo1_500.gif", 26 | "http://37.media.tumblr.com/4554e8041c290a9b531e209d4922f206/tumblr_n5rw4yt83f1r54lc0o1_500.gif", 27 | "http://31.media.tumblr.com/ae25c4e92d25b5de5a2a28a90c3c110a/tumblr_n5mfvybb3m1s74h99o1_r1_400.gif", 28 | "http://37.media.tumblr.com/c5bedfb694c9a4c133173b14d3320c86/tumblr_n5iqicsRYx1r5zofqo1_500.gif", 29 | "http://31.media.tumblr.com/b0bd45ad0e81e3d30d58172dd415fc85/tumblr_n5f7fwLNX31s74h99o1_500.gif", 30 | "http://37.media.tumblr.com/9101c1b642842b3ee4ee34187de21ac4/tumblr_n5f7fwLNX31s74h99o2_500.gif", 31 | "http://37.media.tumblr.com/3e186d3ea92a33efc2d9acabf2809caa/tumblr_n5f7stwhRC1s74h99o2_500.gif", 32 | "http://38.media.tumblr.com/758f3021669a37723e1f4e98afa16d52/tumblr_n5f8nfkesi1s74h99o1_500.gif", 33 | "http://38.media.tumblr.com/3942fddc4efb9bcd4cec75a9d4cb89b8/tumblr_n52ce9h0Kn1s4qvrdo1_500.gif", 34 | "http://38.media.tumblr.com/57454650e7974ae94f107e8cd260df3f/tumblr_n5fc6jMnWh1s4qvrdo1_500.gif", 35 | "http://37.media.tumblr.com/a04064f305e079f5cef40ce61b957f4e/tumblr_n52ldrO3Dl1slv5gyo1_500.gif", 36 | "http://37.media.tumblr.com/c3dcd32addcbc33c6d4112e414df7663/tumblr_n53vhbkvXi1qa94xto1_500.gif", 37 | "http://38.media.tumblr.com/219abe498ca33eec8fc77bac697771bb/tumblr_n48gebIrhj1s74h99o2_500.gif", 38 | "http://37.media.tumblr.com/479aa1b6aa0acd8d9fd240495dd4f9cf/tumblr_n48gebIrhj1s74h99o3_500.gif", 39 | "http://37.media.tumblr.com/e096cf1280d34f954b9bb36e28d66605/tumblr_n48gebIrhj1s74h99o4_500.gif", 40 | "http://38.media.tumblr.com/7c6ec6ca2860b011fb6ed682b5580d2d/tumblr_n4cgfrNhSo1s4qvrdo1_500.gif", 41 | "http://37.media.tumblr.com/7cefdfb8348b3a4bdc74f218c4bb2823/tumblr_n4cgyhjrPE1s4qvrdo1_500.gif", 42 | "http://37.media.tumblr.com/af9bbb0cef4bf6620144e8324ccdf2b3/tumblr_n4cgyjO8Oz1s74h99o1_500.gif", 43 | "http://38.media.tumblr.com/0d81640e444a3bf3efbb12ae426e4ed3/tumblr_n4elleFLFw1qzd219o1_500.gif", 44 | "http://38.media.tumblr.com/d7e9bc287d10662b51c988dfbbcde530/tumblr_n43i8o3yRk1sk0lj0o1_500.gif", 45 | "http://38.media.tumblr.com/d4ce375fc37f25e64e0e314aabb636a6/tumblr_n3zd30bzu31s4qvrdo1_500.gif", 46 | "http://37.media.tumblr.com/78c747e15c81ad0b3e4e5e9d38660ecc/tumblr_n43nh0Od2R1qzd219o1_500.gif", 47 | "http://37.media.tumblr.com/de1e6d8c6799515b4c2d3674fc1e7eb6/tumblr_n408q0ZG451r73plvo1_500.gif", 48 | "http://37.media.tumblr.com/06f3d3023db1f4ef67c0d86f8091d8ea/tumblr_n3zex4KJkk1s4qvrdo1_500.gif", 49 | "http://37.media.tumblr.com/a7d080b0582d16f016be54941cd683cb/tumblr_n3zq3fUgeK1s74h99o1_500.gif", 50 | "http://37.media.tumblr.com/868156c2a2fb876b52adc0c1699ccebc/tumblr_n3zq3fUgeK1s74h99o2_500.gif", 51 | "http://37.media.tumblr.com/457e9ac04e14345bb62930c42bfca389/tumblr_n3zq3fUgeK1s74h99o5_500.gif", 52 | "http://38.media.tumblr.com/d46f439f47072160e38cbb8147d6807e/tumblr_n3hc3hGcQQ1s4qvrdo1_500.gif", 53 | "http://37.media.tumblr.com/34e04b663bef3c8669541d1b9ee638ce/tumblr_n3mge1qeZS1s74h99o2_500.gif", 54 | "http://38.media.tumblr.com/417c7baa33f8e034d31c9b4d3cb18156/tumblr_n3by49Y5SU1s4qvrdo1_500.gif", 55 | "http://38.media.tumblr.com/1018c84477408df86f7f259e23490792/tumblr_n3mhm0m1f01s4qvrdo1_500.gif", 56 | "http://37.media.tumblr.com/31ea62b037a934d7d998f0ac87aefe6e/tumblr_n3mi08x7Ck1s4qvrdo1_500.gif", 57 | "http://37.media.tumblr.com/27cff89f4c4a98a1d0cd0bfd50022579/tumblr_n3mj8mJ1sy1s4qvrdo1_r1_500.gif", 58 | "http://37.media.tumblr.com/3c9b85db96c84a505b3b42d0c4abb408/tumblr_mx275tmQLv1s6kajio1_500.gif", 59 | "http://38.media.tumblr.com/27a45a83da829d9e2f15c19ef9c514d3/tumblr_movsxplB8v1s4qvrdo1_r2_500.gif", 60 | "http://37.media.tumblr.com/9a786d3ec891e57671b15b8163819091/tumblr_mkjyq64GM41qzd219o1_500.gif", 61 | "http://38.media.tumblr.com/7c50709dfba2fd06c1fd65776f747ffe/tumblr_mkmmhcN6kA1rj52qho1_500.gif", 62 | "http://37.media.tumblr.com/b253681f3284bc252c08badc4e9f4e4e/tumblr_mk8c50CS8d1s2cmsto1_500.gif", 63 | "http://38.media.tumblr.com/cd102af81a1c10c7aa7153e423fdd15f/tumblr_mk8c38OLNU1s2cmsto1_500.gif", 64 | "http://31.media.tumblr.com/787c0183cd4566baa7a8727bb29e804b/tumblr_mjw4rynlbG1s4jnrfo1_500.gif", 65 | "http://38.media.tumblr.com/f2c11ddb3e83fba22428358b886adc28/tumblr_mk1oyaZdkb1s4jnrfo1_500.gif", 66 | "http://38.media.tumblr.com/5f9083c51329fcd9106f918452dc0e9c/tumblr_mjvvacY58w1s74h99o1_500.gif", 67 | "http://38.media.tumblr.com/cce8a3b72f175004c61c85de87300f15/tumblr_mjhofh4nwC1s2bcydo1_500.gif", 68 | "http://37.media.tumblr.com/ab8a96bde11b9b8123217b51c0fc54fb/tumblr_mji9d1pk301rtagfbo1_500.gif", 69 | "http://37.media.tumblr.com/1c68df138282805518a88f841162dffb/tumblr_mjj6o7uxt31s4jnrfo1_500.gif", 70 | "http://38.media.tumblr.com/b2a72d9854caa0bed8627c562acc827c/tumblr_mjh8ij4SNJ1r215p2o1_500.gif", 71 | "http://38.media.tumblr.com/cce8a3b72f175004c61c85de87300f15/tumblr_mjhofh4nwC1s2bcydo1_500.gif", 72 | "http://38.media.tumblr.com/0770e6be1c00ff3be3183b9f743562ec/tumblr_mj2mzeMWH51qzd219o1_500.gif", 73 | "http://38.media.tumblr.com/858d9e085ca0b12e6b520521ba2a2013/tumblr_mj2scoUNUd1qzd219o1_500.gif", 74 | "http://38.media.tumblr.com/cc4a95e39b1773610a17c236349441fe/tumblr_mifeib68Vo1qa94xto1_500.gif", 75 | "http://38.media.tumblr.com/3111dfa8c740efaf425e9e6967982902/tumblr_mit346w0g51s4jnrfo1_250.gif", 76 | "http://38.media.tumblr.com/55420c00caed5e16d55f7f5a5a63c586/tumblr_mirrgfaKjO1qa94xto1_500.gif", 77 | "http://37.media.tumblr.com/a32960792cf4cc771bca71351e1b8585/tumblr_mifyfiorD21s4s1yxo1_500.gif", 78 | "http://37.media.tumblr.com/db52f312c17bf8263e4b7a5a8286af65/tumblr_mi41mzytlc1s4jnrfo1_250.gif", 79 | "http://38.media.tumblr.com/cbe9336df537c26e9088b92d2171c7eb/tumblr_mhpa1joAZF1roi9fwo1_500.gif", 80 | "http://37.media.tumblr.com/5007a334823da6349a2410320377b342/tumblr_mhp3vduKZC1rdpalzo1_500.gif", 81 | "http://38.media.tumblr.com/0c7c4a648c63961f78350fd51f452f7c/tumblr_mi40efLTNc1s4jnrfo1_400.gif", 82 | "http://31.media.tumblr.com/09203999cf8ede1048753eedd988b0fc/tumblr_mi40a4fSb11s4jnrfo1_250.gif", 83 | "http://37.media.tumblr.com/b3ed7432f33583ff6f01fecac2496de9/tumblr_mi292jRy7m1qa94xto1_500.gif", 84 | "http://38.media.tumblr.com/966420002e82372e156b40700042ea52/tumblr_mi28g1gkNE1qa94xto1_500.gif", 85 | "http://38.media.tumblr.com/6415f327b92780f636f258c8332b651e/tumblr_mhla4dXArk1s4jnrfo1_500.gif", 86 | "http://38.media.tumblr.com/a40fa7f3c1521ef3ef1922903884424a/tumblr_mhk7eqsk8k1s2cmsto1_400.gif", 87 | "http://38.media.tumblr.com/300c27aadf18ce75a94fb878542091b7/tumblr_mhh3joDYXY1s4jnrfo1_500.gif", 88 | "http://37.media.tumblr.com/c8d47a1813b733ac3ca9a1259cf26ba8/tumblr_mhh3gjTAMX1s4jnrfo1_250.gif", 89 | "http://31.media.tumblr.com/bff86f169215aa7a8a51169452a2e628/tumblr_mhh286H3bZ1s4jnrfo1_500.gif" 90 | ] 91 | 92 | module.exports = (robot) -> 93 | robot.hear /^(まき|maki|マッキー|西木野|真姫).*gif/i, (msg) -> 94 | gifs = msg.random makigif 95 | msg.send "はいどうぞ💖 #{gifs}" -------------------------------------------------------------------------------- /scripts/maki.coffee: -------------------------------------------------------------------------------- 1 | # Description: 2 | # 西木野真姫bot 3 | # 4 | # Commands: 5 | # :maki / @maki - ランダムでなんかしゃべる 6 | 7 | cure_nishikino = [ 8 | "<これからだよ〜ッ", 9 | "24日の夜におとなしく寝てたら、枕元に私がいるかもよ💝", 10 | "そんなわけあるか〜!", 11 | "でも、こんなことでは真姫は諦めません!", 12 | "凛だってしたことな〜いにゃ", 13 | "お〜い💖 私達の大切な、大大大〜好きのダーリン💖 起きてくださ〜い💖💖💖", 14 | "エリーが勉強好きなんて聞いたことないけど?", 15 | "💖💖KiRa-KiRa💖💖", 16 | "みんなもおいでよ〜〜ッ(♥ω♥)", 17 | "いいから大人しく着替えて。", 18 | "希ちゃんの占いなんて当てにならないわよ", 19 | "今日はあなたを囲んで、みんなで一緒に勉強会です", 20 | "もう、お肉お肉うるさいわよ穂乃果", 21 | "かわいいだけじゃアイドルだってやっていけないのよ!", 22 | "これっきり…かもね", 23 | "はあ!? なんで私が!", 24 | "べ、別にいいけど‼︎", 25 | "ちょっと、何騒いでるのよ。外まで聞こえてるんだけど。", 26 | "脱いで、うみちゃん。", 27 | "いまお風呂よ http://38.media.tumblr.com/1e87f98afe9d6e707ad73246af238b18/tumblr_n785rffmmT1s5f9ado1_500.gif", 28 | "学校でお泊り会よ http://37.media.tumblr.com/88164a0950cee5707a41cf1865682ac6/tumblr_n7l2gkbyEw1s4qvrdo1_500.gif", 29 | "ちょっと! http://37.media.tumblr.com/78d253d7b0dfbb950f893bb7ea4c0530/tumblr_n6v199Ntiu1s74h99o2_500.gif", 30 | "おい!お前ら!ニコニーするぞ!!!1", 31 | "みんな〜〜〜聴いてね〜〜〜🎵🎵", 32 | "今はラブライブに集中 💖", 33 | "それはそれでプレッシャーね。", 34 | "卒業するまでは部長でしょう?💓", 35 | "にこちゃんたちのいないμ’sなんて嫌なの!", 36 | "子供ね。私は美術館。", 37 | "ちょっと、そういう話は…", 38 | "Dancing💃stars🌟on👆me👰", 39 | "(願いましょう)願いましょう💖", 40 | "🌟🌟Dancing stars on me🌟🌟", 41 | "もっともっと踊らせて👏👏", 42 | "どこへでも💝", 43 | "おいでやす〜〜♨", 44 | "また欲張りなお願いしてたんでしょ〜", 45 | "おめでとうにゃ💖", 46 | "(音楽が大好きで…🎤)", 47 | "神様のいたずらかな…💖", 48 | "いいんじゃない👏👏", 49 | "カツサンドよッ http://24.media.tumblr.com/741abc196d0d14f1d099cd4e86a81bbf/tumblr_n6js6sodGO1r54lc0o1_500.gif", 50 | "がんばろうよ〜🌟🌟🌟", 51 | "みんな私のこと泣かないと思ってるでしょ", 52 | "「お米が大好きで」", 53 | "寒いにゃぁ〜〜〜〜〜〜", 54 | "ためらってもダメだね〜🙅", 55 | "🌟ときめき🌟", 56 | "遠慮せんと入って💁", 57 | "はい、これ。いいから受けとんなさいよぉ🍫", 58 | "穂乃果ちゃんたち3人が頑張って生徒会はピンチを脱出👍 ダイエットも成功🙆 そしていよいよ最終予選がやって来るよ👑", 59 | "とは言うものの、A-RISEを意識しすぎて、新しいことにチャレンジするも、どれも空回り。", 60 | "秋と言ったら、なんといっても新米の季節です🍚", 61 | "何の用ですか〜ッ", 62 | "では最初にストレッチから始めていきますわ🌟", 63 | "新たなμ’sを見ていくがいい!", 64 | "がんばるぞい", 65 | "やっべ、遅刻しちまうぜ。", 66 | "飲みに行くぞ", 67 | "泣けるにゃあ〜", 68 | "へ〜〜んし〜〜ん♥♡", 69 | "http://t.co/DEbPJ50KyD", 70 | "なんとかしなきゃ", 71 | "♡♥♡プランタンです♡♥♡", 72 | "それろ〜〜〜それろ〜〜〜", 73 | "ワイワイワイ", 74 | "やんやんっ♡♡", 75 | "ないやん", 76 | "絢瀬絵里よ、西木野真姫君", 77 | "http://t.co/Z0Zr79bxHM", 78 | "べ、別にそんなこと、言った覚え、ないやん", 79 | "そうにゃそうにゃ", 80 | "妹達に嘘をついていたニコっち。そこには悲しい過去が。", 81 | "余程のうぬぼれ屋でもない限り、自分より他人のほうが可愛いって思ってるものでしょう?", 82 | "バレンタインチョコであります", 83 | "そうそう、絢瀬絢瀬", 84 | "凛がリーダ〜〜〜〜!!!?", 85 | "中見てごらんなさい♡", 86 | "どうしても手料理を食べさせたい相手がいる、とか…", 87 | "こら〜、真似しないの!", 88 | "Chance♡ for♡ me♡", 89 | "にこちゃんはラブライブどうするの", 90 | "もー、なんで先に帰っちゃうのよお", 91 | "(ふふふ、マッキー♡)", 92 | "てゆうか、今日のにこちゃんおかしくない?  おかしいわよ、なんだか、わたしのことずっと避けてるみたいだし", 93 | "にこちゃん、そんな風だから女の子にモテないのよお", 94 | "これからもずっとみんな一緒。私達の絆は永遠よ♡", 95 | "ひょっとして、にこちゃん、好きな人ができたの…?", 96 | "はい、あげる。バレンタインの──チョコレート。中は冷たくて甘いイチゴチョコなの。だからすぐ食べてね。", 97 | "♡♥♡はいはいはいっ♥♡♥", 98 | "ふと立ちどまり(ふっふふー!)", 99 | "「「ススピリチュアルパパワー」」", 100 | "ねがいを叶える1枚っ♡♡♡♡", 101 | "(せ〜のっ) BiBiで〜〜す♡♡♡", 102 | "終わらないパーティはまだまだ続くわよ! みんな、ついて来てね♡", 103 | "いいやん♡", 104 | "希、日記書けたかしら", 105 | "にこちゃんどこ……", 106 | "ほらにこちゃんバンザイして", 107 | "にゃんにゃんにゃんにゃんにゃんにゃんにゃんにゃんにゃんにゃんにゃんにゃんにゃんにゃんにゃんにゃんにゃんにゃんにゃんにゃんにゃんにゃんにゃんにゃんにゃんにゃんにゃんにゃんにゃんにゃんにゃんにゃんにゃんにゃんにゃんにゃんにゃんにゃんにゃん", 108 | "へえ、あんたの得意料理もカップラーメンなんだ", 109 | "まきニーやめろ!!!!!!!!!!!!!!!!!!!!!!", 110 | "希は大きくね〜", 111 | "おいし? ふふ", 112 | "なんで来ちゃったのよ、もう", 113 | "おけおけおっけ〜〜✨", 114 | "ほ、ほ、ほのかちゃあん", 115 | "西木野真姫がすべての罪を赦し永遠の承認を与える", 116 | "み〜〜〜んなのことが、ず〜〜〜っと♡♡♡♡♡", 117 | "やっぱりニコニーいじりは楽しいっ♡", 118 | "やはりニコマキは真実!", 119 | "私服もかわいいマッキーよ", 120 | "わんわん", 121 | "スクールアイドルです。なんでも聞いてください。", 122 | "海未〜、目を開けちゃだめよ、だめだからね〜", 123 | "眠かったら、寝ちゃったほうがいいんじゃな〜い??", 124 | "だから新幹線の端から端まで歩けば、目的の駅に着いちゃうのだ♡", 125 | "私はただもう1回勝負したいだけだけど!!", 126 | "我こそは西木野真姫", 127 | "負けっぱなしとか言われたくないんだけど!", 128 | "!!!!!!!待ちなさい!!!!!!!!!", 129 | "♡♡♡♡♡たいへんっ 駅までだっしゅ!♡♡♡♡♡", 130 | "うぇうう、", 131 | "海未の寝言なんてどうでもいいじゃない", 132 | "うん♡ 終わらない、パーティーのね♡", 133 | "ぱれ〜〜〜↑↑↑どにさそわ〜〜↑↑れて〜〜〜〜↑↑↑↑", 134 | "(それぞれがすー)この番組は、", 135 | "に、にこ、にこちゃんが、にこちゃん、", 136 | "(こと)(ほの)", 137 | "日記では素直なの", 138 | "ハラショ〜〜〜〜〜〜", 139 | "(こと)(ほの)\まき♡/", 140 | "にゃん", 141 | "気候がいいと勉強もはかどるわね", 142 | "ちょっとやる気が足りないんじゃないの〜?", 143 | "に、っっっにこっっっにこちゃん!", 144 | "ぷわぷわぷわぷわ♡", 145 | "ラブライブ♡", 146 | "撮らないで!", 147 | "は、はぁ〜??", 148 | "がお〜〜", 149 | "はぁ〜? 遅れそうです〜〜?", 150 | "終わらないパーティーまだ始まらないのお〜〜?", 151 | "………(あっ! にこちゃんだ!)", 152 | "R*in☆*", 153 | "学校の許可ぁ?認められないわぁ", 154 | "ちょっとあんたたち!!真姫ちゃんはにこと付き合ってるのよ!!", 155 | "「って、なんで俺くんが!?", 156 | "マキ、15歳♡ あ、こう見えて彼氏いない歴17年よ!", 157 | "近況よ! http://t.co/MalZM27Y3H", 158 | "任せといて", 159 | "ラブライブで一番可愛いマッキーにちゅんちゅんしてほしいの? くすくす♡", 160 | "凛、今日放課後ご飯食べに行かない?", 161 | "ホラさっさとちゅんちゅんしてみなさいよ", 162 | "♡♡♡わんっ♡♡♡", 163 | "っっっあっっ♡♡♡", 164 | "なりきりbotじゃないんで!!!", 165 | "今日も今日とてアイドル活動♡", 166 | "急に穂乃果がかわいい", 167 | "アイドル活動を通じて自分達の通う学校を盛り上げようと頑張る9人の少女達の物語、それが〜♡", 168 | "ちゅんちゅん♡ ちゅんちゅん♡", 169 | "ぢゅん〜〜〜〜〜!!!!!!!!!", 170 | "ファイトだよっ♡", 171 | "ねむいちゅん", 172 | "ことりはむっつり", 173 | "ことりちゃん、ごめん! 私、ことりちゃんと一緒に飲みたいの!", 174 | "なかあて!なかあてが熱いと思いますが!", 175 | "わたしもぷわぷわしたかったわ", 176 | "にこちゃん、その、な、なんでもない", 177 | "し、仕方ないわね〜っ", 178 | "来てくれてありがとう♡ ずっとわたしから目を離さないで見ていてね♡", 179 | "2期ではことりともっと仲良くなりたいわね", 180 | "な↑に↓するのよ〜!", 181 | "ほの♡", 182 | "AB型の特徴〜?", 183 | "L♡O♡V♡E♡", 184 | "よきにはからえ♡", 185 | "ま☝(^ω^)☝だ☝(^ω^)☝ま☝(^ω^)☝だ☝(^ω^)☝みんなで♡", 186 | "わたしが治してあげる♡", 187 | "そしてアキバでのライブは大成功。目指せラブライブ出場♡", 188 | "ダァンスで人を魅了したいんでしょう!?", 189 | "会える日を、ずっとずっと楽しみに待ってたの♡ ことりの全部を見てください♡", 190 | "センターの座は渡さないんだから", 191 | "組版上手だねっ♡ ロゴも上手だね♡ それに、デザイナーみたいに可愛い♡", 192 | "穂乃果ちゃん困ってる♡", 193 | "はーい西木野真姫役Pileでーす♡", 194 | "誰だ黒歴史確定って書いた奴!!!", 195 | "ラブライブ うっちーえみつん  Pile 様(五七五)", 196 | "ぱたぱたぱたぱた♡♡♡", 197 | "おかえりなさい♡ 穂乃果は、ずっとずーっと会いたくて、待ちぼうけわんこの顔で待ってたよ♡ わんっ♡", 198 | "そりゃそうだよね、いきなり廃校なんて", 199 | "にっこにっこに〜つってね", 200 | "うみちゃん♡ ほのかちゃん♡", 201 | "わたくしが歌ってさしあげますわ", 202 | "さてさて、うっちーの罰ゲームの時間だよ", 203 | "私の夏の完璧なプランに、やり残しなんていう単語はひとつもないわ。", 204 | "こまったザウルス", 205 | "でも、みんなに期待されてるって思ったら、リク…みんな!? みんなに期待されてるって思ったら、リクエストに弱いことりです♡", 206 | "ことりちゃんそんな子だったんだァ", 207 | "ハイちゅんちゅん", 208 | "しっかりしなさいよ、もう", 209 | "はりきりスタイル", 210 | "アイドルには芸術的センスも要求されます", 211 | "おかえり♡ 随分早かったのね…あ、もしかして私に会いたくて、無理して早く帰ってきちゃった、とか?", 212 | "うっちーが「わかんなくなっちゃった」って言ってるの最高すぎてずっとわかんなくなっててほしい", 213 | "めでたい", 214 | "♡♥♡♥♡まかまーかまかろん♡♥♡♥♡", 215 | "なんてね", 216 | "(・8・) おやつにするぞ!!!!!!!", 217 | "エリチカ定時退社しそう", 218 | "ことりちゃんのワンダーゾーンっていうのひどすぎて面白い", 219 | "がんばっているかね?????" 220 | ] 221 | 222 | module.exports = (robot) -> 223 | robot.hear /:maki|@maki/, (msg) -> 224 | msg.send msg.random cure_nishikino 225 | 226 | robot.hear /西木野|真姫|マッキー/i, (msg) -> 227 | msg.send msg.random [ 228 | "マキ、15歳♡ あ、こう見えて彼氏いない歴17年よ!", 229 | "な、なによぉ", 230 | "私服もかわいいマッキーよ", 231 | "なりきりbotじゃないんで!!!" 232 | ] 233 | 234 | robot.hear /ラブライブ/i, (msg) -> 235 | msg.send msg.random [ 236 | "今はラブライブに集中💖", 237 | "にこちゃんはラブライブどうするの", 238 | "そしてアキバでのライブは大成功。目指せラブライブ出場♡", 239 | "ラブライブ うっちーえみつん  Pile 様(五七五)" 240 | ] 241 | 242 | robot.hear /(眠|ねむ)い/i, (msg) -> 243 | msg.send msg.random [ 244 | "お〜い💖 私達の大切な、大大大〜好きのダーリン💖 起きてくださ〜い💖💖💖", 245 | "ねむいちゅん", 246 | "眠かったら、寝ちゃったほうがいいんじゃな〜い??", 247 | "海未の寝言なんてどうでもいいじゃない" 248 | ] 249 | 250 | robot.hear /(お腹|おなか)すいた|(腹|はら)(減|へ)/i, (msg) -> 251 | msg.send msg.random [ 252 | "(・8・) おやつにするぞ!!!!!!!", 253 | "もう、お肉お肉うるさいわよ穂乃果", 254 | "カツサンドよッ http://24.media.tumblr.com/741abc196d0d14f1d099cd4e86a81bbf/tumblr_n6js6sodGO1r54lc0o1_500.gif", 255 | "凛、今日放課後ご飯食べに行かない?", 256 | "どうしても手料理を食べさせたい相手がいる、とか…", 257 | "秋と言ったら、なんといっても新米の季節です🍚" 258 | ] 259 | 260 | robot.hear /にこ|矢澤/i, (msg) -> 261 | msg.send msg.random [ 262 | "おい!お前ら!ニコニーするぞ!!!1", 263 | "にっこにっこに〜つってね", 264 | "ちょっとあんたたち!!真姫ちゃんはにこと付き合ってるのよ!!", 265 | "に、にこ、にこちゃんが、にこちゃん、", 266 | "に、っっっにこっっっにこちゃん!", 267 | "やっぱりニコニーいじりは楽しいっ♡", 268 | "やはりニコマキは真実!", 269 | "にこちゃんたちのいないμ’sなんて嫌なの!", 270 | "ほらにこちゃんバンザイして", 271 | "にこちゃんはラブライブどうするの", 272 | "………(あっ! にこちゃんだ!)" 273 | ] 274 | 275 | robot.hear /穂乃果|ほのか/i, (msg) -> 276 | msg.send msg.random [ 277 | "こまったザウルス", 278 | "ほの♡", 279 | "(こと)(ほの)\まき♡/", 280 | "もう、お肉お肉うるさいわよ穂乃果", 281 | "そりゃそうだよね、いきなり廃校なんて" 282 | ] 283 | 284 | robot.hear /ことり/i, (msg) -> 285 | msg.send msg.random [ 286 | "♡♥♡♥♡まかまーかまかろん♡♥♡♥♡", 287 | "(・8・) おやつにするぞ!!!!!!!", 288 | "ことりちゃんそんな子だったんだァ", 289 | "ぱたぱたぱたぱた♡♡♡", 290 | "会える日を、ずっとずっと楽しみに待ってたの♡ ことりの全部を見てください♡", 291 | "うみちゃん♡ ほのかちゃん♡", 292 | "2期ではことりともっと仲良くなりたいわね", 293 | "ことりちゃん、ごめん! 私、ことりちゃんと一緒に飲みたいの!" 294 | ] 295 | 296 | robot.hear /うみ|海未/i, (msg) -> 297 | msg.send msg.random [ 298 | "脱いで、うみちゃん。", 299 | "海未、歌詞できた?", 300 | "せっかくなんだし海未と二人で何処かに行きたいわね", 301 | "うみちゃん♡ ほのかちゃん♡", 302 | "うみまきも悪くないわね" 303 | ] 304 | 305 | robot.hear /Pile/i, (msg) -> 306 | msg.send msg.random [ 307 | "はーい西木野真姫役Pileでーす♡", 308 | "みんな私のこと泣かないと思ってるでしょ" 309 | ] 310 | 311 | robot.hear /良い/i, (msg) -> 312 | msg.send msg.random [ 313 | "ええやん💖", 314 | "良いんじゃないかしら" 315 | ] 316 | 317 | robot.hear /疲れ/i, (msg) -> 318 | msg.send msg.random [ 319 | "お疲れさま💕", 320 | "良いんじゃないかしら", 321 | "ファイトだよっ", 322 | "しっかりしなさいよ、もう" 323 | ] 324 | 325 | robot.hear /アイドル/i, (msg) -> 326 | msg.send msg.random [ 327 | "今日も今日とてアイドル活動♡", 328 | "アイドル活動を通じて自分達の通う学校を盛り上げようと頑張る9人の少女達の物語、それが〜♡", 329 | "アイドルには芸術的センスも要求されます" 330 | ] 331 | --------------------------------------------------------------------------------