Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F5365774
run.js
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
1 KB
Referenced Files
None
Subscribers
None
run.js
View Options
import
{
SlashCommandBuilder
,
ModalBuilder
,
TextInputBuilder
,
TextInputStyle
,
ActionRowBuilder
}
from
'discord.js'
;
const
clip
=
(
s
,
n
)
=>
(
s
.
length
>
n
?
s
.
slice
(
0
,
n
)
+
'\n…'
:
s
);
export
default
{
builder
:
new
SlashCommandBuilder
().
setName
(
'run'
).
setDescription
(
'evaluate javascript via modal (owner only)'
),
ownerOnly
:
true
,
run
:
async
i
=>
{
const
modal
=
new
ModalBuilder
()
.
setCustomId
(
'run-modal'
)
.
setTitle
(
'run'
)
.
addComponents
(
new
ActionRowBuilder
().
addComponents
(
new
TextInputBuilder
()
.
setCustomId
(
'code'
)
.
setLabel
(
'code'
)
.
setStyle
(
TextInputStyle
.
Paragraph
)
.
setRequired
(
true
),
),
);
await
i
.
showModal
(
modal
);
const
submitted
=
await
i
.
awaitModalSubmit
({
time
:
300
_000
,
filter
:
x
=>
x
.
customId
===
'run-modal'
&&
x
.
user
.
id
===
i
.
user
.
id
,
}).
catch
(()
=>
null
);
if
(
!
submitted
)
return
;
const
code
=
submitted
.
fields
.
getTextInputValue
(
'code'
);
let
buf
=
''
;
const
sink
=
{
write
(
s
)
{
buf
+=
s
;
return
true
;
}
};
const
captured
=
new
console
.
Console
({
stdout
:
sink
,
stderr
:
sink
});
try
{
await
eval
(
`(async (console) => {
${
code
}
})`
)(
captured
);
}
catch
(
err
)
{
captured
.
error
(
err
?
.
stack
??
String
(
err
));
}
const
content
=
buf
?
'```ansi\n'
+
clip
(
buf
,
1900
)
+
'\n```'
:
'_(no output)_'
;
await
submitted
.
reply
({
content
});
}
};
File Metadata
Details
Attached
Mime Type
application/javascript
Expires
Sun, May 17, 5:51 AM (2 d)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
554556
Default Alt Text
run.js (1 KB)
Attached To
Mode
rANT Ant
Attached
Detach File
Event Timeline
Log In to Comment