ctx.command使用报错

代码:

import { Context, Schema } from 'koishi'

export const name = 'catbot-core'

export interface Config {
  BotName: string,
  MessageType
}

export const Config: Schema<Config> = Schema.object({
  BotName: Schema.string().description('机器人名称').default('CatBot'),
  MessageType: Schema.union(['Text', 'Image(暂时无法使用)']).description('消息类型')
})

export function apply(ctx: Context, cfg: Config) {
  ctx.command("catbot").action(async ({ session }) => {
    if (cfg.MessageType == 'Text')
      var help = "CatBot 帮助\n" +
        "Catbot:显示帮助信息"
      return help;
    });
}

环境:

System:
    OS: Windows 11 10.0.26080
    CPU: (16) x64 11th Gen Intel(R) Core(TM) i7-11700K @ 3.60GHz

Binaries:
    Node: 21.5.0
    Yarn: 4.1.0

Koishi:
    Core: 4.17.2
    Console: 5.28.1

日志:

2024-04-10 01:14:38 [W] app TypeError: Invalid URL: aaa/api/onmessage/catbot
                            at Proxy.resolveURL (F:\待整理\Teams\Bot\Koishi\Dev\node_modules\undios\lib\index.cjs:135:13)
                            at [cordis.invoke] (F:\待整理\Teams\Bot\Koishi\Dev\node_modules\undios\lib\index.cjs:159:22)
                            at applyTraceable (F:\待整理\Teams\Bot\Koishi\Dev\node_modules\@cordisjs\core\src\utils.ts:65:32)
                            at Object.apply (F:\待整理\Teams\Bot\Koishi\Dev\node_modules\@cordisjs\core\src\utils.ts:57:14)
                            at Proxy.<anonymous> (F:\待整理\Teams\Bot\Koishi\Dev\node_modules\undios\lib\index.cjs:72:36)
                            at Proxy.<anonymous> (F:\待整理\Teams\Bot\Koishi\Dev\external\lightningrobot\src\index.ts:21:39)
                            at Proxy.emit (F:\待整理\Teams\Bot\Koishi\Dev\node_modules\@cordisjs\core\src\events.ts:100:16)
                            at _SandboxBot.dispatch (F:\待整理\Teams\Bot\Koishi\Dev\node_modules\@satorijs\core\src\bot.ts:159:20)
                            at Client.ctx.console.addListener.authority (F:\待整理\Teams\Bot\Koishi\Dev\node_modules\@koishijs\plugin-sandbox\src\index.ts:109:9)
                            at WebSocket.receive (F:\待整理\Teams\Bot\Koishi\Dev\node_modules\@koishijs\console\src\client.ts:35:45)
1 个赞

问题已解决,是闪电机器人对接插件的错误。

1 个赞

我没看明白…你这个机器人的名称是写死呢,还是写活呢?你这个操作相当于让用户白写配置项;

看起来这个代码非常 “简洁“,让我考虑你可能是准备给自己的机器人写菜单功能。

如果是熟悉 Koishi 的一个入门 demo,我是这样建议的;

2 个赞

这是一个初学者 Demo,主要功能是统计对话次数

// config 获取用户手动填入的配置项
export function apply(ctx: Context, config: Config) {
  // write your plugin here

  // 接收到消息事件
  ctx.command('getTime').action(async (Argv) => {
    // console.log(Session);

    // Argv.session.content     发送消息者发送的内容
    // Argv.session.userId      发送消息者的信息
    // Argv.session.messageId   发送的消息的信息
    
    // ...

    return `当前已对话次数:${getCallTimeData(Argv.session.userId)}`
  })
}

// 用于统计群员对话次数
const callList = {};


// 统计次数
function getCallTimeData(userId) {
  userId = String(userId)
  // 若不存在该对象 进行初始化
  if (!callList[userId]) callList[userId] = 0;
  // 自增并返回
  return ++callList[userId];
}
2 个赞

我发出来的代码是一个半成品,甚至根本都不是半成品

2 个赞

这个时候为什么没有想到gpt大人呢

1 个赞