@lotus-tree/fg-notation 1.0.1 → 1.1.4
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +67 -0
- package/babel.config.js +6 -0
- package/dev/img/basic/1.png +0 -0
- package/dev/img/basic/12369.png +0 -0
- package/dev/img/basic/1237.png +0 -0
- package/dev/img/basic/1632143.png +0 -0
- package/dev/img/basic/2.png +0 -0
- package/dev/img/basic/21.png +0 -0
- package/dev/img/basic/214.png +0 -0
- package/dev/img/basic/21478.png +0 -0
- package/dev/img/basic/23.png +0 -0
- package/dev/img/basic/236.png +0 -0
- package/dev/img/basic/23698.png +0 -0
- package/dev/img/basic/28.png +0 -0
- package/dev/img/basic/3.png +0 -0
- package/dev/img/basic/32147.png +0 -0
- package/dev/img/basic/3219.png +0 -0
- package/dev/img/basic/341236.png +0 -0
- package/dev/img/basic/346.png +0 -0
- package/dev/img/basic/360.png +0 -0
- package/dev/img/basic/4.png +0 -0
- package/dev/img/basic/41236.png +0 -0
- package/dev/img/basic/421.png +0 -0
- package/dev/img/basic/46.png +0 -0
- package/dev/img/basic/4618346.png +0 -0
- package/dev/img/basic/47896.png +0 -0
- package/dev/img/basic/5.png +0 -0
- package/dev/img/basic/6.png +0 -0
- package/dev/img/basic/623.png +0 -0
- package/dev/img/basic/63214.png +0 -0
- package/dev/img/basic/64.png +0 -0
- package/dev/img/basic/6428.png +0 -0
- package/dev/img/basic/69874.png +0 -0
- package/dev/img/basic/7.png +0 -0
- package/dev/img/basic/7891.png +0 -0
- package/dev/img/basic/8.png +0 -0
- package/dev/img/basic/81237.png +0 -0
- package/dev/img/basic/82.png +0 -0
- package/dev/img/basic/87412.png +0 -0
- package/dev/img/basic/89632.png +0 -0
- package/dev/img/basic/9.png +0 -0
- package/dev/img/basic/[1].png +0 -0
- package/dev/img/basic/[2].png +0 -0
- package/dev/img/basic/[2]8.png +0 -0
- package/dev/img/basic/[3].png +0 -0
- package/dev/img/basic/[4].png +0 -0
- package/dev/img/basic/[6].png +0 -0
- package/dev/img/basic/[7].png +0 -0
- package/dev/img/basic/[8].png +0 -0
- package/dev/img/basic/[9].png +0 -0
- package/dev/img/basic/air.png +0 -0
- package/dev/img/basic/doubleforward.png +0 -0
- package/dev/img/credits.txt +4 -0
- package/dev/img/games/bb/a.png +0 -0
- package/dev/img/games/bb/b.png +0 -0
- package/dev/img/games/bb/c.png +0 -0
- package/dev/img/games/bb/d.png +0 -0
- package/dev/img/games/dbz/a1.png +0 -0
- package/dev/img/games/dbz/a2.png +0 -0
- package/dev/img/games/dbz/h.png +0 -0
- package/dev/img/games/dbz/l.png +0 -0
- package/dev/img/games/dbz/m.png +0 -0
- package/dev/img/games/dbz/s.png +0 -0
- package/dev/img/games/dnf/a.png +0 -0
- package/dev/img/games/dnf/as.png +0 -0
- package/dev/img/games/dnf/b.png +0 -0
- package/dev/img/games/dnf/g.png +0 -0
- package/dev/img/games/dnf/ms.png +0 -0
- package/dev/img/games/dnf/s.png +0 -0
- package/dev/img/games/gbf/g.png +0 -0
- package/dev/img/games/gbf/h.png +0 -0
- package/dev/img/games/gbf/l.png +0 -0
- package/dev/img/games/gbf/m.png +0 -0
- package/dev/img/games/gbf/s.png +0 -0
- package/dev/img/games/gg/d.png +0 -0
- package/dev/img/games/gg/hs.png +0 -0
- package/dev/img/games/gg/k.png +0 -0
- package/dev/img/games/gg/p.png +0 -0
- package/dev/img/games/gg/rc.png +0 -0
- package/dev/img/games/gg/s.png +0 -0
- package/dev/img/games/kof/a.png +0 -0
- package/dev/img/games/kof/b.png +0 -0
- package/dev/img/games/kof/c.png +0 -0
- package/dev/img/games/kof/d.png +0 -0
- package/dev/img/games/kof/max.png +0 -0
- package/dev/img/games/mk/1.png +0 -0
- package/dev/img/games/mk/2.png +0 -0
- package/dev/img/games/mk/3.png +0 -0
- package/dev/img/games/mk/4.png +0 -0
- package/dev/img/games/sc/[a].png +0 -0
- package/dev/img/games/sc/[b].png +0 -0
- package/dev/img/games/sc/[g].png +0 -0
- package/dev/img/games/sc/[k].png +0 -0
- package/dev/img/games/sc/a.png +0 -0
- package/dev/img/games/sc/b.png +0 -0
- package/dev/img/games/sc/g.png +0 -0
- package/dev/img/games/sc/k.png +0 -0
- package/dev/img/games/sf/hk.png +0 -0
- package/dev/img/games/sf/hp.png +0 -0
- package/dev/img/games/sf/j..png +0 -0
- package/dev/img/games/sf/lk.png +0 -0
- package/dev/img/games/sf/lp.png +0 -0
- package/dev/img/games/sf/max.png +0 -0
- package/dev/img/games/sf/mk.png +0 -0
- package/dev/img/games/sf/mp.png +0 -0
- package/dev/img/games/sf/tap.png +0 -0
- package/dev/img/games/sg/hk.png +0 -0
- package/dev/img/games/sg/hp.png +0 -0
- package/dev/img/games/sg/k.png +0 -0
- package/dev/img/games/sg/lk.png +0 -0
- package/dev/img/games/sg/lp.png +0 -0
- package/dev/img/games/sg/mk.png +0 -0
- package/dev/img/games/sg/mp.png +0 -0
- package/dev/img/games/sg/p.png +0 -0
- package/dev/img/games/tfh/a.png +0 -0
- package/dev/img/games/tfh/b.png +0 -0
- package/dev/img/games/tfh/c.png +0 -0
- package/dev/img/games/tfh/d.png +0 -0
- package/dev/img/games/tkn/1.png +0 -0
- package/dev/img/games/tkn/12.png +0 -0
- package/dev/img/games/tkn/1234.png +0 -0
- package/dev/img/games/tkn/13.png +0 -0
- package/dev/img/games/tkn/14.png +0 -0
- package/dev/img/games/tkn/2.png +0 -0
- package/dev/img/games/tkn/23.png +0 -0
- package/dev/img/games/tkn/24.png +0 -0
- package/dev/img/games/tkn/3.png +0 -0
- package/dev/img/games/tkn/34.png +0 -0
- package/dev/img/games/tkn/4.png +0 -0
- package/dev/img/games/tkn/b.png +0 -0
- package/dev/img/games/tkn/d-b.png +0 -0
- package/dev/img/games/tkn/d-f.png +0 -0
- package/dev/img/games/tkn/d.png +0 -0
- package/dev/img/games/tkn/f.png +0 -0
- package/dev/img/games/tkn/o.png +0 -0
- package/dev/img/games/tkn/u-b.png +0 -0
- package/dev/img/games/tkn/u-f.png +0 -0
- package/dev/img/games/tkn/u.png +0 -0
- package/dev/img/preview.png +0 -0
- package/dev/index.js +491 -0
- package/lib/img/games/gg/rc.png +0 -0
- package/lib/index.js +122 -13
- package/package.json +25 -10
- package/src/img/games/gg/rc.png +0 -0
- package/src/index.js +46 -1
package/lib/index.js
CHANGED
@@ -11,10 +11,10 @@ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"))
|
|
11
11
|
|
12
12
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
13
13
|
|
14
|
-
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
15
|
-
|
16
14
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
17
15
|
|
16
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
17
|
+
|
18
18
|
var _sharp = _interopRequireDefault(require("sharp"));
|
19
19
|
|
20
20
|
var _path = _interopRequireDefault(require("path"));
|
@@ -23,10 +23,54 @@ var _glob = _interopRequireDefault(require("glob"));
|
|
23
23
|
|
24
24
|
var _sequelize = require("sequelize");
|
25
25
|
|
26
|
+
var _bent = _interopRequireDefault(require("bent"));
|
27
|
+
|
28
|
+
var getJSON = (0, _bent["default"])('json');
|
29
|
+
|
26
30
|
var imgPath = _path["default"].join(__dirname, 'img');
|
27
31
|
|
28
32
|
var basicInputs = new Map();
|
29
33
|
var gameInputs = new Map();
|
34
|
+
var glossary = {};
|
35
|
+
var terms = [];
|
36
|
+
getGlossary();
|
37
|
+
setInterval(getGlossary, 5 * 60 * 1000);
|
38
|
+
|
39
|
+
function getGlossary() {
|
40
|
+
return _getGlossary.apply(this, arguments);
|
41
|
+
}
|
42
|
+
|
43
|
+
function _getGlossary() {
|
44
|
+
_getGlossary = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee6() {
|
45
|
+
var result, tempG, tempT;
|
46
|
+
return _regenerator["default"].wrap(function _callee6$(_context6) {
|
47
|
+
while (1) {
|
48
|
+
switch (_context6.prev = _context6.next) {
|
49
|
+
case 0:
|
50
|
+
_context6.next = 2;
|
51
|
+
return getJSON('https://glossary.infil.net/json/glossary.json');
|
52
|
+
|
53
|
+
case 2:
|
54
|
+
result = _context6.sent;
|
55
|
+
tempG = {};
|
56
|
+
tempT = [];
|
57
|
+
result.forEach(function (i) {
|
58
|
+
var term = i.term.toLowerCase();
|
59
|
+
tempG[term] = i;
|
60
|
+
tempT.push(term);
|
61
|
+
});
|
62
|
+
glossary = tempG;
|
63
|
+
terms = tempT;
|
64
|
+
|
65
|
+
case 8:
|
66
|
+
case "end":
|
67
|
+
return _context6.stop();
|
68
|
+
}
|
69
|
+
}
|
70
|
+
}, _callee6);
|
71
|
+
}));
|
72
|
+
return _getGlossary.apply(this, arguments);
|
73
|
+
}
|
30
74
|
|
31
75
|
_glob["default"].sync(_path["default"].join(imgPath, 'basic/**'), {
|
32
76
|
nodir: true
|
@@ -64,13 +108,13 @@ function sendInput(_x, _x2, _x3, _x4) {
|
|
64
108
|
}
|
65
109
|
|
66
110
|
function _sendInput() {
|
67
|
-
_sendInput = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function
|
111
|
+
_sendInput = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee7(inputs, result, message, caption) {
|
68
112
|
var canvas;
|
69
|
-
return _regenerator["default"].wrap(function
|
113
|
+
return _regenerator["default"].wrap(function _callee7$(_context7) {
|
70
114
|
while (1) {
|
71
|
-
switch (
|
115
|
+
switch (_context7.prev = _context7.next) {
|
72
116
|
case 0:
|
73
|
-
|
117
|
+
_context7.next = 2;
|
74
118
|
return (0, _sharp["default"])({
|
75
119
|
create: {
|
76
120
|
width: 152 * result.length,
|
@@ -89,18 +133,18 @@ function _sendInput() {
|
|
89
133
|
})).png().toBuffer();
|
90
134
|
|
91
135
|
case 2:
|
92
|
-
canvas =
|
93
|
-
return
|
136
|
+
canvas = _context7.sent;
|
137
|
+
return _context7.abrupt("return", message.reply({
|
94
138
|
content: caption,
|
95
139
|
files: [canvas]
|
96
140
|
}));
|
97
141
|
|
98
142
|
case 4:
|
99
143
|
case "end":
|
100
|
-
return
|
144
|
+
return _context7.stop();
|
101
145
|
}
|
102
146
|
}
|
103
|
-
},
|
147
|
+
}, _callee7);
|
104
148
|
}));
|
105
149
|
return _sendInput.apply(this, arguments);
|
106
150
|
}
|
@@ -109,11 +153,15 @@ var builtin = {
|
|
109
153
|
37: {
|
110
154
|
game: 'sf',
|
111
155
|
caption: '***LETS GO JUSTIN!***',
|
112
|
-
input: '6 6 6 6 6 6 6 >> 6 6 6 6 6 6 6 >> 8 6 j. hk >> 2 mk >> 623
|
156
|
+
input: '6 6 6 6 6 6 6 >> 6 6 6 6 6 6 6 >> 8 6 j. hk >> 2 mk >> 623 mp >> 236 236 lk'
|
113
157
|
}
|
114
158
|
};
|
115
159
|
var _default = {
|
116
160
|
name: 'fg-notation',
|
161
|
+
about: {
|
162
|
+
name: 'FG Notation',
|
163
|
+
value: '[Instructions and source code](https://lotus.chitowarlock.com/fgnotation)\n[Infil\'s Fighting Game Glossary](https://glossary.infil.net)\n[MagicianStuff\'s Fighthing Game notations emotes](https://twitter.com/MagicianStuff/status/1477931054484893697)'
|
164
|
+
},
|
117
165
|
intents: ['GUILD_MESSAGES'],
|
118
166
|
partials: ['MESSAGE'],
|
119
167
|
preload: function preload(sequelize) {
|
@@ -373,10 +421,71 @@ var _default = {
|
|
373
421
|
return _execute3.apply(this, arguments);
|
374
422
|
}
|
375
423
|
|
424
|
+
return execute;
|
425
|
+
}()
|
426
|
+
},
|
427
|
+
fgglossary: {
|
428
|
+
usage: 'fgglossary [search term]',
|
429
|
+
desc: 'Searches for a term on Infil\'s Glossary',
|
430
|
+
example: 'fgglossary mexican uppercut',
|
431
|
+
execute: function () {
|
432
|
+
var _execute4 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5(_ref7, _ref8) {
|
433
|
+
var param, sequelize, message, params, search, result, url;
|
434
|
+
return _regenerator["default"].wrap(function _callee5$(_context5) {
|
435
|
+
while (1) {
|
436
|
+
switch (_context5.prev = _context5.next) {
|
437
|
+
case 0:
|
438
|
+
param = _ref7.param, sequelize = _ref7.sequelize;
|
439
|
+
message = _ref8.message;
|
440
|
+
params = param.slice(1);
|
441
|
+
|
442
|
+
if (!(params.length === 0)) {
|
443
|
+
_context5.next = 5;
|
444
|
+
break;
|
445
|
+
}
|
446
|
+
|
447
|
+
return _context5.abrupt("return", message.reply('Missing search term. Example: >fgglossary mexican uppercut'));
|
448
|
+
|
449
|
+
case 5:
|
450
|
+
search = params.join(' ').toLowerCase();
|
451
|
+
result = terms.filter(function (i) {
|
452
|
+
return i.includes(search);
|
453
|
+
});
|
454
|
+
url = "https://glossary.infil.net/?t=".concat(params.join('%20').toLowerCase());
|
455
|
+
|
456
|
+
if (!(result.length === 0)) {
|
457
|
+
_context5.next = 10;
|
458
|
+
break;
|
459
|
+
}
|
460
|
+
|
461
|
+
return _context5.abrupt("return", message.reply("Term \"".concat(search, "\" not found")));
|
462
|
+
|
463
|
+
case 10:
|
464
|
+
if (!(result.length === 1)) {
|
465
|
+
_context5.next = 12;
|
466
|
+
break;
|
467
|
+
}
|
468
|
+
|
469
|
+
return _context5.abrupt("return", message.reply("```".concat(glossary[result[0]].def, "```Source: <").concat(url, ">")));
|
470
|
+
|
471
|
+
case 12:
|
472
|
+
message.reply("Multiple terms found: ".concat(url));
|
473
|
+
|
474
|
+
case 13:
|
475
|
+
case "end":
|
476
|
+
return _context5.stop();
|
477
|
+
}
|
478
|
+
}
|
479
|
+
}, _callee5);
|
480
|
+
}));
|
481
|
+
|
482
|
+
function execute(_x11, _x12) {
|
483
|
+
return _execute4.apply(this, arguments);
|
484
|
+
}
|
485
|
+
|
376
486
|
return execute;
|
377
487
|
}()
|
378
488
|
}
|
379
489
|
}
|
380
490
|
};
|
381
|
-
exports["default"] = _default;
|
382
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJpbWdQYXRoIiwicGF0aCIsImpvaW4iLCJfX2Rpcm5hbWUiLCJiYXNpY0lucHV0cyIsIk1hcCIsImdhbWVJbnB1dHMiLCJnbG9iIiwic3luYyIsIm5vZGlyIiwiZm9yRWFjaCIsInAiLCJpbnB1dCIsInNwbGl0IiwicG9wIiwicmVwbGFjZSIsInNldCIsInBhcnNlIiwicmVsYXRpdmUiLCJkaXIiLCJuYW1lIiwiaGFzIiwiZ2V0Iiwic29sdmVJbnB1dCIsImlucHV0cyIsImkiLCJsZW5ndGgiLCJzMSIsInNsaWNlIiwiRXJyb3IiLCJzZW5kSW5wdXQiLCJyZXN1bHQiLCJtZXNzYWdlIiwiY2FwdGlvbiIsImNyZWF0ZSIsIndpZHRoIiwiaGVpZ2h0IiwiY2hhbm5lbHMiLCJiYWNrZ3JvdW5kIiwiY29tcG9zaXRlIiwibWFwIiwiaXQiLCJpbmRleCIsImxlZnQiLCJ0b3AiLCJwbmciLCJ0b0J1ZmZlciIsImNhbnZhcyIsInJlcGx5IiwiY29udGVudCIsImZpbGVzIiwiYnVpbHRpbiIsImdhbWUiLCJpbnRlbnRzIiwicGFydGlhbHMiLCJwcmVsb2FkIiwic2VxdWVsaXplIiwiZGVmaW5lIiwiZ3VpbGQiLCJ0eXBlIiwiRGF0YVR5cGVzIiwiU1RSSU5HIiwicHJpbWFyeUtleSIsImNyZWF0ZWRCeSIsImV2ZW50cyIsIm1lc3NhZ2VDcmVhdGUiLCJnbG9iYWwiLCJjbGllbnQiLCJjb25maWciLCJhdXRob3IiLCJpZCIsInVzZXIiLCJtZW1iZXIiLCJndWlsZElkIiwicHJlZml4Iiwic3RhcnRzV2l0aCIsIm1vZGVscyIsImZnaW5wdXQiLCJmaW5kT25lIiwid2hlcmUiLCJyb3ciLCJjb21tYW5kcyIsImZnaSIsInVzYWdlIiwiZGVzYyIsImV4YW1wbGUiLCJleGVjdXRlIiwicGFyYW0iLCJpMSIsIkFycmF5IiwiZnJvbSIsImtleXMiLCJ0b0xvd2VyQ2FzZSIsImZsYXQiLCJmZ3NhdmUiLCJjaGFubmVsIiwic2Vu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QUVyQixzQkFBQUEsS0FBSyxFQUFFMUIsT0FBTyxDQUFDMEIsS0FBUixDQUFjWSxFQUF2QjtBQUEyQmxELHNCQUFBQSxJQUFJLEVBQUpBO0FBQTNCO0FBRDBDLG1CQUFqQyxDQUpYOztBQUFBO0FBSUQ0RCxrQkFBQUEsR0FKQzs7QUFBQSxzQkFRRkEsR0FSRTtBQUFBO0FBQUE7QUFBQTs7QUFBQSxvREFRVWhELE9BQU8sQ0FBQ2dCLEtBQVIsYUFBa0I1QixJQUFsQixrQ0FSVjs7QUFBQTtBQVNQNEQsa0JBQUFBLEdBQUcsQ0FBQy9DLE9BQUosR0FBY3NELEtBQUssQ0FBQzNELEtBQU4sQ0FBWSxDQUFaLEVBQWUxQixJQUFmLENBQW9CLEdBQXBCLENBQWQ7QUFUTztBQUFBLHlCQVVEOEUsR0FBRyxDQUFDa0IsSUFBSixFQVZDOztBQUFBO0FBWVBsRSxrQkFBQUEsT0FBTyxDQUFDK0QsT0FBUixDQUFnQkMsSUFBaEIsMENBQXNENUUsSUFBdEQ7O0FBWk87QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsU0FBRjs7QUFBQTtBQUFBO0FBQUE7O0FBQUE7QUFBQTtBQUpFO0FBakNIO0FBOUNHLEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc2hhcnAgZnJvbSAnc2hhcnAnXHJcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnXHJcbmltcG9ydCBnbG9iIGZyb20gJ2dsb2InXHJcbmltcG9ydCB7IERhdGFUeXBlcyB9IGZyb20gJ3NlcXVlbGl6ZSdcclxuXHJcbmNvbnN0IGltZ1BhdGggPSBwYXRoLmpvaW4oX19kaXJuYW1lLCAnaW1nJylcclxuY29uc3QgYmFzaWNJbnB1dHMgPSBuZXcgTWFwKClcclxuY29uc3QgZ2FtZUlucHV0cyA9IG5ldyBNYXAoKVxyXG5cclxuZ2xvYi5zeW5jKHBhdGguam9pbihpbWdQYXRoLCAnYmFzaWMvKionKSwgeyBub2RpcjogdHJ1ZSB9KVxyXG4gIC5mb3JFYWNoKHAgPT4ge1xyXG4gICAgY29uc3QgaW5wdXQgPSBwLnNwbGl0KCcvJykucG9wKCkucmVwbGFjZSgnLnBuZycsICcnKVxyXG4gICAgYmFzaWNJbnB1dHMuc2V0KGlucHV0LCBwKVxyXG4gIH0pXHJcblxyXG5iYXNpY0lucHV0cy5zZXQoJz4+JywgcGF0aC5qb2luKGltZ1BhdGgsICdiYXNpYy9kb3VibGVmb3J3YXJkLnBuZycpKVxyXG5cclxuZ2xvYi5zeW5jKHBhdGguam9pbihpbWdQYXRoLCAnZ2FtZXMvKionKSwgeyBub2RpcjogdHJ1ZSB9KVxyXG4gIC5mb3JFYWNoKHAgPT4ge1xyXG4gICAgY29uc3QgeyBkaXIsIG5hbWUgfSA9IHBhdGgucGFyc2UocGF0aC5yZWxhdGl2ZShwYXRoLmpvaW4oaW1nUGF0aCwgJ2dhbWVzJyksIHApKVxyXG5cclxuICAgIGlmICghZ2FtZUlucHV0cy5oYXMoZGlyKSkgZ2FtZUlucHV0cy5zZXQoZGlyLCBuZXcgTWFwKCkpXHJcbiAgICBnYW1lSW5wdXRzLmdldChkaXIpLnNldChuYW1lLCBwKVxyXG4gIH0pXHJcblxyXG5mdW5jdGlvbiBzb2x2ZUlucHV0IChpbnB1dHMsIGlucHV0KSB7XHJcbiAgaWYgKGlucHV0cy5oYXMoaW5wdXQpKSByZXR1cm4gW2lucHV0XVxyXG5cclxuICBmb3IgKGxldCBpID0gMDsgaSA8IGlucHV0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICBjb25zdCBzMSA9IGlucHV0LnNsaWNlKDAsIDAgLSBpKVxyXG4gICAgaWYgKGlucHV0cy5oYXMoczEpKSByZXR1cm4gW3MxLCAuLi5zb2x2ZUlucHV0KGlucHV0cywgaW5wdXQuc2xpY2UoMCAtIGkpKV1cclxuICB9XHJcblxyXG4gIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGZpbmQgXCIke2lucHV0fVwiIGFzIGEgcmVjb2duaXphYmxlIGlucHV0YClcclxufVxyXG5cclxuYXN5bmMgZnVuY3Rpb24gc2VuZElucHV0IChpbnB1dHMsIHJlc3VsdCwgbWVzc2FnZSwgY2FwdGlvbikge1xyXG4gIGNvbnN0IGNhbnZhcyA9IGF3YWl0IHNoYXJwKHsgY3JlYXRlOiB7IHdpZHRoOiAxNTIgKiByZXN1bHQubGVuZ3RoLCBoZWlnaHQ6IDE1MiwgY2hhbm5lbHM6IDQsIGJhY2tncm91bmQ6ICd0cmFuc3BhcmVudCcgfSB9KVxyXG4gICAgLmNvbXBvc2l0ZShyZXN1bHQubWFwKChpdCwgaW5kZXgpID0+XHJcbiAgICAgICh7IGlucHV0OiBpbnB1dHMuZ2V0KGl0KSwgbGVmdDogaW5kZXggKiAxNTIsIHRvcDogMCwgd2lkdGg6IDE1MiwgaGVpZ2h0OiAxNTIgfSlcclxuICAgICkpXHJcbiAgICAucG5nKClcclxuICAgIC50b0J1ZmZlcigpXHJcblxyXG4gIHJldHVybiBtZXNzYWdlLnJlcGx5KHsgY29udGVudDogY2FwdGlvbiwgZmlsZXM6IFtjYW52YXNdIH0pXHJcbn1cclxuXHJcbmNvbnN0IGJ1aWx0aW4gPSB7XHJcbiAgMzc6IHtcclxuICAgIGdhbWU6ICdzZicsXHJcbiAgICBjYXB0aW9uOiAnKioqTEVUUyBHTyBKVVNUSU4hKioqJyxcclxuICAgIGlucHV0OiAnNiA2IDYgNiA2IDYgNiA+PiA2IDYgNiA2IDYgNiA2ID4+IDggNiBqLiBoayA+PiAyIG1rID4+IDYyMyBocCA+PiAyMzYgMjM2IGxrJ1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQge1xyXG4gIG5hbWU6ICdmZy1ub3RhdGlvbicsXHJcbiAgaW50ZW50czogWydHVUlMRF9NRVNTQUdFUyddLFxyXG4gIHBhcnRpYWxzOiBbJ01FU1NBR0UnXSxcclxuXHJcbiAgcHJlbG9hZDogc2VxdWVsaXplID0+IHtcclxuICAgIHNlcXVlbGl6ZS5kZWZpbmUoJ2ZnaW5wdXQnLCB7XHJcbiAgICAgIGd1aWxkOiB7XHJcbiAgICAgICAgdHlwZTogRGF0YVR5cGVzLlNUUklORyxcclxuICAgICAgICBwcmltYXJ5S2V5OiB0cnVlXHJcbiAgICAgIH0sXHJcbiAgICAgIG5hbWU6IHtcclxuICAgICAgICB0eXBlOiBEYXRhVHlwZXMuU1RSSU5HLFxyXG4gICAgICAgIHByaW1hcnlLZXk6IHRydWVcclxuICAgICAgfSxcclxuICAgICAgY3JlYXRlZEJ5OiBEYXRhVHlwZXMuU1RSSU5HLFxyXG4gICAgICBnYW1lOiBEYXRhVHlwZXMuU1RSSU5HLFxyXG4gICAgICBjYXB0aW9uOiBEYXRhVHlwZXMuU1RSSU5HLFxyXG4gICAgICBpbnB1dDogRGF0YVR5cGVzLlNUUklOR1xyXG4gICAgfSlcclxuICB9LFxyXG5cclxuICBldmVudHM6IHtcclxuICAgIGFzeW5jIG1lc3NhZ2VDcmVhdGUgKGdsb2JhbCwgbWVzc2FnZSkge1xyXG4gICAgICBjb25zdCB7IGNsaWVudCwgY29uZmlnLCBzZXF1ZWxpemUgfSA9IGdsb2JhbFxyXG4gICAgICBpZiAobWVzc2FnZS5hdXRob3IuaWQgPT09IGNsaWVudC51c2VyLmlkIHx8ICFtZXNzYWdlLm1lbWJlcikgcmV0dXJuXHJcblxyXG4gICAgICBjb25zdCBndWlsZElkID0gbWVzc2FnZS5ndWlsZElkXHJcbiAgICAgIGNvbnN0IHsgcHJlZml4IH0gPSBjb25maWdbZ3VpbGRJZF1cclxuXHJcbiAgICAgIGlmIChtZXNzYWdlLmNvbnRlbnQuc3RhcnRzV2l0aChwcmVmaXgpKSB7XHJcbiAgICAgICAgY29uc3QgbmFtZSA9IG1lc3NhZ2UuY29udGVudC5zcGxpdCgnICcpLnBvcCgpLnJlcGxhY2UocHJlZml4LCAnJylcclxuICAgICAgICBjb25zdCByb3cgPSBidWlsdGluW25hbWVdIHx8IChcclxuICAgICAgICAgIGF3YWl0IHNlcXVlbGl6ZS5tb2RlbHMuZmdpbnB1dC5maW5kT25lKHtcclxuICAgICAgICAgICAgd2hlcmU6IHsgZ3VpbGQ6IG1lc3NhZ2UuZ3VpbGQuaWQsIG5hbWUgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICApXHJcblxyXG4gICAgICAgIGlmIChyb3cpIHtcclxuICAgICAgICAgIGNvbnN0IGlucHV0cyA9IG5ldyBNYXAoWy4uLmJhc2ljSW5wdXRzLCAuLi5nYW1lSW5wdXRzLmdldChyb3cuZ2FtZSldKVxyXG4gICAgICAgICAgc2VuZElucHV0KGlucHV0cywgcm93LmlucHV0LnNwbGl0KCcgJyksIG1lc3NhZ2UsIHJvdy5jYXB0aW9uKVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH0sXHJcblxyXG4gIGNvbW1hbmRzOiB7XHJcbiAgICBmZ2k6IHtcclxuICAgICAgdXNhZ2U6ICdmZ2kgW2dhbWVdIFtpbnB1dHNdJyxcclxuICAgICAgZGVzYzogJ0NvbnZlcnRzIGEgbGlzdCBvZiBpbnB1dHMgaW50byBhbiBpbWFnZScsXHJcbiAgICAgIGV4YW1wbGU6ICdmZ2kgc2YgMjM2UCAyMTRLJyxcclxuICAgICAgZXhlY3V0ZTogYXN5bmMgKHsgcGFyYW0gfSwgeyBtZXNzYWdlIH0pID0+IHtcclxuICAgICAgICBjb25zdCBbLCBnYW1lLCBpMV0gPSBwYXJhbVxyXG4gICAgICAgIGlmICghZ2FtZSB8fCAhaTEpIHJldHVybiBtZXNzYWdlLnJlcGx5KCdNaXNzaW5nIGFyZ3VtZW50cy4gRXhhbXBsZTogPmZnaSBzZiAyMzZQIDIxNEsnKVxyXG4gICAgICAgIGlmICghZ2FtZUlucHV0cy5oYXMoZ2FtZSkpIHJldHVybiBtZXNzYWdlLnJlcGx5KGBcIiR7Z2FtZX1cIiBpcyBub3QgYSB2YWxpZCBnYW1lLiBBdmFpbGFibGUgZ2FtZXM6ICR7QXJyYXkuZnJvbShnYW1lSW5wdXRzLmtleXMoKSkuam9pbignICcpfWApXHJcblxyXG4gICAgICAgIGNvbnN0IGlucHV0cyA9IG5ldyBNYXAoWy4uLmJhc2ljSW5wdXRzLCAuLi5nYW1lSW5wdXRzLmdldChnYW1lKV0pXHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gcGFyYW0uc2xpY2UoMikubWFwKGkgPT4gc29sdmVJbnB1dChpbnB1dHMsIGkudG9Mb3dlckNhc2UoKSkpLmZsYXQoKVxyXG5cclxuICAgICAgICBzZW5kSW5wdXQoaW5wdXRzLCByZXN1bHQsIG1lc3NhZ2UpXHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICBmZ3NhdmU6IHtcclxuICAgICAgdXNhZ2U6ICdmZ3NhdmUgW2dhbWVdIFtuYW1lXSBbaW5wdXRzXScsXHJcbiAgICAgIGRlc2M6ICdTYXZlcyBhIGxpc3Qgb2YgaW5wdXRzIGludG8gYSBjb21tYW5kJyxcclxuICAgICAgZXhhbXBsZTogJ2ZnaSBzZiB0ZXN0TmFtZSAyMzZQIDIxNEsnLFxyXG4gICAgICBleGVjdXRlOiBhc3luYyAoeyBwYXJhbSwgc2VxdWVsaXplIH0sIHsgbWVzc2FnZSB9KSA9PiB7XHJcbiAgICAgICAgY29uc3QgWywgZ2FtZSwgbmFtZSwgaTFdID0gcGFyYW1cclxuICAgICAgICBpZiAoIWdhbWUgfHwgIW5hbWUgfHwgIWkxKSByZXR1cm4gbWVzc2FnZS5yZXBseSgnTWlzc2luZyBhcmd1bWVudHMuIEV4YW1wbGU6ID5mZ2kgc2YgdGVzdE5hbWUgMjM2UCAyMTRLJylcclxuICAgICAgICBpZiAoIWdhbWVJbnB1dHMuaGFzKGdhbWUpKSByZXR1cm4gbWVzc2FnZS5yZXBseShgXCIke2dhbWV9XCIgaXMgbm90IGEgdmFsaWQgZ2FtZS4gQXZhaWxhYmxlIGdhbWVzOiAke0FycmF5LmZyb20oZ2FtZUlucHV0cy5rZXlzKCkpLmpvaW4oJyAnKX1gKVxyXG5cclxuICAgICAgICBjb25zdCBpbnB1dHMgPSBuZXcgTWFwKFsuLi5iYXNpY0lucHV0cywgLi4uZ2FtZUlucHV0cy5nZXQoZ2FtZSldKVxyXG4gICAgICAgIGNvbnN0IGlucHV0ID0gcGFyYW0uc2xpY2UoMykubWFwKGkgPT4gc29sdmVJbnB1dChpbnB1dHMsIGkudG9Mb3dlckNhc2UoKSkpLmZsYXQoKS5qb2luKCcgJylcclxuXHJcbiAgICAgICAgYXdhaXQgc2VxdWVsaXplLm1vZGVscy5mZ2lucHV0LmNyZWF0ZSh7IGd1aWxkOiBtZXNzYWdlLmd1aWxkLmlkLCBuYW1lLCBjcmVhdGVkQnk6IG1lc3NhZ2UuYXV0aG9yLmlkLCBnYW1lLCBpbnB1dCB9KVxyXG5cclxuICAgICAgICBtZXNzYWdlLmNoYW5uZWwuc2VuZChgU2F2ZWQgY29tbWFuZCBcIiR7aW5wdXR9XCIgYXMgXCIke25hbWV9XCJgKVxyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgZmdjYXB0aW9uOiB7XHJcbiAgICAgIHVzYWdlOiAnZmdjYXB0aW9uIFtuYW1lXSBbY2FwdGlvbl0nLFxyXG4gICAgICBkZXNjOiAnQWRkcyBhIGNhcHRpb24gdG8gYSBzYXZlZCBpbnB1dCBjb21tYW5kJyxcclxuICAgICAgZXhhbXBsZTogJ2ZnY2FwdGlvbiB0ZXN0TmFtZSBUaGlzIGlzIGEgY2FwdGlvbicsXHJcbiAgICAgIGV4ZWN1dGU6IGFzeW5jICh7IHBhcmFtLCBzZXF1ZWxpemUgfSwgeyBtZXNzYWdlIH0pID0+IHtcclxuICAgICAgICBjb25zdCBbLCBuYW1lLCBpMV0gPSBwYXJhbVxyXG4gICAgICAgIGlmICghbmFtZSB8fCAhaTEpIHJldHVybiBtZXNzYWdlLnJlcGx5KCdNaXNzaW5nIGFyZ3VtZW50cy4gRXhhbXBsZTogPmZnaSB0ZXN0TmFtZSBUaGlzIGlzIGEgY2FwdGlvbicpXHJcblxyXG4gICAgICAgIGNvbnN0IHJvdyA9IGF3YWl0IHNlcXVlbGl6ZS5tb2RlbHMuZmdpbnB1dC5maW5kT25lKHtcclxuICAgICAgICAgIHdoZXJlOiB7IGd1aWxkOiBtZXNzYWdlLmd1aWxkLmlkLCBuYW1lIH1cclxuICAgICAgICB9KVxyXG5cclxuICAgICAgICBpZiAoIXJvdykgcmV0dXJuIG1lc3NhZ2UucmVwbHkoYFwiJHtuYW1lfVwiIGlzIG5vdCBhIHNhdmVkIGlucHV0IGxpc3RgKVxyXG4gICAgICAgIHJvdy5jYXB0aW9uID0gcGFyYW0uc2xpY2UoMikuam9pbignICcpXHJcbiAgICAgICAgYXdhaXQgcm93LnNhdmUoKVxyXG5cclxuICAgICAgICBtZXNzYWdlLmNoYW5uZWwuc2VuZChgU2F2ZWQgY2FwdGlvbiBmb3IgaW5wdXQgbGlzdCBcIiR7bmFtZX1cImApXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
|
491
|
+
exports["default"] = _default;
|
package/package.json
CHANGED
@@ -1,10 +1,25 @@
|
|
1
|
-
{
|
2
|
-
"name": "@lotus-tree/fg-notation",
|
3
|
-
"version": "1.
|
4
|
-
"main": "lib/index.js",
|
5
|
-
"module": "src/index.js",
|
6
|
-
"
|
7
|
-
"
|
8
|
-
"
|
9
|
-
|
10
|
-
|
1
|
+
{
|
2
|
+
"name": "@lotus-tree/fg-notation",
|
3
|
+
"version": "1.1.4",
|
4
|
+
"main": "lib/index.js",
|
5
|
+
"module": "src/index.js",
|
6
|
+
"scripts": {
|
7
|
+
"run-babel": "babel --delete-dir-on-start --copy-files src",
|
8
|
+
"build": "yarn run run-babel --out-dir lib",
|
9
|
+
"dev": "yarn run run-babel --watch --out-dir dev",
|
10
|
+
"prepublishOnly": "yarn build"
|
11
|
+
},
|
12
|
+
"dependencies": {
|
13
|
+
"@lotus-tree/command-handler": "^2.1.0",
|
14
|
+
"bent": "^7.3.12",
|
15
|
+
"glob": "^7.2.0",
|
16
|
+
"sharp": "^0.29.3"
|
17
|
+
},
|
18
|
+
"devDependencies": {
|
19
|
+
"@babel/cli": "^7.16.7",
|
20
|
+
"@babel/core": "^7.16.7",
|
21
|
+
"@babel/node": "^7.16.7",
|
22
|
+
"@babel/plugin-transform-runtime": "^7.16.7",
|
23
|
+
"@babel/preset-env": "^7.16.7"
|
24
|
+
}
|
25
|
+
}
|
Binary file
|
package/src/index.js
CHANGED
@@ -2,11 +2,34 @@ import sharp from 'sharp'
|
|
2
2
|
import path from 'path'
|
3
3
|
import glob from 'glob'
|
4
4
|
import { DataTypes } from 'sequelize'
|
5
|
+
import bent from 'bent'
|
5
6
|
|
7
|
+
const getJSON = bent('json')
|
6
8
|
const imgPath = path.join(__dirname, 'img')
|
7
9
|
const basicInputs = new Map()
|
8
10
|
const gameInputs = new Map()
|
9
11
|
|
12
|
+
let glossary = {}
|
13
|
+
let terms = []
|
14
|
+
|
15
|
+
getGlossary()
|
16
|
+
setInterval(getGlossary, 5 * 60 * 1000)
|
17
|
+
|
18
|
+
async function getGlossary () {
|
19
|
+
const result = await getJSON('https://glossary.infil.net/json/glossary.json')
|
20
|
+
const tempG = {}
|
21
|
+
const tempT = []
|
22
|
+
|
23
|
+
result.forEach(i => {
|
24
|
+
const term = i.term.toLowerCase()
|
25
|
+
tempG[term] = i
|
26
|
+
tempT.push(term)
|
27
|
+
})
|
28
|
+
|
29
|
+
glossary = tempG
|
30
|
+
terms = tempT
|
31
|
+
}
|
32
|
+
|
10
33
|
glob.sync(path.join(imgPath, 'basic/**'), { nodir: true })
|
11
34
|
.forEach(p => {
|
12
35
|
const input = p.split('/').pop().replace('.png', '')
|
@@ -49,12 +72,16 @@ const builtin = {
|
|
49
72
|
37: {
|
50
73
|
game: 'sf',
|
51
74
|
caption: '***LETS GO JUSTIN!***',
|
52
|
-
input: '6 6 6 6 6 6 6 >> 6 6 6 6 6 6 6 >> 8 6 j. hk >> 2 mk >> 623
|
75
|
+
input: '6 6 6 6 6 6 6 >> 6 6 6 6 6 6 6 >> 8 6 j. hk >> 2 mk >> 623 mp >> 236 236 lk'
|
53
76
|
}
|
54
77
|
}
|
55
78
|
|
56
79
|
export default {
|
57
80
|
name: 'fg-notation',
|
81
|
+
about: {
|
82
|
+
name: 'FG Notation',
|
83
|
+
value: '[Instructions and source code](https://lotus.chitowarlock.com/fgnotation)\n[Infil\'s Fighting Game Glossary](https://glossary.infil.net)\n[MagicianStuff\'s Fighthing Game notations emotes](https://twitter.com/MagicianStuff/status/1477931054484893697)'
|
84
|
+
},
|
58
85
|
intents: ['GUILD_MESSAGES'],
|
59
86
|
partials: ['MESSAGE'],
|
60
87
|
|
@@ -150,6 +177,24 @@ export default {
|
|
150
177
|
|
151
178
|
message.channel.send(`Saved caption for input list "${name}"`)
|
152
179
|
}
|
180
|
+
},
|
181
|
+
fgglossary: {
|
182
|
+
usage: 'fgglossary [search term]',
|
183
|
+
desc: 'Searches for a term on Infil\'s Glossary',
|
184
|
+
example: 'fgglossary mexican uppercut',
|
185
|
+
execute: async ({ param, sequelize }, { message }) => {
|
186
|
+
const params = param.slice(1)
|
187
|
+
if (params.length === 0) return message.reply('Missing search term. Example: >fgglossary mexican uppercut')
|
188
|
+
|
189
|
+
const search = params.join(' ').toLowerCase()
|
190
|
+
const result = terms.filter(i => i.includes(search))
|
191
|
+
const url = `https://glossary.infil.net/?t=${params.join('%20').toLowerCase()}`
|
192
|
+
|
193
|
+
if (result.length === 0) return message.reply(`Term "${search}" not found`)
|
194
|
+
if (result.length === 1) return message.reply(`\`\`\`${glossary[result[0]].def}\`\`\`Source: <${url}>`)
|
195
|
+
|
196
|
+
message.reply(`Multiple terms found: ${url}`)
|
197
|
+
}
|
153
198
|
}
|
154
199
|
}
|
155
200
|
}
|