@lotus-tree/fg-notation 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- package/lib/img/basic/1.png +0 -0
- package/lib/img/basic/12369.png +0 -0
- package/lib/img/basic/1237.png +0 -0
- package/lib/img/basic/1632143.png +0 -0
- package/lib/img/basic/2.png +0 -0
- package/lib/img/basic/21.png +0 -0
- package/lib/img/basic/214.png +0 -0
- package/lib/img/basic/21478.png +0 -0
- package/lib/img/basic/23.png +0 -0
- package/lib/img/basic/236.png +0 -0
- package/lib/img/basic/23698.png +0 -0
- package/lib/img/basic/28.png +0 -0
- package/lib/img/basic/3.png +0 -0
- package/lib/img/basic/32147.png +0 -0
- package/lib/img/basic/3219.png +0 -0
- package/lib/img/basic/341236.png +0 -0
- package/lib/img/basic/346.png +0 -0
- package/lib/img/basic/360.png +0 -0
- package/lib/img/basic/4.png +0 -0
- package/lib/img/basic/41236.png +0 -0
- package/lib/img/basic/421.png +0 -0
- package/lib/img/basic/46.png +0 -0
- package/lib/img/basic/4618346.png +0 -0
- package/lib/img/basic/47896.png +0 -0
- package/lib/img/basic/5.png +0 -0
- package/lib/img/basic/6.png +0 -0
- package/lib/img/basic/623.png +0 -0
- package/lib/img/basic/63214.png +0 -0
- package/lib/img/basic/64.png +0 -0
- package/lib/img/basic/6428.png +0 -0
- package/lib/img/basic/69874.png +0 -0
- package/lib/img/basic/7.png +0 -0
- package/lib/img/basic/7891.png +0 -0
- package/lib/img/basic/8.png +0 -0
- package/lib/img/basic/81237.png +0 -0
- package/lib/img/basic/82.png +0 -0
- package/lib/img/basic/87412.png +0 -0
- package/lib/img/basic/89632.png +0 -0
- package/lib/img/basic/9.png +0 -0
- package/lib/img/basic/[1].png +0 -0
- package/lib/img/basic/[2].png +0 -0
- package/lib/img/basic/[2]8.png +0 -0
- package/lib/img/basic/[3].png +0 -0
- package/lib/img/basic/[4].png +0 -0
- package/lib/img/basic/[6].png +0 -0
- package/lib/img/basic/[7].png +0 -0
- package/lib/img/basic/[8].png +0 -0
- package/lib/img/basic/[9].png +0 -0
- package/lib/img/basic/air.png +0 -0
- package/lib/img/basic/doubleforward.png +0 -0
- package/lib/img/credits.txt +4 -0
- package/lib/img/games/bb/a.png +0 -0
- package/lib/img/games/bb/b.png +0 -0
- package/lib/img/games/bb/c.png +0 -0
- package/lib/img/games/bb/d.png +0 -0
- package/lib/img/games/dbz/a1.png +0 -0
- package/lib/img/games/dbz/a2.png +0 -0
- package/lib/img/games/dbz/h.png +0 -0
- package/lib/img/games/dbz/l.png +0 -0
- package/lib/img/games/dbz/m.png +0 -0
- package/lib/img/games/dbz/s.png +0 -0
- package/lib/img/games/dnf/a.png +0 -0
- package/lib/img/games/dnf/as.png +0 -0
- package/lib/img/games/dnf/b.png +0 -0
- package/lib/img/games/dnf/g.png +0 -0
- package/lib/img/games/dnf/ms.png +0 -0
- package/lib/img/games/dnf/s.png +0 -0
- package/lib/img/games/gbf/g.png +0 -0
- package/lib/img/games/gbf/h.png +0 -0
- package/lib/img/games/gbf/l.png +0 -0
- package/lib/img/games/gbf/m.png +0 -0
- package/lib/img/games/gbf/s.png +0 -0
- package/lib/img/games/gg/d.png +0 -0
- package/lib/img/games/gg/hs.png +0 -0
- package/lib/img/games/gg/k.png +0 -0
- package/lib/img/games/gg/p.png +0 -0
- package/lib/img/games/gg/s.png +0 -0
- package/lib/img/games/kof/a.png +0 -0
- package/lib/img/games/kof/b.png +0 -0
- package/lib/img/games/kof/c.png +0 -0
- package/lib/img/games/kof/d.png +0 -0
- package/lib/img/games/kof/max.png +0 -0
- package/lib/img/games/mk/1.png +0 -0
- package/lib/img/games/mk/2.png +0 -0
- package/lib/img/games/mk/3.png +0 -0
- package/lib/img/games/mk/4.png +0 -0
- package/lib/img/games/sc/[a].png +0 -0
- package/lib/img/games/sc/[b].png +0 -0
- package/lib/img/games/sc/[g].png +0 -0
- package/lib/img/games/sc/[k].png +0 -0
- package/lib/img/games/sc/a.png +0 -0
- package/lib/img/games/sc/b.png +0 -0
- package/lib/img/games/sc/g.png +0 -0
- package/lib/img/games/sc/k.png +0 -0
- package/lib/img/games/sf/hk.png +0 -0
- package/lib/img/games/sf/hp.png +0 -0
- package/lib/img/games/sf/j..png +0 -0
- package/lib/img/games/sf/lk.png +0 -0
- package/lib/img/games/sf/lp.png +0 -0
- package/lib/img/games/sf/max.png +0 -0
- package/lib/img/games/sf/mk.png +0 -0
- package/lib/img/games/sf/mp.png +0 -0
- package/lib/img/games/sf/tap.png +0 -0
- package/lib/img/games/sg/hk.png +0 -0
- package/lib/img/games/sg/hp.png +0 -0
- package/lib/img/games/sg/k.png +0 -0
- package/lib/img/games/sg/lk.png +0 -0
- package/lib/img/games/sg/lp.png +0 -0
- package/lib/img/games/sg/mk.png +0 -0
- package/lib/img/games/sg/mp.png +0 -0
- package/lib/img/games/sg/p.png +0 -0
- package/lib/img/games/tfh/a.png +0 -0
- package/lib/img/games/tfh/b.png +0 -0
- package/lib/img/games/tfh/c.png +0 -0
- package/lib/img/games/tfh/d.png +0 -0
- package/lib/img/games/tkn/1.png +0 -0
- package/lib/img/games/tkn/12.png +0 -0
- package/lib/img/games/tkn/1234.png +0 -0
- package/lib/img/games/tkn/13.png +0 -0
- package/lib/img/games/tkn/14.png +0 -0
- package/lib/img/games/tkn/2.png +0 -0
- package/lib/img/games/tkn/23.png +0 -0
- package/lib/img/games/tkn/24.png +0 -0
- package/lib/img/games/tkn/3.png +0 -0
- package/lib/img/games/tkn/34.png +0 -0
- package/lib/img/games/tkn/4.png +0 -0
- package/lib/img/games/tkn/b.png +0 -0
- package/lib/img/games/tkn/d-b.png +0 -0
- package/lib/img/games/tkn/d-f.png +0 -0
- package/lib/img/games/tkn/d.png +0 -0
- package/lib/img/games/tkn/f.png +0 -0
- package/lib/img/games/tkn/o.png +0 -0
- package/lib/img/games/tkn/u-b.png +0 -0
- package/lib/img/games/tkn/u-f.png +0 -0
- package/lib/img/games/tkn/u.png +0 -0
- package/lib/img/preview.png +0 -0
- package/lib/index.js +382 -0
- package/package.json +10 -0
- package/src/img/basic/1.png +0 -0
- package/src/img/basic/12369.png +0 -0
- package/src/img/basic/1237.png +0 -0
- package/src/img/basic/1632143.png +0 -0
- package/src/img/basic/2.png +0 -0
- package/src/img/basic/21.png +0 -0
- package/src/img/basic/214.png +0 -0
- package/src/img/basic/21478.png +0 -0
- package/src/img/basic/23.png +0 -0
- package/src/img/basic/236.png +0 -0
- package/src/img/basic/23698.png +0 -0
- package/src/img/basic/28.png +0 -0
- package/src/img/basic/3.png +0 -0
- package/src/img/basic/32147.png +0 -0
- package/src/img/basic/3219.png +0 -0
- package/src/img/basic/341236.png +0 -0
- package/src/img/basic/346.png +0 -0
- package/src/img/basic/360.png +0 -0
- package/src/img/basic/4.png +0 -0
- package/src/img/basic/41236.png +0 -0
- package/src/img/basic/421.png +0 -0
- package/src/img/basic/46.png +0 -0
- package/src/img/basic/4618346.png +0 -0
- package/src/img/basic/47896.png +0 -0
- package/src/img/basic/5.png +0 -0
- package/src/img/basic/6.png +0 -0
- package/src/img/basic/623.png +0 -0
- package/src/img/basic/63214.png +0 -0
- package/src/img/basic/64.png +0 -0
- package/src/img/basic/6428.png +0 -0
- package/src/img/basic/69874.png +0 -0
- package/src/img/basic/7.png +0 -0
- package/src/img/basic/7891.png +0 -0
- package/src/img/basic/8.png +0 -0
- package/src/img/basic/81237.png +0 -0
- package/src/img/basic/82.png +0 -0
- package/src/img/basic/87412.png +0 -0
- package/src/img/basic/89632.png +0 -0
- package/src/img/basic/9.png +0 -0
- package/src/img/basic/[1].png +0 -0
- package/src/img/basic/[2].png +0 -0
- package/src/img/basic/[2]8.png +0 -0
- package/src/img/basic/[3].png +0 -0
- package/src/img/basic/[4].png +0 -0
- package/src/img/basic/[6].png +0 -0
- package/src/img/basic/[7].png +0 -0
- package/src/img/basic/[8].png +0 -0
- package/src/img/basic/[9].png +0 -0
- package/src/img/basic/air.png +0 -0
- package/src/img/basic/doubleforward.png +0 -0
- package/src/img/credits.txt +4 -0
- package/src/img/games/bb/a.png +0 -0
- package/src/img/games/bb/b.png +0 -0
- package/src/img/games/bb/c.png +0 -0
- package/src/img/games/bb/d.png +0 -0
- package/src/img/games/dbz/a1.png +0 -0
- package/src/img/games/dbz/a2.png +0 -0
- package/src/img/games/dbz/h.png +0 -0
- package/src/img/games/dbz/l.png +0 -0
- package/src/img/games/dbz/m.png +0 -0
- package/src/img/games/dbz/s.png +0 -0
- package/src/img/games/dnf/a.png +0 -0
- package/src/img/games/dnf/as.png +0 -0
- package/src/img/games/dnf/b.png +0 -0
- package/src/img/games/dnf/g.png +0 -0
- package/src/img/games/dnf/ms.png +0 -0
- package/src/img/games/dnf/s.png +0 -0
- package/src/img/games/gbf/g.png +0 -0
- package/src/img/games/gbf/h.png +0 -0
- package/src/img/games/gbf/l.png +0 -0
- package/src/img/games/gbf/m.png +0 -0
- package/src/img/games/gbf/s.png +0 -0
- package/src/img/games/gg/d.png +0 -0
- package/src/img/games/gg/hs.png +0 -0
- package/src/img/games/gg/k.png +0 -0
- package/src/img/games/gg/p.png +0 -0
- package/src/img/games/gg/s.png +0 -0
- package/src/img/games/kof/a.png +0 -0
- package/src/img/games/kof/b.png +0 -0
- package/src/img/games/kof/c.png +0 -0
- package/src/img/games/kof/d.png +0 -0
- package/src/img/games/kof/max.png +0 -0
- package/src/img/games/mk/1.png +0 -0
- package/src/img/games/mk/2.png +0 -0
- package/src/img/games/mk/3.png +0 -0
- package/src/img/games/mk/4.png +0 -0
- package/src/img/games/sc/[a].png +0 -0
- package/src/img/games/sc/[b].png +0 -0
- package/src/img/games/sc/[g].png +0 -0
- package/src/img/games/sc/[k].png +0 -0
- package/src/img/games/sc/a.png +0 -0
- package/src/img/games/sc/b.png +0 -0
- package/src/img/games/sc/g.png +0 -0
- package/src/img/games/sc/k.png +0 -0
- package/src/img/games/sf/hk.png +0 -0
- package/src/img/games/sf/hp.png +0 -0
- package/src/img/games/sf/j..png +0 -0
- package/src/img/games/sf/lk.png +0 -0
- package/src/img/games/sf/lp.png +0 -0
- package/src/img/games/sf/max.png +0 -0
- package/src/img/games/sf/mk.png +0 -0
- package/src/img/games/sf/mp.png +0 -0
- package/src/img/games/sf/tap.png +0 -0
- package/src/img/games/sg/hk.png +0 -0
- package/src/img/games/sg/hp.png +0 -0
- package/src/img/games/sg/k.png +0 -0
- package/src/img/games/sg/lk.png +0 -0
- package/src/img/games/sg/lp.png +0 -0
- package/src/img/games/sg/mk.png +0 -0
- package/src/img/games/sg/mp.png +0 -0
- package/src/img/games/sg/p.png +0 -0
- package/src/img/games/tfh/a.png +0 -0
- package/src/img/games/tfh/b.png +0 -0
- package/src/img/games/tfh/c.png +0 -0
- package/src/img/games/tfh/d.png +0 -0
- package/src/img/games/tkn/1.png +0 -0
- package/src/img/games/tkn/12.png +0 -0
- package/src/img/games/tkn/1234.png +0 -0
- package/src/img/games/tkn/13.png +0 -0
- package/src/img/games/tkn/14.png +0 -0
- package/src/img/games/tkn/2.png +0 -0
- package/src/img/games/tkn/23.png +0 -0
- package/src/img/games/tkn/24.png +0 -0
- package/src/img/games/tkn/3.png +0 -0
- package/src/img/games/tkn/34.png +0 -0
- package/src/img/games/tkn/4.png +0 -0
- package/src/img/games/tkn/b.png +0 -0
- package/src/img/games/tkn/d-b.png +0 -0
- package/src/img/games/tkn/d-f.png +0 -0
- package/src/img/games/tkn/d.png +0 -0
- package/src/img/games/tkn/f.png +0 -0
- package/src/img/games/tkn/o.png +0 -0
- package/src/img/games/tkn/u-b.png +0 -0
- package/src/img/games/tkn/u-f.png +0 -0
- package/src/img/games/tkn/u.png +0 -0
- package/src/img/preview.png +0 -0
- package/src/index.js +155 -0
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
package/src/index.js
ADDED
@@ -0,0 +1,155 @@
|
|
1
|
+
import sharp from 'sharp'
|
2
|
+
import path from 'path'
|
3
|
+
import glob from 'glob'
|
4
|
+
import { DataTypes } from 'sequelize'
|
5
|
+
|
6
|
+
const imgPath = path.join(__dirname, 'img')
|
7
|
+
const basicInputs = new Map()
|
8
|
+
const gameInputs = new Map()
|
9
|
+
|
10
|
+
glob.sync(path.join(imgPath, 'basic/**'), { nodir: true })
|
11
|
+
.forEach(p => {
|
12
|
+
const input = p.split('/').pop().replace('.png', '')
|
13
|
+
basicInputs.set(input, p)
|
14
|
+
})
|
15
|
+
|
16
|
+
basicInputs.set('>>', path.join(imgPath, 'basic/doubleforward.png'))
|
17
|
+
|
18
|
+
glob.sync(path.join(imgPath, 'games/**'), { nodir: true })
|
19
|
+
.forEach(p => {
|
20
|
+
const { dir, name } = path.parse(path.relative(path.join(imgPath, 'games'), p))
|
21
|
+
|
22
|
+
if (!gameInputs.has(dir)) gameInputs.set(dir, new Map())
|
23
|
+
gameInputs.get(dir).set(name, p)
|
24
|
+
})
|
25
|
+
|
26
|
+
function solveInput (inputs, input) {
|
27
|
+
if (inputs.has(input)) return [input]
|
28
|
+
|
29
|
+
for (let i = 0; i < input.length; i++) {
|
30
|
+
const s1 = input.slice(0, 0 - i)
|
31
|
+
if (inputs.has(s1)) return [s1, ...solveInput(inputs, input.slice(0 - i))]
|
32
|
+
}
|
33
|
+
|
34
|
+
throw new Error(`Cannot find "${input}" as a recognizable input`)
|
35
|
+
}
|
36
|
+
|
37
|
+
async function sendInput (inputs, result, message, caption) {
|
38
|
+
const canvas = await sharp({ create: { width: 152 * result.length, height: 152, channels: 4, background: 'transparent' } })
|
39
|
+
.composite(result.map((it, index) =>
|
40
|
+
({ input: inputs.get(it), left: index * 152, top: 0, width: 152, height: 152 })
|
41
|
+
))
|
42
|
+
.png()
|
43
|
+
.toBuffer()
|
44
|
+
|
45
|
+
return message.reply({ content: caption, files: [canvas] })
|
46
|
+
}
|
47
|
+
|
48
|
+
const builtin = {
|
49
|
+
37: {
|
50
|
+
game: 'sf',
|
51
|
+
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 hp >> 236 236 lk'
|
53
|
+
}
|
54
|
+
}
|
55
|
+
|
56
|
+
export default {
|
57
|
+
name: 'fg-notation',
|
58
|
+
intents: ['GUILD_MESSAGES'],
|
59
|
+
partials: ['MESSAGE'],
|
60
|
+
|
61
|
+
preload: sequelize => {
|
62
|
+
sequelize.define('fginput', {
|
63
|
+
guild: {
|
64
|
+
type: DataTypes.STRING,
|
65
|
+
primaryKey: true
|
66
|
+
},
|
67
|
+
name: {
|
68
|
+
type: DataTypes.STRING,
|
69
|
+
primaryKey: true
|
70
|
+
},
|
71
|
+
createdBy: DataTypes.STRING,
|
72
|
+
game: DataTypes.STRING,
|
73
|
+
caption: DataTypes.STRING,
|
74
|
+
input: DataTypes.STRING
|
75
|
+
})
|
76
|
+
},
|
77
|
+
|
78
|
+
events: {
|
79
|
+
async messageCreate (global, message) {
|
80
|
+
const { client, config, sequelize } = global
|
81
|
+
if (message.author.id === client.user.id || !message.member) return
|
82
|
+
|
83
|
+
const guildId = message.guildId
|
84
|
+
const { prefix } = config[guildId]
|
85
|
+
|
86
|
+
if (message.content.startsWith(prefix)) {
|
87
|
+
const name = message.content.split(' ').pop().replace(prefix, '')
|
88
|
+
const row = builtin[name] || (
|
89
|
+
await sequelize.models.fginput.findOne({
|
90
|
+
where: { guild: message.guild.id, name }
|
91
|
+
})
|
92
|
+
)
|
93
|
+
|
94
|
+
if (row) {
|
95
|
+
const inputs = new Map([...basicInputs, ...gameInputs.get(row.game)])
|
96
|
+
sendInput(inputs, row.input.split(' '), message, row.caption)
|
97
|
+
}
|
98
|
+
}
|
99
|
+
}
|
100
|
+
},
|
101
|
+
|
102
|
+
commands: {
|
103
|
+
fgi: {
|
104
|
+
usage: 'fgi [game] [inputs]',
|
105
|
+
desc: 'This command displays information about a command',
|
106
|
+
example: 'help perms',
|
107
|
+
execute: async ({ param }, { message }) => {
|
108
|
+
const [, game, i1] = param
|
109
|
+
if (!game || !i1) return message.reply('Missing arguments. Example: >fgi sf 236P 214K')
|
110
|
+
if (!gameInputs.has(game)) return message.reply(`"${game}" is not a valid game. Available games: ${Array.from(gameInputs.keys()).join(' ')}`)
|
111
|
+
|
112
|
+
const inputs = new Map([...basicInputs, ...gameInputs.get(game)])
|
113
|
+
const result = param.slice(2).map(i => solveInput(inputs, i.toLowerCase())).flat()
|
114
|
+
|
115
|
+
sendInput(inputs, result, message)
|
116
|
+
}
|
117
|
+
},
|
118
|
+
fgsave: {
|
119
|
+
usage: 'fgsave [game] [name] [inputs]',
|
120
|
+
desc: 'This command displays information about a command',
|
121
|
+
example: 'help perms',
|
122
|
+
execute: async ({ param, sequelize }, { message }) => {
|
123
|
+
const [, game, name, i1] = param
|
124
|
+
if (!game || !name || !i1) return message.reply('Missing arguments. Example: >fgi sf testName 236P 214K')
|
125
|
+
if (!gameInputs.has(game)) return message.reply(`"${game}" is not a valid game. Available games: ${Array.from(gameInputs.keys()).join(' ')}`)
|
126
|
+
|
127
|
+
const inputs = new Map([...basicInputs, ...gameInputs.get(game)])
|
128
|
+
const input = param.slice(3).map(i => solveInput(inputs, i.toLowerCase())).flat().join(' ')
|
129
|
+
|
130
|
+
await sequelize.models.fginput.create({ guild: message.guild.id, name, createdBy: message.author.id, game, input })
|
131
|
+
|
132
|
+
message.channel.send(`Saved command "${input}" as "${name}"`)
|
133
|
+
}
|
134
|
+
},
|
135
|
+
fgcaption: {
|
136
|
+
usage: 'fgsave [name] [caption]',
|
137
|
+
desc: 'This command displays information about a command',
|
138
|
+
example: 'help perms',
|
139
|
+
execute: async ({ param, sequelize }, { message }) => {
|
140
|
+
const [, name, i1] = param
|
141
|
+
if (!name || !i1) return message.reply('Missing arguments. Example: >fgi testName This is a caption')
|
142
|
+
|
143
|
+
const row = await sequelize.models.fginput.findOne({
|
144
|
+
where: { guild: message.guild.id, name }
|
145
|
+
})
|
146
|
+
|
147
|
+
if (!row) return message.reply(`"${name}" is not a saved input list`)
|
148
|
+
row.caption = param.slice(2).join(' ')
|
149
|
+
await row.save()
|
150
|
+
|
151
|
+
message.channel.send(`Saved caption for input list "${name}"`)
|
152
|
+
}
|
153
|
+
}
|
154
|
+
}
|
155
|
+
}
|