├── .gitignore ├── LICENSE.md ├── Procfile ├── README.md ├── docs ├── button-emoji.png ├── button-servo.png ├── manamoji.png ├── misspell.png ├── no-manamoji.png └── screenshot.png ├── index.js ├── lib ├── bot.js ├── messenger.js ├── middleware │ ├── manamoji.js │ └── utm.js └── response-types.js ├── manamoji ├── mana0.png ├── mana1.png ├── mana10.png ├── mana11.png ├── mana12.png ├── mana13.png ├── mana14.png ├── mana15.png ├── mana16.png ├── mana17.png ├── mana18.png ├── mana19.png ├── mana2.png ├── mana20.png ├── mana2b.png ├── mana2g.png ├── mana2r.png ├── mana2u.png ├── mana2w.png ├── mana3.png ├── mana4.png ├── mana5.png ├── mana6.png ├── mana7.png ├── mana8.png ├── mana9.png ├── manab.png ├── manabg.png ├── manabp.png ├── manabr.png ├── manac.png ├── manachaos.png ├── manae.png ├── manag.png ├── managp.png ├── managu.png ├── managw.png ├── manahalf.png ├── manahr.png ├── manahw.png ├── manainfinity.png ├── manaq.png ├── manar.png ├── manarg.png ├── manarp.png ├── manarw.png ├── manas.png ├── manat.png ├── manau.png ├── manaub.png ├── manaup.png ├── manaur.png ├── manaw.png ├── manawb.png ├── manawp.png ├── manawu.png ├── manax.png ├── manay.png ├── manaz.png └── src.sketch └── package.json /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 2 | 3 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 4 | 5 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 6 | -------------------------------------------------------------------------------- /Procfile: -------------------------------------------------------------------------------- 1 | worker: node index.js 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | **Servo is deprecated now that we have a [shiny new centralized bot](https://scryfall.com/bots), but it should still work fine if you’d like to host (or tweak) your own.** 2 | 3 | # Servo 4 | 5 | Servo is a Discord bot that will post the Oracle text or image of a _Magic: the Gathering_ card to your text channels when a card name is referenced. 6 | 7 | ## Usage 8 | 9 | You must have the _Manage Server_ permission to add Servo to your Discord server. 10 | 11 | The bot will appear as a user and join your text channels. If your Discord server restricts users from chatting by default, you will also need to grant the bot a role that allows it to speak. 12 | 13 | [![Install Servo](docs/button-servo.png)](https://discordapp.com/oauth2/authorize?client_id=268547439714238465&scope=bot) 14 | 15 | ## Features 16 | 17 | While chatting, surround a Magic card names with brackets (`[[` and `]]`) and prepend with an optional token. Servo will print out the text of that card or its image: 18 | 19 | | Command | Function | 20 | |-----------------------|-------------------------------------------------| 21 | | `[[Joven's Ferrets]]` | Show a text representation of Joven's Ferrets. | 22 | | `[[!Goblin Game]]` | Show a picture of Goblin Game. | 23 | 24 | ![Example usage](docs/screenshot.png) 25 | 26 | Servo will also handle misspellings and partial card names, as long as there is a clear match: 27 | 28 | ![Examples with misspelling](docs/misspell.png) 29 | 30 | ### Manamoji 31 | 32 | [![Download Emoji](docs/button-emoji.png)](https://github.com/scryfall/servo/releases/download/1.0/manamoji.zip) 33 | 34 | Servo ships with a set of images that can be used as [custom emoji](https://support.discordapp.com/hc/en-us/articles/207619737-Adding-Emoji-Magic) to change text-only mana symbols into colorful images. Discord limits you to 50 custom emoji, so you'll have to choose which ones are most appropriate for your users. 35 | 36 | ![Deathrite Shaman showing custom symbols](docs/manamoji.png) 37 | 38 | Without manamoji, card symbols will be shown in braces, like they appear in the _Magic_ rules: 39 | 40 | ![Chromanticore without custom symbols](docs/no-manamoji.png) 41 | -------------------------------------------------------------------------------- /docs/button-emoji.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scryfall/servo/a51e778e653bb5222eb93fca2fe587ce725a752f/docs/button-emoji.png -------------------------------------------------------------------------------- /docs/button-servo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scryfall/servo/a51e778e653bb5222eb93fca2fe587ce725a752f/docs/button-servo.png -------------------------------------------------------------------------------- /docs/manamoji.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scryfall/servo/a51e778e653bb5222eb93fca2fe587ce725a752f/docs/manamoji.png -------------------------------------------------------------------------------- /docs/misspell.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scryfall/servo/a51e778e653bb5222eb93fca2fe587ce725a752f/docs/misspell.png -------------------------------------------------------------------------------- /docs/no-manamoji.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scryfall/servo/a51e778e653bb5222eb93fca2fe587ce725a752f/docs/no-manamoji.png -------------------------------------------------------------------------------- /docs/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scryfall/servo/a51e778e653bb5222eb93fca2fe587ce725a752f/docs/screenshot.png -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | var Discord = require("discord.js"); 2 | const Servo = require('./lib/bot'); 3 | 4 | 5 | if (!process.env.DISCORD_TOKEN) { 6 | console.log('Error: Specify SLACK_TOKEN in environment'); 7 | process.exit(1); 8 | } 9 | 10 | new Servo(process.env.DISCORD_TOKEN); 11 | -------------------------------------------------------------------------------- /lib/bot.js: -------------------------------------------------------------------------------- 1 | let Discord = require('discord.js'); 2 | let Messenger = require('./messenger'); 3 | 4 | 5 | class Servo { 6 | constructor(token) { 7 | this.token = token; 8 | this.client = this.makeClient(token); 9 | } 10 | 11 | makeClient(token) { 12 | console.log('servo client init'); 13 | const client = new Discord.Client(); 14 | client.on('message', msg => { 15 | new Messenger(client, msg); 16 | }); 17 | client.login(token); 18 | return client; 19 | } 20 | } 21 | 22 | module.exports = Servo; 23 | -------------------------------------------------------------------------------- /lib/messenger.js: -------------------------------------------------------------------------------- 1 | const ResponseTypes = require('./response-types'); 2 | 3 | 4 | class Messenger { 5 | constructor(client, msg) { 6 | this.promises = []; 7 | this.client = client; 8 | this.msg = msg; 9 | this.pattern = /\[\[([^\]]+)\]\]/g; 10 | 11 | const matches = msg.content.match(this.pattern); 12 | if (matches) { 13 | matches.forEach(match => { 14 | const { cardName, responseType } = this.negotiateMatch(match); 15 | const promise = this.makePromise(cardName, responseType); 16 | this.promises.push(promise); 17 | }); 18 | } 19 | Promise.all(this.promises).then(embeds => { 20 | embeds.forEach(embed => { 21 | this.msg.channel.sendEmbed(embed); 22 | }); 23 | }).catch(err => console.log(err)); 24 | } 25 | 26 | negotiateMatch(match) { 27 | let cardName = match.substring(0, match.length - 2).substring(2); 28 | let responseType = this.defaultResponseType; 29 | const token = cardName.slice(0, 1); 30 | if (token in this.specialResponseTypes) { 31 | cardName = cardName.slice(1); 32 | responseType = this.specialResponseTypes[token]; 33 | } 34 | return { cardName, responseType } 35 | } 36 | 37 | makePromise(cardName, responseType) { 38 | return new Promise((resolve, reject) => { 39 | try { 40 | new responseType(this.client, cardName).embed().then(embed => { 41 | resolve(embed); 42 | }); 43 | } catch(err) { 44 | reject(err); 45 | } 46 | }); 47 | } 48 | } 49 | 50 | Messenger.prototype.defaultResponseType = ResponseTypes.TextResponse; 51 | Messenger.prototype.specialResponseTypes = { 52 | '!': ResponseTypes.ImageResponse 53 | }; 54 | 55 | module.exports = Messenger; 56 | -------------------------------------------------------------------------------- /lib/middleware/manamoji.js: -------------------------------------------------------------------------------- 1 | let substitutions = { 2 | 'CHAOS': 'manachaos', 3 | '{∞}': 'manainfinity', 4 | '{½}': 'manahalf', 5 | '{hr}': 'manahr' 6 | }; 7 | 8 | let COLORS = ['W', 'U', 'B', 'R', 'G']; 9 | let NUMBERS = [...Array(21).keys()]; 10 | let ADDTL = ['C', 'E', 'HR', 'HW', 'T', 'Q', 'S', 'X', 'Y', 'Z']; 11 | 12 | function _(before, after) { 13 | if (typeof after === 'undefined') { 14 | after = before; 15 | } 16 | substitutions[`{${before}}`] = `mana${after.toString().toLowerCase()}`; 17 | } 18 | 19 | ADDTL.forEach(a => { _(a) }); 20 | COLORS.forEach(c => { _(c) }); 21 | COLORS.forEach(c => { _(`2/${c}`, `2${c}`) }); 22 | COLORS.forEach(c => { _(`${c}/P`, `${c}p`) }); 23 | COLORS.forEach(c => { COLORS.forEach(d => { 24 | if (c != d) _(`${c}/${d}`, `${c}${d}`); 25 | }) }); 26 | NUMBERS.forEach(n => { _(n) }); 27 | 28 | 29 | module.exports = (client, embed) => { 30 | function manamoji(str) { 31 | const re = new RegExp(Object.keys(substitutions).map(v => { 32 | return v.replace('{', '\\{').replace('}', '\\}'); 33 | }).join('|'), 'gi'); 34 | return str.replace(re, matched => { 35 | const emoji = client.emojis.find('name', substitutions[matched]); 36 | return emoji ? emoji.toString() : matched; 37 | }); 38 | } 39 | 40 | if (embed.title) { 41 | embed.title = manamoji(embed.title); 42 | } 43 | if (embed.description) { 44 | embed.description = manamoji(embed.description); 45 | } 46 | return embed; 47 | } 48 | -------------------------------------------------------------------------------- /lib/middleware/utm.js: -------------------------------------------------------------------------------- 1 | const Url = require('urijs'); 2 | 3 | module.exports = (client, embed) => { 4 | console.log(embed); 5 | if (embed.url) { 6 | embed.url = Url(embed.url).query({ utm_source: 'discord' }).toString(); 7 | } 8 | return embed; 9 | } 10 | -------------------------------------------------------------------------------- /lib/response-types.js: -------------------------------------------------------------------------------- 1 | const request = require('request-promise-native'); 2 | const Discord = require('discord.js'); 3 | const Url = require('urijs'); 4 | 5 | const manamoji = require('./middleware/manamoji'); 6 | const utm = require('./middleware/utm'); 7 | 8 | 9 | class TextResponse { 10 | constructor(client, cardName) { 11 | this.client = client; 12 | this.cardName = cardName; 13 | } 14 | 15 | makeQuerystring() { 16 | return { 17 | fuzzy: this.cardName, 18 | format: 'text' 19 | }; 20 | } 21 | 22 | makeUrl() { 23 | return Url(this.url).query(this.makeQuerystring()).toString(); 24 | } 25 | 26 | makeRequest() { 27 | return new Promise((resolve, reject) => { 28 | request({ 29 | method: 'GET', 30 | resolveWithFullResponse: true, 31 | uri: this.makeUrl() 32 | }).then(response => { 33 | resolve(response); 34 | }).catch(err => { 35 | resolve(err.response); 36 | }); 37 | }); 38 | } 39 | 40 | makeEmbed(response) { 41 | let parts = response.body.split('\n'); 42 | const embedTitle = parts.shift(); 43 | return { 44 | title: `${embedTitle}`, 45 | description: parts.join('\n'), 46 | url: response.headers['x-scryfall-card'], 47 | thumbnail: { 48 | url: response.headers['x-scryfall-card-image'] 49 | } 50 | }; 51 | } 52 | 53 | embed() { 54 | return new Promise((resolve, reject) => { 55 | this.makeRequest().then(response => { 56 | let embed = this.makeEmbed(response); 57 | this.middleware.length > 0 && this.middleware.forEach(mw => { 58 | embed = mw(this.client, embed); 59 | }); 60 | resolve(embed); 61 | }); 62 | }); 63 | } 64 | } 65 | 66 | TextResponse.prototype.middleware = [ manamoji, utm ]; 67 | TextResponse.prototype.url = 'https://api.scryfall.com/cards/named'; 68 | 69 | 70 | class ImageResponse extends TextResponse { 71 | makeEmbed(response) { 72 | let parts = response.body.split('\n'); 73 | return { 74 | title: parts[0].match(/^([^{]+)/)[0].trim(), 75 | url: response.headers['x-scryfall-card'], 76 | image: { 77 | url: response.headers['x-scryfall-card-image'] 78 | } 79 | }; 80 | } 81 | } 82 | 83 | 84 | module.exports = { TextResponse, ImageResponse }; 85 | -------------------------------------------------------------------------------- /manamoji/mana0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scryfall/servo/a51e778e653bb5222eb93fca2fe587ce725a752f/manamoji/mana0.png -------------------------------------------------------------------------------- /manamoji/mana1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scryfall/servo/a51e778e653bb5222eb93fca2fe587ce725a752f/manamoji/mana1.png -------------------------------------------------------------------------------- /manamoji/mana10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scryfall/servo/a51e778e653bb5222eb93fca2fe587ce725a752f/manamoji/mana10.png -------------------------------------------------------------------------------- /manamoji/mana11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scryfall/servo/a51e778e653bb5222eb93fca2fe587ce725a752f/manamoji/mana11.png -------------------------------------------------------------------------------- /manamoji/mana12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scryfall/servo/a51e778e653bb5222eb93fca2fe587ce725a752f/manamoji/mana12.png -------------------------------------------------------------------------------- /manamoji/mana13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scryfall/servo/a51e778e653bb5222eb93fca2fe587ce725a752f/manamoji/mana13.png -------------------------------------------------------------------------------- /manamoji/mana14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scryfall/servo/a51e778e653bb5222eb93fca2fe587ce725a752f/manamoji/mana14.png -------------------------------------------------------------------------------- /manamoji/mana15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scryfall/servo/a51e778e653bb5222eb93fca2fe587ce725a752f/manamoji/mana15.png -------------------------------------------------------------------------------- /manamoji/mana16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scryfall/servo/a51e778e653bb5222eb93fca2fe587ce725a752f/manamoji/mana16.png -------------------------------------------------------------------------------- /manamoji/mana17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scryfall/servo/a51e778e653bb5222eb93fca2fe587ce725a752f/manamoji/mana17.png -------------------------------------------------------------------------------- /manamoji/mana18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scryfall/servo/a51e778e653bb5222eb93fca2fe587ce725a752f/manamoji/mana18.png -------------------------------------------------------------------------------- /manamoji/mana19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scryfall/servo/a51e778e653bb5222eb93fca2fe587ce725a752f/manamoji/mana19.png -------------------------------------------------------------------------------- /manamoji/mana2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scryfall/servo/a51e778e653bb5222eb93fca2fe587ce725a752f/manamoji/mana2.png -------------------------------------------------------------------------------- /manamoji/mana20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scryfall/servo/a51e778e653bb5222eb93fca2fe587ce725a752f/manamoji/mana20.png -------------------------------------------------------------------------------- /manamoji/mana2b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scryfall/servo/a51e778e653bb5222eb93fca2fe587ce725a752f/manamoji/mana2b.png -------------------------------------------------------------------------------- /manamoji/mana2g.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scryfall/servo/a51e778e653bb5222eb93fca2fe587ce725a752f/manamoji/mana2g.png -------------------------------------------------------------------------------- /manamoji/mana2r.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scryfall/servo/a51e778e653bb5222eb93fca2fe587ce725a752f/manamoji/mana2r.png -------------------------------------------------------------------------------- /manamoji/mana2u.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scryfall/servo/a51e778e653bb5222eb93fca2fe587ce725a752f/manamoji/mana2u.png -------------------------------------------------------------------------------- /manamoji/mana2w.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scryfall/servo/a51e778e653bb5222eb93fca2fe587ce725a752f/manamoji/mana2w.png -------------------------------------------------------------------------------- /manamoji/mana3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scryfall/servo/a51e778e653bb5222eb93fca2fe587ce725a752f/manamoji/mana3.png -------------------------------------------------------------------------------- /manamoji/mana4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scryfall/servo/a51e778e653bb5222eb93fca2fe587ce725a752f/manamoji/mana4.png -------------------------------------------------------------------------------- /manamoji/mana5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scryfall/servo/a51e778e653bb5222eb93fca2fe587ce725a752f/manamoji/mana5.png -------------------------------------------------------------------------------- /manamoji/mana6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scryfall/servo/a51e778e653bb5222eb93fca2fe587ce725a752f/manamoji/mana6.png -------------------------------------------------------------------------------- /manamoji/mana7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scryfall/servo/a51e778e653bb5222eb93fca2fe587ce725a752f/manamoji/mana7.png -------------------------------------------------------------------------------- /manamoji/mana8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scryfall/servo/a51e778e653bb5222eb93fca2fe587ce725a752f/manamoji/mana8.png -------------------------------------------------------------------------------- /manamoji/mana9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scryfall/servo/a51e778e653bb5222eb93fca2fe587ce725a752f/manamoji/mana9.png -------------------------------------------------------------------------------- /manamoji/manab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scryfall/servo/a51e778e653bb5222eb93fca2fe587ce725a752f/manamoji/manab.png -------------------------------------------------------------------------------- /manamoji/manabg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scryfall/servo/a51e778e653bb5222eb93fca2fe587ce725a752f/manamoji/manabg.png -------------------------------------------------------------------------------- /manamoji/manabp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scryfall/servo/a51e778e653bb5222eb93fca2fe587ce725a752f/manamoji/manabp.png -------------------------------------------------------------------------------- /manamoji/manabr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scryfall/servo/a51e778e653bb5222eb93fca2fe587ce725a752f/manamoji/manabr.png -------------------------------------------------------------------------------- /manamoji/manac.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scryfall/servo/a51e778e653bb5222eb93fca2fe587ce725a752f/manamoji/manac.png -------------------------------------------------------------------------------- /manamoji/manachaos.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scryfall/servo/a51e778e653bb5222eb93fca2fe587ce725a752f/manamoji/manachaos.png -------------------------------------------------------------------------------- /manamoji/manae.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scryfall/servo/a51e778e653bb5222eb93fca2fe587ce725a752f/manamoji/manae.png -------------------------------------------------------------------------------- /manamoji/manag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scryfall/servo/a51e778e653bb5222eb93fca2fe587ce725a752f/manamoji/manag.png -------------------------------------------------------------------------------- /manamoji/managp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scryfall/servo/a51e778e653bb5222eb93fca2fe587ce725a752f/manamoji/managp.png -------------------------------------------------------------------------------- /manamoji/managu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scryfall/servo/a51e778e653bb5222eb93fca2fe587ce725a752f/manamoji/managu.png -------------------------------------------------------------------------------- /manamoji/managw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scryfall/servo/a51e778e653bb5222eb93fca2fe587ce725a752f/manamoji/managw.png -------------------------------------------------------------------------------- /manamoji/manahalf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scryfall/servo/a51e778e653bb5222eb93fca2fe587ce725a752f/manamoji/manahalf.png -------------------------------------------------------------------------------- /manamoji/manahr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scryfall/servo/a51e778e653bb5222eb93fca2fe587ce725a752f/manamoji/manahr.png -------------------------------------------------------------------------------- /manamoji/manahw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scryfall/servo/a51e778e653bb5222eb93fca2fe587ce725a752f/manamoji/manahw.png -------------------------------------------------------------------------------- /manamoji/manainfinity.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scryfall/servo/a51e778e653bb5222eb93fca2fe587ce725a752f/manamoji/manainfinity.png -------------------------------------------------------------------------------- /manamoji/manaq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scryfall/servo/a51e778e653bb5222eb93fca2fe587ce725a752f/manamoji/manaq.png -------------------------------------------------------------------------------- /manamoji/manar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scryfall/servo/a51e778e653bb5222eb93fca2fe587ce725a752f/manamoji/manar.png -------------------------------------------------------------------------------- /manamoji/manarg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scryfall/servo/a51e778e653bb5222eb93fca2fe587ce725a752f/manamoji/manarg.png -------------------------------------------------------------------------------- /manamoji/manarp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scryfall/servo/a51e778e653bb5222eb93fca2fe587ce725a752f/manamoji/manarp.png -------------------------------------------------------------------------------- /manamoji/manarw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scryfall/servo/a51e778e653bb5222eb93fca2fe587ce725a752f/manamoji/manarw.png -------------------------------------------------------------------------------- /manamoji/manas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scryfall/servo/a51e778e653bb5222eb93fca2fe587ce725a752f/manamoji/manas.png -------------------------------------------------------------------------------- /manamoji/manat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scryfall/servo/a51e778e653bb5222eb93fca2fe587ce725a752f/manamoji/manat.png -------------------------------------------------------------------------------- /manamoji/manau.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scryfall/servo/a51e778e653bb5222eb93fca2fe587ce725a752f/manamoji/manau.png -------------------------------------------------------------------------------- /manamoji/manaub.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scryfall/servo/a51e778e653bb5222eb93fca2fe587ce725a752f/manamoji/manaub.png -------------------------------------------------------------------------------- /manamoji/manaup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scryfall/servo/a51e778e653bb5222eb93fca2fe587ce725a752f/manamoji/manaup.png -------------------------------------------------------------------------------- /manamoji/manaur.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scryfall/servo/a51e778e653bb5222eb93fca2fe587ce725a752f/manamoji/manaur.png -------------------------------------------------------------------------------- /manamoji/manaw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scryfall/servo/a51e778e653bb5222eb93fca2fe587ce725a752f/manamoji/manaw.png -------------------------------------------------------------------------------- /manamoji/manawb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scryfall/servo/a51e778e653bb5222eb93fca2fe587ce725a752f/manamoji/manawb.png -------------------------------------------------------------------------------- /manamoji/manawp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scryfall/servo/a51e778e653bb5222eb93fca2fe587ce725a752f/manamoji/manawp.png -------------------------------------------------------------------------------- /manamoji/manawu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scryfall/servo/a51e778e653bb5222eb93fca2fe587ce725a752f/manamoji/manawu.png -------------------------------------------------------------------------------- /manamoji/manax.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scryfall/servo/a51e778e653bb5222eb93fca2fe587ce725a752f/manamoji/manax.png -------------------------------------------------------------------------------- /manamoji/manay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scryfall/servo/a51e778e653bb5222eb93fca2fe587ce725a752f/manamoji/manay.png -------------------------------------------------------------------------------- /manamoji/manaz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scryfall/servo/a51e778e653bb5222eb93fca2fe587ce725a752f/manamoji/manaz.png -------------------------------------------------------------------------------- /manamoji/src.sketch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scryfall/servo/a51e778e653bb5222eb93fca2fe587ce725a752f/manamoji/src.sketch -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "servo", 3 | "version": "0.1.0", 4 | "description": "A Discord bot that can return Magic card information and pictures.", 5 | "main": "index.js", 6 | "scripts": { 7 | "start": "node index.js", 8 | "test": "echo \"Error: no test specified\" && exit 1" 9 | }, 10 | "repository": { 11 | "type": "git", 12 | "url": "git+https://github.com/scryfall/servo.git" 13 | }, 14 | "author": "Scryfall ", 15 | "license": "MIT", 16 | "bugs": { 17 | "url": "https://github.com/scryfall/servo/issues" 18 | }, 19 | "homepage": "https://github.com/scryfall/servo#readme", 20 | "dependencies": { 21 | "discord.js": "^11.0.0", 22 | "request": "^2.79.0", 23 | "request-promise-native": "^1.0.3", 24 | "urijs": "^1.18.4" 25 | } 26 | } 27 | --------------------------------------------------------------------------------