Added JavaScript 'game'.
This commit is contained in:
49
src/games/javascript.js
Normal file
49
src/games/javascript.js
Normal 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', '>'],
|
||||
};
|
||||
Reference in New Issue
Block a user