Added JavaScript 'game'.

This commit is contained in:
Niels Simenon
2022-11-08 22:21:43 +01:00
parent dac6430112
commit d624602a1d
4 changed files with 107 additions and 1 deletions

49
src/games/javascript.js Normal file
View File

@@ -0,0 +1,49 @@
'use strict';
const { NodeVM } = require('vm2');
const util = require('util');
const crypto = require('crypto');
const timers = require('timers');
const style = require('../utils/style');
const vm = new NodeVM({
console: 'inherit',
sandbox: {
util,
crypto,
timers,
},
});
const vmConsole = [];
vm.on('console.log', (data, ...args) => {
vmConsole.push(data);
console.log(args);
});
async function onCommand(args, context) {
const script = args.join(' ');
context.logger.info(`JavaScript ran by ${context.user.username}: ${script}`);
try {
const result = await vm.run(script, {
sandbox: {
console: {
log: () => console.log('console loggin!'),
},
},
});
context.sendMessage(`${style.green('<success>')} ${result} | ${vmConsole.join(' ')}`, context.room.id);
} catch (error) {
context.sendMessage(`${style.red(`<${error.name}>`)} ${error.message}`, context.room.id);
}
}
module.exports = {
onCommand,
commands: ['js', '>'],
};