Files
revanced-bots/packages/client/index.js
reis 8b9f45dc22 feat: refactor and new features (#7)
* feat: refactor and new features

+ Refactored the codebase
+ OCR support in bots
+ Server sends training data every minute
+ Not using collectors for Discord feedback buttons anymore
+ Fixed grammar mistakes
+ Configs are now seperated
+ Tokens are no longer in configs
- Like feedback doesn't work for Discord yet

* feat: remove feedback button once voted

* feat: role blacklist

* feat: thread name check

* feat: error handler for training

* fix: bot crashing when a webhook msg is sent

* refactor: remove debugging lines

* feat: allow fixing mistake at votes in discord bot
2023-06-23 21:29:00 +03:00

87 lines
1.3 KiB
JavaScript

import { createConnection } from 'node:net';
import { serialize, deserialize } from 'bson';
import EventEmitter from 'node:events';
class HelperClient extends EventEmitter {
constructor({ server }) {
super();
if (!server?.port) throw new Error('You did not specify the server port.');
this.server = server;
}
connect() {
this.client = createConnection(
this.server.port,
this.server.host ? this.server.host : 'localhost',
() => {
this.emit('connect');
}
);
this.client.on('data', (data) => {
const eventData = deserialize(data, {
allowObjectSmallerThanBufferSize: true
});
switch (eventData.op) {
case 2: {
// The 'aiResponse' event.
this.emit('aiResponse', eventData);
break;
}
case 6: {
// The 'ocrResponse' event.
this.emit('ocrResponse', eventData);
break;
}
}
});
}
sendData(data) {
this.client.write(serialize(data));
return;
}
scanText(text, id) {
this.sendData({
op: 1,
id,
text
});
return;
}
scanImage(url, id) {
this.sendData({
op: 5,
id,
url
});
return;
}
sendTrainData(text, label) {
this.sendData({
op: 3,
label,
text
});
return;
}
trainAI() {
this.sendData({ op: 4 });
return;
}
}
export default HelperClient;