Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions docs/start.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,11 @@ mioki 提供了交互式命令行工具,只需一条命令即可完成项目

::: tip 💡 快速跳过交互
如果你已经知道 NapCat 的配置信息,可以通过参数一键创建:

```sh
$ npx mioki@latest --name mioki-bot --port 3001 --token <你的Token> --owners <你的QQ>
```

更多参数请参考 [CLI 参数说明](/mioki/api#cli)。
:::

Expand Down Expand Up @@ -72,14 +74,12 @@ CLI 会依次引导你完成项目名称、NapCat 连接配置、权限设置等
"mioki": {
"napcat": [
{
"name": "bot1",
"protocol": "ws",
"host": "localhost",
"port": 3001,
"token": "token1"
},
{
"name": "bot2",
"protocol": "ws",
"host": "localhost",
"port": 3002,
Expand Down
13 changes: 5 additions & 8 deletions packages/mioki/src/builtins/core/status.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ export const ArchMap: Record<string, string> = {
export interface BotStatus {
uin: number
nickname: string
name?: string
friends: number
groups: number
send: number
Expand Down Expand Up @@ -115,7 +114,6 @@ export async function getMiokiStatus(bots: ExtendedNapCat[]): Promise<MiokiStatu
botStatuses.push({
uin: bot.bot_id,
nickname: bot.nickname,
name: bot.name,
friends: friendList.length,
groups: groupList.length,
send: bot.stat.send.group + bot.stat.send.private,
Expand All @@ -128,7 +126,6 @@ export async function getMiokiStatus(bots: ExtendedNapCat[]): Promise<MiokiStatu
botStatuses.push({
uin: bot.bot_id,
nickname: bot.nickname,
name: bot.name,
friends: 0,
groups: 0,
send: 0,
Expand Down Expand Up @@ -184,17 +181,17 @@ export async function formatMiokiStatus(status: MiokiStatus): Promise<string> {
const diskDesc = `${disk.percent}%-${filesize(disk.used, { round: 1 })}/${filesize(disk.total, { round: 1 })}`

const botLines = bots
.map((bot, index) => {
const namePrefix = bot.name ? `[${bot.name}] ` : ''
return `👤 ${namePrefix}${bot.nickname} (${bot.uin})\n 📋 ${localNum(bot.friends)} 好友 / ${localNum(bot.groups)} 群 / 📮 收 ${localNum(bot.receive)} 发 ${localNum(bot.send)}`
.map((bot) => {
return `👤 ${bot.nickname} (${bot.uin})\n 📋 ${localNum(bot.friends)} 好友 / ${localNum(bot.groups)} 群 / 📮 收 ${localNum(bot.receive)} 发 ${localNum(bot.send)}`
})
.join('\n')

const statsLine = bots.length > 1 ? `\n📮 总计: 收 ${localNum(stats.receive)} 条,发 ${localNum(stats.send)} 条` : ''

return `
〓 🟢 mioki 状态 〓
${botLines}
🧩 启用了 ${localNum(plugins.enabled)} 个插件,共 ${localNum(plugins.total)} 个
📮 总计: 收 ${localNum(stats.receive)} 条,发 ${localNum(stats.send)} 条
🧩 启用了 ${localNum(plugins.enabled)} 个插件,共 ${localNum(plugins.total)} 个${statsLine}
🚀 ${filesize(memory.rss.used, { round: 1 })}/${memory.percent}%
⏳ 已运行 ${prettyMs(stats.uptime, { hideYear: true, secondsDecimalDigits: 0 })}
🤖 mioki/${versions.mioki}-NapCat/${versions.napcat}
Expand Down
1 change: 0 additions & 1 deletion packages/mioki/src/cli.ts
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,6 @@ interface CliOptions {
"error_push": true,
"napcat": [
{
"name": "bot1",
"protocol": "${protocol}",
"port": ${port},
"host": "${host}",
Expand Down
2 changes: 1 addition & 1 deletion packages/mioki/src/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import type { LogLevel } from 'napcat-sdk'
* NapCat 实例配置
*/
export interface NapCatInstanceConfig {
name?: string
name?: string // 已废弃
protocol?: 'ws' | 'wss'
port?: number
host?: string
Expand Down
20 changes: 7 additions & 13 deletions packages/mioki/src/start.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,14 +21,13 @@ export interface ExtendedNapCat extends NapCat {
bot_id: number
app_name: string
app_version: string
name?: string
}

export const connectedBots: Map<number, ExtendedNapCat> = new Map()

async function connectBot(config: cfg.NapCatInstanceConfig, index: number): Promise<ExtendedNapCat | null> {
const { protocol = 'ws', port = 3001, host = 'localhost', token = '', name } = config
const botName = name || `Bot${index + 1}`
const { protocol = 'ws', port = 3001, host = 'localhost', token = '' } = config
const botName = `Bot${index + 1}`
const wsUrl = colors.green(`${protocol}://${host}:${port}${token ? '?access_token=***' : ''}`)

logger.info(`>>> 正在连接 ${colors.cyan(botName)}: ${wsUrl}`)
Expand All @@ -50,12 +49,7 @@ async function connectBot(config: cfg.NapCatInstanceConfig, index: number): Prom
)

if (connectedBots.has(user_id)) {
const existingBot = connectedBots.get(user_id)!
if (existingBot.name) {
logger.warn(
`${colors.yellow(botName)} (${user_id}) 与 ${colors.yellow(existingBot.name)} (${user_id}) QQ 号重复,将跳过`,
)
}
logger.warn(`${colors.yellow(botName)} (${user_id}) 与已存在的 bot (${user_id}) QQ 号重复,将跳过`)
napcat.close()
resolve(null)
return
Expand All @@ -66,7 +60,6 @@ async function connectBot(config: cfg.NapCatInstanceConfig, index: number): Prom
extendedNapCat.bot_id = user_id
extendedNapCat.app_name = app_name
extendedNapCat.app_version = app_version
extendedNapCat.name = botName

resolve(extendedNapCat)
})
Expand Down Expand Up @@ -229,12 +222,13 @@ export async function start(options: StartOptions = {}): Promise<void> {
const seenEndpoints = new Set<string>()
const duplicateConfigs: string[] = []

for (const config of napcatConfigs) {
for (let i = 0; i < napcatConfigs.length; i++) {
const config = napcatConfigs[i]
const { protocol = 'ws', host = 'localhost', port = 3001 } = config
const endpoint = `${protocol}://${host}:${port}`

if (seenEndpoints.has(endpoint)) {
duplicateConfigs.push(`${config.name || '未命名'} (${endpoint})`)
duplicateConfigs.push(`Bot${i + 1} (${endpoint})`)
} else {
seenEndpoints.add(endpoint)
}
Expand Down Expand Up @@ -267,7 +261,7 @@ export async function start(options: StartOptions = {}): Promise<void> {
logger.warn(`${colors.yellow(napcatConfigs.length - bots.length)} 个 NapCat 实例连接失败`)
}

const botNames = bots.map((b) => `${b.name}(${b.bot_id})`).join(', ')
const botNames = bots.map((b) => `${b.bot_id}`).join(', ')
logger.info(colors.green(`成功连接 ${bots.length} 个实例: ${botNames}`))
logger.info(colors.dim('='.repeat(40)))

Expand Down