(msg: Api.Message)
| 398 | parseMode: "html", |
| 399 | }); |
| 400 | return; |
| 401 | } |
| 402 | |
| 403 | await msg.edit({ |
| 404 | text: `🔍 正在执行 DNS 查询...`, |
| 405 | parseMode: "html", |
| 406 | }); |
| 407 | |
| 408 | const result = await executeDig(args); |
| 409 | |
| 410 | let resultText; |
| 411 | if (result.isShortOutput) { |
| 412 | resultText = await formatShortDnsResults(result.output, args); |
| 413 | } else { |
| 414 | resultText = await formatDetailedDnsResults(result.output, args); |
| 415 | } |
| 416 | |
| 417 | await msg.edit({ |
| 418 | text: resultText, |
| 419 | parseMode: "html", |
| 420 | linkPreview: false, |
| 421 | }); |
| 422 | } catch (error: any) { |
| 423 | console.error("DNS query error:", error); |
| 424 | |
| 425 | let errorMessage = `❌ <b>DNS 查询失败</b>`; |
| 426 | |
| 427 | if (error.message) { |
| 428 | errorMessage += `\n\n<b>错误详情:</b>\n<code>${htmlEscape( |
| 429 | error.message |
| 430 | )}</code>`; |
| 431 | } |
| 432 | |
| 433 | if (error.message?.includes("未安装 dig 工具")) { |
| 434 | errorMessage += `\n\n<b>解决方案:</b> |
| 435 | • Ubuntu/Debian: <code>sudo apt-get install dnsutils</code> |
| 436 | • RHEL/CentOS: <code>sudo yum install bind-utils</code> |
| 437 | • Fedora: <code>sudo dnf install bind-utils</code>`; |
| 438 | } |
| 439 | |
| 440 | await msg.edit({ |
| 441 | text: errorMessage, |
| 442 | parseMode: "html", |
| 443 | linkPreview: false, |
| 444 | }); |
| 445 | } |
| 446 | }; |
| 447 | |
| 448 | class DigPlugin extends Plugin { |
| 449 | |
| 450 | description: string = `调用系统 dig 命令进行查询并显示 IP 归属地及 ASN`; |
| 451 | cmdHandlers: Record<string, (msg: Api.Message) => Promise<void>> = { |
| 452 | dig, |
| 453 | }; |
| 454 | } |
| 455 | |
| 456 | export default new DigPlugin(); |
nothing calls this directly
no test coverage detected