Revert qrcreate/qrread removal
The impact wasn't too bad in retrospect
This commit is contained in:
parent
382a7b0298
commit
64462f2202
4 changed files with 1508 additions and 1449 deletions
37
commands/general/qrcreate.js
Normal file
37
commands/general/qrcreate.js
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
import qrcode from "qrcode";
|
||||||
|
import { PassThrough } from "stream";
|
||||||
|
import Command from "../../classes/command.js";
|
||||||
|
|
||||||
|
class QrCreateCommand extends Command {
|
||||||
|
async run() {
|
||||||
|
if (this.args.length === 0) return "You need to provide some text to generate a QR code!";
|
||||||
|
this.client.sendChannelTyping(this.message.channel.id);
|
||||||
|
const writable = new PassThrough();
|
||||||
|
qrcode.toFileStream(writable, this.content, { margin: 1 });
|
||||||
|
const file = await this.streamToBuf(writable);
|
||||||
|
return {
|
||||||
|
file: file,
|
||||||
|
name: "qr.png"
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
streamToBuf(stream) {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
const chunks = [];
|
||||||
|
stream.on("data", (chunk) => {
|
||||||
|
chunks.push(chunk);
|
||||||
|
});
|
||||||
|
stream.once("error", (error) => {
|
||||||
|
reject(error);
|
||||||
|
});
|
||||||
|
stream.once("end", () => {
|
||||||
|
resolve(Buffer.concat(chunks));
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
static description = "Generates a QR code";
|
||||||
|
static arguments = ["[text]"];
|
||||||
|
}
|
||||||
|
|
||||||
|
export default QrCreateCommand;
|
23
commands/general/qrread.js
Normal file
23
commands/general/qrread.js
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
import jsqr from "jsqr";
|
||||||
|
import fetch from "node-fetch";
|
||||||
|
import sharp from "sharp";
|
||||||
|
import { clean } from "../../utils/misc.js";
|
||||||
|
import Command from "../../classes/command.js";
|
||||||
|
import imageDetect from "../../utils/imagedetect.js";
|
||||||
|
|
||||||
|
class QrReadCommand extends Command {
|
||||||
|
async run() {
|
||||||
|
const image = await imageDetect(this.client, this.message);
|
||||||
|
if (image === undefined) return "You need to provide an image with a QR code to read!";
|
||||||
|
this.client.sendChannelTyping(this.message.channel.id);
|
||||||
|
const data = await (await fetch(image.path)).buffer();
|
||||||
|
const rawData = await sharp(data).ensureAlpha().raw().toBuffer({ resolveWithObject: true });
|
||||||
|
const qrBuffer = jsqr(rawData.data, rawData.info.width, rawData.info.height);
|
||||||
|
if (!qrBuffer) return "I couldn't find a QR code!";
|
||||||
|
return `\`\`\`\n${await clean(qrBuffer.data)}\n\`\`\``;
|
||||||
|
}
|
||||||
|
|
||||||
|
static description = "Reads a QR code";
|
||||||
|
}
|
||||||
|
|
||||||
|
export default QrReadCommand;
|
2894
package-lock.json
generated
2894
package-lock.json
generated
File diff suppressed because it is too large
Load diff
|
@ -33,10 +33,13 @@
|
||||||
"eris-fleet": "github:esmBot/eris-fleet#master",
|
"eris-fleet": "github:esmBot/eris-fleet#master",
|
||||||
"file-type": "^16.1.0",
|
"file-type": "^16.1.0",
|
||||||
"format-duration": "^1.4.0",
|
"format-duration": "^1.4.0",
|
||||||
|
"jsqr": "^1.3.1",
|
||||||
"lavacord": "^1.1.9",
|
"lavacord": "^1.1.9",
|
||||||
"node-addon-api": "^4.2.0",
|
"node-addon-api": "^4.2.0",
|
||||||
"node-emoji": "^1.10.0",
|
"node-emoji": "^1.10.0",
|
||||||
"node-fetch": "^3.1.0",
|
"node-fetch": "^3.1.0",
|
||||||
|
"qrcode": "^1.4.4",
|
||||||
|
"sharp": "^0.28.2",
|
||||||
"winston": "^3.3.3"
|
"winston": "^3.3.3"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
|
Loading…
Reference in a new issue