owner-exec.js 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import syntaxerror from 'syntax-error'
  2. import { format } from 'util'
  3. import { fileURLToPath } from 'url'
  4. import { dirname } from 'path'
  5. import { createRequire } from 'module'
  6. const __dirname = dirname(fileURLToPath(import.meta.url))
  7. const require = createRequire(__dirname)
  8. let handler = async (m, _2) => {
  9. if (m.fromMe) return
  10. let { conn, isROwner, usedPrefix, noPrefix, args, groupMetadata } = _2
  11. if (!isROwner) return
  12. let _return
  13. let _syntax = ''
  14. let _text = (/^=/.test(usedPrefix) ? 'return ' : '') + noPrefix
  15. let old = m.exp * 1
  16. try {
  17. let i = 15
  18. let f = {
  19. exports: {}
  20. }
  21. let exec = new (async () => { }).constructor('print', 'm', 'handler', 'require', 'conn', 'Array', 'process', 'args', 'groupMetadata', 'module', 'exports', 'argument', _text)
  22. _return = await exec.call(conn, (...args) => {
  23. if (--i < 1) return
  24. console.log(...args)
  25. return conn.reply(m.chat, format(...args), m)
  26. }, m, handler, require, conn, CustomArray, process, args, groupMetadata, f, f.exports, [conn, _2])
  27. } catch (e) {
  28. let err = syntaxerror(_text, 'Execution Function', {
  29. allowReturnOutsideFunction: true,
  30. allowAwaitOutsideFunction: true,
  31. sourceType: 'module'
  32. })
  33. if (err) _syntax = '```' + err + '```\n\n'
  34. _return = e
  35. } finally {
  36. conn.reply(m.chat, _syntax + format(_return), m)
  37. m.exp = old
  38. }
  39. }
  40. handler.help = ['> ', '=> ']
  41. handler.tags = ['owner'];
  42. handler.customPrefix = /^=?> /
  43. handler.command = /(?:)/i
  44. //handler.rowner = true
  45. export default handler
  46. class CustomArray extends Array {
  47. constructor(...args) {
  48. if (typeof args[0] == 'number') return super(Math.min(args[0], 10000))
  49. else return super(...args)
  50. }
  51. }