Skip to content

Commit cb075cd

Browse files
Releasing v1.0.0 (#516)
* chore: added yarn dev (for alias) * style: code style unified * chore: update import path * types: added return type and removed any * chore: updated types and made changes on owner method * types: fixed inspect type * deps: changed dokdo version * cd: removed reviewdog action * types: fixed ts compile error (temporary) * chore: removed djsDocs * types: fixed type issues * chore: removed djsDocs * chore: removed djsDocs * chore: improved code style * deps: fixed dependecy issue * docs: changed example
1 parent 9a206b8 commit cb075cd

25 files changed

+1091
-780
lines changed

.github/workflows/reviewdog.yml

-15
This file was deleted.

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ const client = new Discord.Client({ intents: ['GUILDS', 'GUILD_MESSAGES'] })
7272

7373
const Dokdo = require('dokdo')
7474

75-
const DokdoHandler = new Dokdo(client, { aliases: ['dokdo', 'dok'], prefix: '!' }) // Using Bot Application ownerID as default for owner option.
75+
const DokdoHandler = new Dokdo.Client(client, { aliases: ['dokdo', 'dok'], prefix: '!' }) // Using Bot Application ownerID as default for owner option.
7676

7777
client.on('messageCreate', async message => {
7878
if (message.content === 'ping') return message.channel.send('Pong') // handle commands first

package.json

+4-3
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
{
22
"name": "dokdo",
3-
"version": "0.6.2",
3+
"version": "1.0.0",
44
"description": "Dokdo. Easy Discord bot debuging tool.",
55
"scripts": {
66
"build": "tsup",
7+
"dev": "yarn test:bot",
78
"lint": "eslint --ext js,jsx,ts,tsx src",
89
"lint:fix": "eslint --ext js,jsx,ts,tsx src --fix",
910
"test": "yarn build && mocha --exit",
@@ -12,10 +13,10 @@
1213
"update": "yarn upgrade-interactive"
1314
},
1415
"main": "./dist/index.js",
15-
"module": "./esm/index.js",
16+
"module": "./dist/esm/index.js",
1617
"types": "./dist/index.d.ts",
1718
"exports": {
18-
"import": "./esm/index.js",
19+
"import": "./dist/esm/index.js",
1920
"require": "./dist/index.js",
2021
"types": "./dist/index.d.ts"
2122
},

src/commands/cat.ts

+5-2
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,11 @@ import { ButtonBuilder, ButtonStyle, Message } from 'discord.js'
33
import { ProcessManager, HLJS } from '../utils'
44
import type { Client } from '../'
55

6-
export async function cat (message: Message, parent: Client) {
7-
if (!message.data.args) return message.reply('Missing Arguments.')
6+
export async function cat (message: Message, parent: Client): Promise<void> {
7+
if (!message.data.args) {
8+
message.reply('Missing Arguments.')
9+
return
10+
}
811
const filename = message.data.args
912
let msg
1013
fs.readFile(filename, async (err, data) => {

src/commands/curl.ts

+14-11
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,17 @@
11
import fetch from 'node-fetch'
2-
import Discord, { Message } from 'discord.js'
2+
import { ButtonBuilder, ButtonStyle, Message } from 'discord.js'
33
import { ProcessManager, HLJS } from '../utils'
44
import type { Client } from '../'
55

6-
export async function curl (message: Message, parent: Client) {
7-
if (!message.data.args) return message.reply('Missing Arguments.')
6+
export async function curl (message: Message, parent: Client): Promise<void> {
7+
if (!message.data.args) {
8+
message.reply('Missing Arguments.')
9+
return
10+
}
811

912
let type
10-
const res = await fetch(message.data.args.split(' ')[0]!)
11-
.then(async (r) => {
13+
const res = await fetch(message.data.args.split(' ')[0] as string)
14+
.then(async r => {
1215
const text = await r.text()
1316
try {
1417
type = 'json'
@@ -30,24 +33,24 @@ export async function curl (message: Message, parent: Client) {
3033
await msg.init()
3134
await msg.addAction([
3235
{
33-
button: new Discord.ButtonBuilder()
34-
.setStyle(Discord.ButtonStyle.Danger)
36+
button: new ButtonBuilder()
37+
.setStyle(ButtonStyle.Danger)
3538
.setCustomId('dokdo$prev')
3639
.setLabel('Prev'),
3740
action: ({ manager }) => manager.previousPage(),
3841
requirePage: true
3942
},
4043
{
41-
button: new Discord.ButtonBuilder()
42-
.setStyle(Discord.ButtonStyle.Secondary)
44+
button: new ButtonBuilder()
45+
.setStyle(ButtonStyle.Secondary)
4346
.setCustomId('dokdo$stop')
4447
.setLabel('Stop'),
4548
action: ({ manager }) => manager.destroy(),
4649
requirePage: true
4750
},
4851
{
49-
button: new Discord.ButtonBuilder()
50-
.setStyle(Discord.ButtonStyle.Success)
52+
button: new ButtonBuilder()
53+
.setStyle(ButtonStyle.Success)
5154
.setCustomId('dokdo$next')
5255
.setLabel('Next'),
5356
action: ({ manager }) => manager.nextPage(),

src/commands/docs.ts

-7
This file was deleted.

src/commands/exec.ts

+20-21
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,21 @@
11
import child from 'child_process'
2-
import Discord, { Message } from 'discord.js'
2+
import { ButtonBuilder, ButtonStyle, Message } from 'discord.js'
33
import type { Client } from '../'
44
import { ProcessManager, codeBlock } from '../utils'
55

6-
export async function exec (message: Message, parent: Client) {
7-
if (!message.data.args) return message.reply('Missing Arguments.')
6+
export async function exec (message: Message, parent: Client): Promise<void> {
7+
if (!message.data.args) {
8+
message.reply('Missing Arguments.')
9+
return
10+
}
811

912
const shell =
1013
process.env.SHELL || (process.platform === 'win32' ? 'powershell' : null)
11-
console.log(shell)
1214
if (!shell) {
13-
return message.reply(
15+
message.reply(
1416
'Sorry, we are not able to find your default shell.\nPlease set `process.env.SHELL`.'
1517
)
18+
return
1619
}
1720

1821
const msg = new ProcessManager(message, `$ ${message.data.args}\n`, parent, {
@@ -28,35 +31,33 @@ export async function exec (message: Message, parent: Client) {
2831
kill(res, 'SIGTERM')
2932
message.reply('Shell timeout occured.')
3033
}, 180000)
31-
console.log(res.pid)
3234

3335
await msg.addAction(
3436
[
3537
{
36-
button: new Discord.ButtonBuilder()
37-
.setStyle(Discord.ButtonStyle.Danger)
38+
button: new ButtonBuilder()
39+
.setStyle(ButtonStyle.Danger)
3840
.setCustomId('dokdo$prev')
3941
.setLabel('Prev'),
4042
action: ({ manager }) => manager.previousPage(),
4143
requirePage: true
4244
},
4345
{
44-
button: new Discord.ButtonBuilder()
45-
.setStyle(Discord.ButtonStyle.Secondary)
46+
button: new ButtonBuilder()
47+
.setStyle(ButtonStyle.Secondary)
4648
.setCustomId('dokdo$stop')
4749
.setLabel('Stop'),
4850
action: async ({ res, manager }) => {
4951
res.stdin.pause()
50-
const gg = await kill(res)
51-
console.log(gg)
52+
kill(res)
5253
msg.add('^C')
5354
manager.destroy()
5455
},
55-
requirePage: true
56+
requirePage: false
5657
},
5758
{
58-
button: new Discord.ButtonBuilder()
59-
.setStyle(Discord.ButtonStyle.Success)
59+
button: new ButtonBuilder()
60+
.setStyle(ButtonStyle.Success)
6061
.setCustomId('dokdo$next')
6162
.setLabel('Next'),
6263
action: ({ manager }) => manager.nextPage(),
@@ -67,16 +68,14 @@ export async function exec (message: Message, parent: Client) {
6768
)
6869

6970
res.stdout.on('data', (data) => {
70-
console.log(data.toString())
71-
msg.add('\n' + data.toString())
71+
msg.add(data.toString())
7272
})
7373

7474
res.stderr.on('data', (data) => {
75-
msg.add(`\n[stderr] ${data.toString()}`)
75+
msg.add(`[stderr] ${data.toString()}`)
7676
})
7777

7878
res.on('error', (err) => {
79-
console.log(err)
8079
return message.reply(
8180
`Error occurred while spawning process\n${codeBlock.construct(
8281
err.toString(),
@@ -85,12 +84,12 @@ export async function exec (message: Message, parent: Client) {
8584
)
8685
})
8786
res.on('close', (code) => {
88-
console.log(clearTimeout(timeout))
87+
clearTimeout(timeout)
8988
msg.add(`\n[status] process exited with code ${code}`)
9089
})
9190
}
9291

93-
function kill (res: any, signal?: NodeJS.Signals) {
92+
function kill (res: child.ChildProcessWithoutNullStreams, signal?: NodeJS.Signals) {
9493
if (process.platform === 'win32') {
9594
return child.exec(
9695
`powershell -File "..\\utils\\KillChildrenProcess.ps1" ${res.pid}`,

src/commands/index.ts

-1
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,3 @@ export * from './shard'
55
export * from './jsi'
66
export * from './curl'
77
export * from './cat'
8-
export * from './docs'

src/commands/js.ts

+21-16
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
1-
import Discord, { Message } from 'discord.js'
1+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
2+
import Discord, { Embed, EmbedBuilder, Collection, Attachment, ButtonBuilder, ButtonStyle, Message } from 'discord.js'
23
import type { Client, Context } from '../'
34
import { ProcessManager, inspect, isInstance, isGenerator } from '../utils'
45

5-
export async function js (message: Context, parent: Client) {
6+
export async function js (message: Context, parent: Client): Promise<void> {
67
// eslint-disable-next-line @typescript-eslint/no-unused-vars
78
const { client } = parent // for eval
89
const isMessage = message instanceof Message
9-
if (isMessage && !message.data.args) { return message.reply('Missing Arguments.') }
10+
if (isMessage && !message.data.args) {
11+
message.reply('Missing Arguments.')
12+
return
13+
}
1014

1115
const res = new Promise((resolve) =>
1216
resolve(
@@ -20,23 +24,24 @@ export async function js (message: Context, parent: Client) {
2024
)
2125
let typeOf
2226
const result = await res
23-
.then(async (output) => {
27+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
28+
.then(async (output: any) => {
2429
typeOf = typeof output
2530

26-
async function prettify (target: any) {
31+
async function prettify (target: unknown): Promise<void> {
2732
if (
28-
target instanceof Discord.Embed ||
29-
target instanceof Discord.EmbedBuilder
30-
) { await message.reply({ embeds: [target] }) } else if (isInstance(target, Discord.Attachment)) {
33+
target instanceof Embed ||
34+
target instanceof EmbedBuilder
35+
) { await message.reply({ embeds: [target] }) } else if (isInstance(target, Attachment)) {
3136
await message.reply({
3237
files:
33-
target instanceof Discord.Collection ? target.toJSON() : [target]
38+
target instanceof Collection ? target.toJSON() : [target]
3439
})
3540
}
3641
}
3742

3843
if (isGenerator(output)) {
39-
for (const value of output as any) {
44+
for (const value of output) {
4045
prettify(value)
4146

4247
if (typeof value === 'function') { await message.reply(value.toString()) } else if (typeof value === 'string') await message.reply(value)
@@ -70,24 +75,24 @@ export async function js (message: Context, parent: Client) {
7075
await msg.init()
7176
await msg.addAction([
7277
{
73-
button: new Discord.ButtonBuilder()
74-
.setStyle(Discord.ButtonStyle.Danger)
78+
button: new ButtonBuilder()
79+
.setStyle(ButtonStyle.Danger)
7580
.setCustomId('dokdo$prev')
7681
.setLabel('Prev'),
7782
action: ({ manager }) => manager.previousPage(),
7883
requirePage: true
7984
},
8085
{
81-
button: new Discord.ButtonBuilder()
82-
.setStyle(Discord.ButtonStyle.Secondary)
86+
button: new ButtonBuilder()
87+
.setStyle(ButtonStyle.Secondary)
8388
.setCustomId('dokdo$stop')
8489
.setLabel('Stop'),
8590
action: ({ manager }) => manager.destroy(),
8691
requirePage: true
8792
},
8893
{
89-
button: new Discord.ButtonBuilder()
90-
.setStyle(Discord.ButtonStyle.Success)
94+
button: new ButtonBuilder()
95+
.setStyle(ButtonStyle.Success)
9196
.setCustomId('dokdo$next')
9297
.setLabel('Next'),
9398
action: ({ manager }) => manager.nextPage(),

src/commands/jsi.ts

+13-10
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
1-
import Discord, { Message } from 'discord.js'
1+
import { Collection, ButtonBuilder, ButtonStyle, Message } from 'discord.js'
22
import type { Client } from '../'
33
import { ProcessManager, count, inspect, table, typeFind } from '../utils'
44

5-
export async function jsi (message: Message, parent: Client) {
5+
export async function jsi (message: Message, parent: Client): Promise<void> {
66
// eslint-disable-next-line @typescript-eslint/no-unused-vars
77
const { client } = parent
8-
if (!message.data.args) return message.reply('Missing Arguments.')
8+
if (!message.data.args) {
9+
message.reply('Missing Arguments.')
10+
return
11+
}
912

1013
// eslint-disable-next-line no-eval
1114
const res = new Promise((resolve) => resolve(eval(message.data.args ?? '')))
@@ -27,7 +30,7 @@ export async function jsi (message: Message, parent: Client) {
2730
Type: `${typeof output}(${typeofTheRes})`,
2831
Name: constructorName || null,
2932
Length: typeof output === 'string' && output.length,
30-
Size: output instanceof Discord.Collection ? output.size : null,
33+
Size: output instanceof Collection ? output.size : null,
3134
'Content Types': arrCount
3235
? arrCount.map((el) => `${el.name} (${el.ratio}%)`).join(', ')
3336
: null
@@ -43,24 +46,24 @@ export async function jsi (message: Message, parent: Client) {
4346
await msg.init()
4447
await msg.addAction([
4548
{
46-
button: new Discord.ButtonBuilder()
47-
.setStyle(Discord.ButtonStyle.Danger)
49+
button: new ButtonBuilder()
50+
.setStyle(ButtonStyle.Danger)
4851
.setCustomId('dokdo$prev')
4952
.setLabel('Prev'),
5053
action: ({ manager }) => manager.previousPage(),
5154
requirePage: true
5255
},
5356
{
54-
button: new Discord.ButtonBuilder()
55-
.setStyle(Discord.ButtonStyle.Secondary)
57+
button: new ButtonBuilder()
58+
.setStyle(ButtonStyle.Secondary)
5659
.setCustomId('dokdo$stop')
5760
.setLabel('Stop'),
5861
action: ({ manager }) => manager.destroy(),
5962
requirePage: true
6063
},
6164
{
62-
button: new Discord.ButtonBuilder()
63-
.setStyle(Discord.ButtonStyle.Success)
65+
button: new ButtonBuilder()
66+
.setStyle(ButtonStyle.Success)
6467
.setCustomId('dokdo$next')
6568
.setLabel('Next'),
6669
action: ({ manager }) => manager.nextPage(),

0 commit comments

Comments
 (0)