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",
|
||||
"file-type": "^16.1.0",
|
||||
"format-duration": "^1.4.0",
|
||||
"jsqr": "^1.3.1",
|
||||
"lavacord": "^1.1.9",
|
||||
"node-addon-api": "^4.2.0",
|
||||
"node-emoji": "^1.10.0",
|
||||
"node-fetch": "^3.1.0",
|
||||
"qrcode": "^1.4.4",
|
||||
"sharp": "^0.28.2",
|
||||
"winston": "^3.3.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
|
Loading…
Reference in a new issue