Skip to content

Commit cf91ee6

Browse files
committed
feat: removed redis cmd, and update sql & zsh.
1 parent 3320826 commit cf91ee6

4 files changed

Lines changed: 42 additions & 56 deletions

File tree

src/commands/help.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ function buildRoleHelpPage(
3838
\`Help\`
3939
Use: *help [command]* for more details
4040
41-
| ${commandsForRole.join("\n | • ")}
41+
${commandsForRole.join("\n • ")}
4242
4343
\`Page ${page} of ${totalPages}\`
4444
`;

src/commands/redis.ts

Lines changed: 0 additions & 39 deletions
This file was deleted.

src/commands/sql.ts

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Message } from "../types/message"
1+
import { Message } from "../types/message";
22
import axios from "../components/axios";
33
import log from "../components/utils/log";
44
import prisma from "../components/prisma";
@@ -15,10 +15,22 @@ export const info = {
1515
export default async function (msg: Message): Promise<void> {
1616
const query = msg.body.replace(/^sql\b\s*/i, "").trim();
1717
if (query.length === 0) {
18-
await msg.reply("Please provide a sql.");
18+
await msg.reply("Please provide a sql query.");
1919
return;
2020
}
2121

22-
const result = await prisma.$queryRawUnsafe(query);
23-
await msg.reply(JSON.stringify(result, null, 2));
22+
try {
23+
const result = await prisma.$queryRawUnsafe(query);
24+
25+
const output = JSON.stringify(result, null, 2);
26+
if (output.length > 4000) {
27+
await msg.reply(output.slice(0, 4000) + "\n\n[Output truncated]");
28+
} else {
29+
await msg.reply(output);
30+
}
31+
} catch (err: any) {
32+
const message = err?.message || "Unknown SQL error.";
33+
await msg.reply(message);
34+
log.error("sql", `Error running query: ${query}`, err);
35+
}
2436
}

src/commands/zsh.ts

Lines changed: 25 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Message } from "../types/message"
1+
import { Message } from "../types/message";
22
import log from "../components/utils/log";
33
import { exec } from "child_process";
44
import util from "util";
@@ -22,16 +22,29 @@ export default async function (msg: Message): Promise<void> {
2222

2323
const execPromise = util.promisify(exec);
2424

25-
const { stdout, stderr } = await execPromise(query, {
26-
timeout: 30000,
27-
maxBuffer: 1024 * 1024,
28-
shell: process.env.SHELL || "/bin/zsh",
29-
});
30-
let response = `${stdout} \n\n ${stderr}`;
31-
if (response.length > 4000) {
32-
response = response.slice(0, 4000) + "\n\n[Output truncated]";
33-
}
25+
try {
26+
const { stdout, stderr } = await execPromise(query, {
27+
timeout: 30000,
28+
maxBuffer: 1024 * 1024,
29+
shell: process.env.SHELL || "/bin/zsh",
30+
});
31+
32+
let response = `${stdout}\n\n${stderr}`;
33+
if (response.length > 4000)
34+
response = response.slice(0, 4000) + "\n\n[Output truncated]";
35+
36+
await Promise.all([msg.reply(response), logService(msg, query, response)]);
37+
log.warn("zsh", `Executed command: ${query}`);
38+
} catch (err: any) {
39+
const stderr = err.stderr || "";
40+
const stdout = err.stdout || "";
41+
let response = stderr || err.message;
3442

35-
await Promise.all([msg.reply(response), logService(msg, query, response)]);
36-
log.warn("zsh", `Executed command: ${query}`);
43+
if (stdout) response = `${stdout}\n\n${response}`;
44+
if (response.length > 4000)
45+
response = response.slice(0, 4000) + "\n\n[Output truncated]";
46+
47+
await Promise.all([msg.reply(response), logService(msg, query, response)]);
48+
log.error("zsh", `Error executing command: ${query}`, err);
49+
}
3750
}

0 commit comments

Comments
 (0)