Git Product home page Git Product logo

gensokyo's Introduction

gensokyo

gensokyo

✨ 基于 OneBot QQ官方机器人Api Golang 原生实现 ✨

license release gensokyo action GoReportCard

文档 · 下载 · 开始使用 · 参与贡献

项目主页:gensokyo.bot

引用

介绍

gensokyo兼容 OneBot-v11 ,并在其基础上做了一些扩展,详情请看 OneBot 的文档。

Gensokyo文档(施工中):起步

可将官方的websocket和api转换至onebotv11标准,

支持连接koishi,nonebot2,trss,zerobot,MiraiCQ,hoshino..

支持连接tata,派蒙,炸毛,早苗,yobot...

支持连接Mirai(Overflow)...

可以与支持onebotV11适配器的项目相连接使用.

实现插件开发和用户开发者无需重新开发,复用过往生态的插件和使用体验.

持续完善中.....交流群:196173384

欢迎测试,询问任何有关使用的问题,有问必答,有难必帮~

Gensokyo临时文档展开左侧折叠栏,临时文档包含markdown定义、额外api文档等内容

后续会将文档独立,因为语雀文档公开查看无需登录需要vip,故暂时放在我的机器人文档中。临时文档也包含了Gensokyo的完整编译教程。

特别鸣谢

接口

  • HTTP API
  • 反向 HTTP POST
  • 正向 WebSocket
  • 反向 WebSocket

拓展支持

拓展 API 可前往 文档 查看

  • 连接多个ws地址
  • 将频道虚拟成群事件
  • 将私信虚拟成频道或群事件
  • webui,可以在webui修改配置,查看频道列表,发送信息
  • 方便过审的指令黑白名单
  • 自动url转换(自备域名)
  • 可自定义图片压缩\图床服务
  • 可编辑的数据库
  • 支持array和信息段
  • 文字,图片,语音,视频,MD,支持多种类型发送
  • 支持全域,频道,频道私聊,群,群私聊
  • 主动信息失败自动转被动,提高信息传达可靠性
  • 提前于官方支持群列表 群成员 api
  • 完善的重连,健壮的连接能力.
  • 支持[CQ:markdown,data=] Markdown发送
  • markdown文档
  • 持续更新~

实现

已实现 CQ 码

符合 OneBot 标准的 CQ 码

CQ 码 功能
[CQ:face] [QQ 表情]
[CQ:record] [语音]
[CQ:video] [短视频]
[CQ:at] [@某人]
[CQ:share] [链接分享]
[CQ:music] [音乐分享] [音乐自定义分享]
[CQ:reply] [回复]
[CQ:forward] [合并转发]
[CQ:node] [合并转发节点]
[CQ:xml] [XML 消息]
[CQ:json] [JSON 消息]

todo,正在施工中

拓展 CQ 码及与 OneBot 标准有略微差异的 CQ 码

拓展 CQ 码 功能
[CQ:image] [图片]
[CQ:poke] [戳一戳]
[CQ:node] [合并转发消息节点]
[CQ:markdown] [markdown卡片收发]
[CQ:tts] [文本转语音]
已实现 API

符合 OneBot 标准的 API

API 功能
/send_private_msg√ [发送私聊消息]
/send_group_msg√ [发送群消息]
/send_guild_channel_msg√ [发送频道消息]
/send_msg√ [发送消息]
/delete_msg [撤回信息]
/set_group_kick [群组踢人]
/set_group_ban√ [群组单人禁言]
/set_group_whole_ban√ [群组全员禁言]
/set_group_admin [群组设置管理员]
/set_group_card [设置群名片(群备注)]
/set_group_name [设置群名]
/set_group_leave [退出群组]
/set_group_special_title [设置群组专属头衔]
/set_friend_add_request [处理加好友请求]
/set_group_add_request [处理加群请求/邀请]
/get_login_info√ [获取登录号信息]
/get_stranger_info [获取陌生人信息]
/get_friend_list√ [获取好友列表]
/get_group_info√ [获取群/频道信息]
/get_group_list√ [获取群列表]
/get_group_member_info√ [获取群成员信息]
/get_group_member_list√ [获取群成员列表]
/get_group_honor_info [获取群荣誉信息]
/can_send_image√ [检查是否可以发送图片]
/can_send_record [检查是否可以发送语音]
/get_version_info√ [获取版本信息]
/set_restart√ [重启 gensokyo]
/.handle_quick_operation [对事件执行快速操作]

拓展 API 及与 OneBot 标准有略微差异的 API

拓展 API 功能
/set_group_portrait [设置群头像]
/get_image [获取图片信息]
/get_msg [获取消息]
/get_forward_msg [获取合并转发内容]
/send_group_forward_msg√ [发送合并转发(群)]
/.get_word_slices [获取中文分词]
/.ocr_image [图片 OCR]
/get_group_system_msg [获取群系统消息]
/get_group_file_system_info [获取群文件系统信息]
/get_group_root_files [获取群根目录文件列表]
/get_group_files_by_folder [获取群子目录文件列表]
/get_group_file_url [获取群文件资源链接]
/get_status√ [获取状态]
已实现 Event

符合 OneBot 标准的 Event(部分 Event 比 OneBot 标准多上报几个字段,不影响使用)

事件类型 Event
消息事件 [私聊信息]√
消息事件 [群消息]√
通知事件 [群文件上传]
通知事件 [群管理员变动]
通知事件 [群成员减少]
通知事件 [群成员增加]
通知事件 [群禁言]
通知事件 [好友添加]
通知事件 [群消息撤回]
通知事件 [好友消息撤回]
通知事件 [群内戳一戳]
通知事件 [群红包运气王]
通知事件 [群成员荣誉变更]
请求事件 [加好友请求]
请求事件 [加群请求/邀请]

拓展 Event

事件类型 拓展 Event
通知事件 [好友戳一戳]
通知事件 [群内戳一戳]
通知事件 [群成员名片更新]
通知事件 [接收到离线文件]

关于 ISSUE

以下 ISSUE 会被直接关闭

  • 提交 BUG 不使用 Template
  • 询问已知问题
  • 提问找不到重点
  • 重复提问

请注意, 开发者并没有义务回复您的问题. 您应该具备基本的提问技巧。
有关如何提问,请阅读《提问的智慧》

性能

10mb内存占用 端口错开可多开 稳定运行无报错

gensokyo's People

Contributors

2022717137 avatar alexskim avatar gordenqiu avatar hoshinonyaruko avatar hypoths avatar liyk123 avatar yuelengqingchen avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

gensokyo's Issues

get_group_info群信息获取超时

gensokyo端报错:

2023/11/25 18:16:43 Received from onebotv11 server: Action: get_group_info, Params: {"botqq":"","channel_id":"","guild_id":"","group_id":"1","message":null,"user_id":""}, Echo: 3
2023/11/25 18:16:43 handleGetGroupInfo:Error reading config: key 'guild_id' in section '9862xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' does not exist

nonebot2端报错:
【错误报告】

创建用户时发生错误
错误类型: <class 'nonebot.adapters.onebot.v11.exception.NetworkError'>
错误值: NetWorkError(message='WebSocket call api get_group_info timeout')
Traceback (most recent call last):
File "/home/bot/nbbot/.venv/lib/python3.9/site-packages/nonebot_plugin_bilibilibot/bili_src/basicFunc.py", line 93, in create_user
group_info = await bot.get_group_info(group_id=user_id)
File "/home/bot/nbbot/.venv/lib/python3.9/site-packages/nonebot/internal/adapter/bot.py", line 123, in call_api
raise exception
File "/home/bot/nbbot/.venv/lib/python3.9/site-packages/nonebot/internal/adapter/bot.py", line 98, in call_api
result = await self.adapter._call_api(self, api, **data)
File "/home/bot/nbbot/.venv/lib/python3.9/site-packages/nonebot/adapters/onebot/v11/adapter.py", line 146, in _call_api
raise NetworkError(f"WebSocket call api {api} timeout") from None
nonebot.adapters.onebot.v11.exception.NetworkError: NetWorkError(message='WebSocket call api get_group_info timeout')

正向 ws 调用 `get_login_info` api 超时

正向 Websocket 成功连接 Gensokyo 之后,通过 / 接口试图调用 get_login_info API,结果超时(大概等了 30 秒左右)

日志:

2023/11/16 23:31:31 WebSocket client connected. IP: 172.16.232.98


2023/11/16 23:31:31 [Recovery] 2023/11/16 - 23:31:31 panic recovered:
GET /ws HTTP/1.1
Host: 172.16.232.98:15630
Authorization: *
Connection: Upgrade
Sec-Websocket-Extensions: permessage-deflate; client_max_window_bits
Sec-Websocket-Key: /5Mo9nklEesw/nOfw9W55Q==
Sec-Websocket-Version: 13
Upgrade: websocket
User-Agent: Python/3.10 websockets/11.0.3


runtime error: invalid memory address or nil pointer dereference
/opt/hostedtoolcache/go/1.21.1/x64/src/runtime/panic.go:261 (0x7bbf46)
/opt/hostedtoolcache/go/1.21.1/x64/src/runtime/signal_windows.go:364 (0x7bbf16)
/home/runner/work/Gensokyo/Gensokyo/server/wsserver.go:92 (0xc05330)
/home/runner/work/Gensokyo/Gensokyo/server/wsserver.go:37 (0xc2efac)
/home/runner/go/pkg/mod/github.com/gin-gonic/[email protected]/context.go:174 (0xb6fe19)
/home/runner/go/pkg/mod/github.com/gin-gonic/[email protected]/recovery.go:102 (0xb6fe07)
/home/runner/go/pkg/mod/github.com/gin-gonic/[email protected]/context.go:174 (0xb6e0ba)
/home/runner/go/pkg/mod/github.com/gin-gonic/[email protected]/gin.go:620 (0xb6dd4d)
/home/runner/go/pkg/mod/github.com/gin-gonic/[email protected]/gin.go:576 (0xb6d9fc)
/opt/hostedtoolcache/go/1.21.1/x64/src/net/http/server.go:2938 (0x9fe80d)
/opt/hostedtoolcache/go/1.21.1/x64/src/net/http/server.go:2009 (0x9faeb3)
/opt/hostedtoolcache/go/1.21.1/x64/src/runtime/asm_amd64.s:1650 (0x7d8360)

[GIN-debug] [WARNING] Headers were already written. Wanted to override status code 200 with 500

bot如果发送多张图片,gsk实际只会发送第一张

版本:https://github.com/Hoshinonyaruko/Gensokyo/releases/tag/92%2Fmerge
对接bot:HoshinoBot
测试环境:QQ群
日志:

2023/11/14 13:28:39 Received from onebotv11 server: Action: send_msg, Params: {"botqq":"","channel_id":"","guild_id":"","group_id":"1","message":[{"data":{"text":"\n表格仅供参考\n※不定期搬运自B站专栏\n※制作by花舞组\nR22-5 rank表:\n"},"type":"text"},{"data":{"file":"file:////HoshinoBot/hoshino/modules/pcr-rank/cache/pic/cn_22-5_1.png"},"type":"image"},{"data":{"file":"file:////HoshinoBot/hoshino/modules/pcr-rank/cache/pic/cn_22-5_2.png"},"type":"image"},{"data":{"file":"file:////HoshinoBot/hoshino/modules/pcr-rank/cache/pic/cn_22-5_3.png"},"type":"image"}],"user_id":"2"}, Echo: map[seq:2]
2023/11/14 13:28:39 appID: *****, GroupID: 1
2023/11/14 13:28:39 msgType: group
2023/11/14 13:28:39 params.message is a slice (segment_type_koishi)
2023/11/14 13:28:39 群组发信息messageText: 
表格仅供参考
※不定期搬运自B站专栏
※制作by花舞组
R22-5 rank表:
2023/11/14 13:28:39 通过GetMessageIDByUserid函数获取的message_id: ROBOT1.0_k0-fIwvJj0f.0Uq030BEuRsmtCXw3DoGB2xwomPnbmDeFXBXdjoeSzYqANL3Im15R5ZAa0RsxaDexZgPXfcnqA!!
2023/11/14 13:28:40 INFO: [OPENAPI]POST https://api.sgroup.qq.com/v2/groups/6D55448EE46136AFF80DACAA2A38C2C3/messages, traceID:2876bc817aaade46894c7db7edfd422a, status:200 OK, elapsed:346.580869ms req: {"content":"\n表格仅供参考\n※不定期搬运自B站专栏\n※制作by花舞组\nR22-5 rank表:\n","msg_id":"ROBOT1.0_k0-fIwvJj0f.0Uq030BEuRsmtCXw3DoGB2xwomPnbmDeFXBXdjoeSzYqANL3Im15R5ZAa0RsxaDexZgPXfcnqA!!","timestamp":1699968519}, resp: {"group_code":"6D55448EE46136AFF80DACAA2A38C2C3","msg":"success"}

上述日志一共有3长图片,但是gsk转换后只发第1张

添加框架层bind系统

添加bind机制,
解决openid问题痛点,
希望bind机制能通过lotus机制多个gensokyo共享
希望有多种bind机制,希望bind机制不依赖第三方实现,保持100%使用官方api

向bot发送图片,前面多了个"http://"

版本:Release 85/merge
对接bot:HoshinoBot
测试环境:QQ群
日志:

b3ifop7ft9skolij8yha","d":{"attachments":[{"content_type":"image/png","filename":"D6EB6748D84DE17936983AD3AFBA50D4.png","height":570,"size":733295,"url":"https://gchat.qpic.cn/gchatpic_new/1134319786/1134319786-2187274776-D6EB6748D84DE17936983AD3AFBA50D4/0?vuin=2669735640\u0026term=0\u0026is_origin=2\u0026is_ntv2=1","width":954}],"author":{"id":"E80EB3BBFFE27EA79F3D02FFFF24B832","member_openid":"E80EB3BBFFE27EA79F3D02FFFF24B832"},"content":" 怎么拆","group_id":"6D55448EE46136AFF80DACAA2A38C2C3","group_openid":"6D55448EE46136AFF80DACAA2A38C2C3","id":"ROBOT1.0_k0-fIwvJj0f.0Uq030BEuTMub-NgadgZjyqN9KG.bzuGH1YL256cp1i0UsJHaSZe","timestamp":"2023-11-14T16:58:47+08:00"}}
2023/11/14 08:58:47 RawMessage: 怎么拆[CQ:image,file=D6EB6748D84DE17936983AD3AFBA50D4.image,subType=0,url=http://https://gchat.qpic.cn/gchatpic_new/1134319786/1134319786-2187274776-D6EB6748D84DE17936983AD3AFBA50D4/0?vuin=2669735640&term=0&is_origin=2&is_ntv2=1]
2023/11/14 08:58:47 MessageID: 35
2023/11/14 08:58:47 GroupID: 1
2023/11/14 08:58:47 MessageType: group
2023/11/14 08:58:47 PostType: message
2023/11/14 08:58:47 SelfID: *******
2023/11/14 08:58:47 Sender: {  2 owner}
2023/11/14 08:58:47 SubType: normal
2023/11/14 08:58:47 Time: 1699952327
2023/11/14 08:58:47 Avatar: 
2023/11/14 08:58:47 Echo: 
2023/11/14 08:58:47 Message: 怎么拆[CQ:image,file=D6EB6748D84DE17936983AD3AFBA50D4.image,subType=0,url=http://https://gchat.qpic.cn/gchatpic_new/1134319786/1134319786-2187274776-D6EB6748D84DE17936983AD3AFBA50D4/0?vuin=2669735640&term=0&is_origin=2&is_ntv2=1]

传给bot的图片变成了 http://https://gchat.qpic.cn/.... 导致错误

在ubuntu20.04中支持发语音了,但似乎只能发一次

我这样操作的
ssh root@myip

screen -S gensokyo
mkdir qqbot/gensokyo
cd gensokyo
wget https://gh.h233.eu.org/https://github.com/Hoshinonyaruko/Gensokyo/releases/download/136%2Fmerge/gensokyo-linux-amd64
apt install ffmpeg
./gensokyo-linux-amd64

sftp root@myip

cd qqbot
put untitled.mp3

以下是我ws测试端里的日志

收到消息 08:19:23

{
  "font":0,
  "group_id":331506956,
  "message":[
    {
      "data":{
        "text":" w"
      },
      "type":"text"
    }
  ],
  "message_id":586810020,
  "message_seq":0,
  "message_type":"group",
  "post_type":"message",
  "raw_message":"w",
  "self_id":102072002,
  "sender":{
    "nickname":"",
    "role":"member",
    "tiny_id":"",
    "user_id":919041327
  },
  "sub_type":"normal",
  "time":1700353163,
  "user_id":919041327
}

发送消息 08:19:26

{
  "action":"send_group_msg",
  "params":{
    "group_id":331506956,
    "message":"
    [
      CQ:record,
      file=file:///root/qqbot/untitled.mp3
    ]
    "
  },
  "echo":"123"
}

收到消息 08:19:27

{
  "data":{
    "message_id":0
  },
  "echo":"123",
  "message":"",
  "retcode":0,
  "status":"ok"
}

发送消息 08:19:45

{
  "action":"send_group_msg",
  "params":{
    "group_id":331506956,
    "message":"
    [
      CQ:record,
      file=file:///root/qqbot/untitled.mp3
    ]
    "
  },
  "echo":"124"
}

收到消息 08:19:45

{
  "data":{
    "message_id":0
  },
  "echo":"124",
  "message":"code:401,
   text:{
    \"message\":\"check app privilege not pass\",
    \"code\":11253
  },
   traceID:983858add6b1228679548592c746ea15",
  "retcode":0,
  "status":"ok"
}

收到消息 08:19:46

{
  "data":{
    "message_id":0
  },
  "echo":"124",
  "message":"code:401,
   text:{
    \"message\":\"get guild id failed\",
    \"code\":11263
  },
   traceID:06b0d226edf9ff0a493421e82f966338",
  "retcode":0,
  "status":"ok"
}

收到消息 08:19:46

{
  "data":{
    "message_id":0
  },
  "echo":"124",
  "message":"code:500,
   text:{
    \"message\":\"不支持的文件格式\",
    \"code\":850019
  },
   traceID:302db12f4183bb5c8fa6ca102f231427",
  "retcode":0,
  "status":"ok"
}

以下是我的配置

version: 1
settings:
  #反向ws设置
  ws_address: [""] # WebSocket服务的地址 支持多个["","",""]
  ws_token: [""]              #连接wss地址时服务器所需的token,按顺序一一对应,如果是ws地址,没有密钥,请留空.
  app_id: *                            # 你的应用ID
  token: "*"                          # 你的应用令牌
  client_secret: "*"              # 你的客户端密钥

  text_intent:                                       # 请根据公域 私域来选择intent,错误的intent将连接失败
    - "ATMessageEventHandler"                        # 频道at信息
    - "DirectMessageHandler"                         # 私域频道私信(dms)
    # - "ReadyHandler"                               # 连接成功
    # - "ErrorNotifyHandler"                         # 连接关闭
    # - "GuildEventHandler"                          # 频道事件
    - "MemberEventHandler"                         # 频道成员新增
    # - "ChannelEventHandler"                        # 频道事件
    # - "CreateMessageHandler"                       # 频道不at信息 私域机器人需要开启 公域机器人开启会连接失败
    # - "InteractionHandler"                         # 添加频道互动回应
    - "GroupATMessageEventHandler"                 # 群at信息 仅频道机器人时候需要注释
    - "C2CMessageEventHandler"                     # 群私聊 仅频道机器人时候需要注释
    # - "ThreadEventHandler"                         # 发帖事件 (当前版本已禁用)


  global_channel_to_group: true                      # 是否将频道转换成群 默认true
  global_private_to_channel: false                   # 是否将私聊转换成频道 如果是群场景 会将私聊转为群(方便提审\测试)
  array: true                                       # 连接trss云崽请开启array
  hash_id : true                                    # 使用hash来进行idmaps转换,可以让user_id不是123开始的递增值

  server_dir: "*"                    # 提供图片上传服务的服务器(图床)需要带端口号. 如果需要发base64图,需为公网ip,且开放对应端口
  port: "33663"                                      # idmaps和图床对外开放的端口号
  backup_port : "5200"                               # 当totus为ture时,port值不再是本地webui的端口,使用lotus_Port来访问webui

  lotus: false                                       # lotus特性默认为false,当为true时,将会连接到另一个lotus为false的gensokyo。
                                                     # 使用它提供的图床和idmaps服务(场景:同一个机器人在不同服务器运行,或内网需要发送base64图)。
                                                     # 如果需要发送base64图片,需要设置正确的公网server_dir和开放对应的port

  #增强配置项                                           

  image_sizelimit : 0               #代表kb 腾讯api要求图片1500ms完成传输 如果图片发不出 请提升上行或设置此值 默认为0 不压缩
  image_limit : 60                 #每分钟上传的最大图片数量,可自行增加
  master_id : ["1","2"]             #群场景尚未开放获取管理员和列表能力,手动从日志中获取需要设置为管理,的user_id并填入(适用插件有权限判断场景)

  #正向ws设置

  enable_ws_server: true            #是否启用正向ws服务器 监听server_dir:port/ws
  ws_server_token : "12345"         #正向ws的token 不启动正向ws可忽略

  #SSL配置类 机器人发送URL设置

  identify_file: true               #自动生成域名校验文件,在q.qq.com配置信息URL,在server_dir填入自己已备案域名,正确解析到机器人所在服务器ip地址,机器人即可发送链接
  crt: ""                           #证书路径 从你的域名服务商或云服务商申请签发SSL证书(qq要求SSL) 
  key: ""                           #密钥路径 Apache(crt文件、key文件)示例: "C:\\123.key" \需要双写成\\

  #日志类

  developer_log : true           #开启开发者日志 默认关闭
  log_level : 0                     # 0=debug 1=info 2=warning 3=error 默认1
  save_logs : true                 #自动储存日志

  #webui设置

  server_user_name : "*"    #默认网页面板用户名
  server_user_password : "*"    #默认网页面板密码

  #指令过滤类

  remove_prefix : false             #是否忽略公域机器人指令前第一个/
  remove_at : false                 #是否忽略公域机器人指令前第一个[CQ:aq,qq=机器人] 场景(公域机器人,但插件未适配at开头)
  remove_bot_at_group : true        #因为群聊机器人不支持发at,开启本开关会自动隐藏群机器人发出的at(不影响频道场景)

  white_prefix_mode : false         #公域 过审用 指令白名单模式开关 如果审核严格 请开启并设置白名单指令 以白名单开头的指令会被通过,反之被拦截
  white_prefixs : [""]              #可设置多个 比如设置 机器人 测试 则只有信息以机器人 测试开头会相应 remove_prefix remove_at 需为true时生效

  black_prefix_mode : false         #公私域 过审用 指令黑名单模式开关 过滤被审核打回的指令不响应 无需改机器人后端
  black_prefixs : [""]              #可设置多个 比如设置 查询 则查询开头的信息均被拦截 防止审核失败

  visual_prefixs : [""]             #虚拟前缀 与white_prefixs配合使用 处理流程自动忽略该前缀 remove_prefix remove_at 需为true时生效

  #开发增强类

  develop_access_token_dir : ""     #开发者测试环境access_token自定义获取地址 默认留空 请留空忽略
  develop_bot_id : "1234"           #开发者环境需自行获取botid 填入 用户请不要设置这两行...开发者调试用
  sandbox_mode : false              #默认false 如果你只希望沙箱频道使用,请改为true
  dev_message_id : false            #在沙盒和测试环境使用无限制msg_id 仅沙盒有效,正式环境请关闭,内测结束后,tx侧未来会移除

  title : "Gensokyo © 2023 - Hoshinonyaruko"              #程序的标题 如果多个机器人 可根据标题区分
 
  twoway_echo : false               #是否采用双向echo,根据机器人选择,獭獭\早苗 true 红色问答\椛椛 或者其他 请使用 false
  lazy_message_id : false           #false=message_id 条条准确对应 true=message_id 按时间范围随机对应(适合主动推送bot)前提,有足够多的活跃信息刷新id池
  
  visible_ip : false                #转换url时,如果server_dir是ip true将以ip形式发出url 默认隐藏url 将server_dir配置为自己域名可以转换url
  forward_msg_limit : 3             #发送折叠转发信息时的最大限制条数 若要发转发信息 请设置lazy_message_id为true
  
  #bind指令类 

  bind_prefix : "/bind"             #需设置   #增强配置项  master_id 可触发
  me_prefix : "/me"                 #需设置   #增强配置项  master_id 可触发

  #穿透\cos\oss类配置(可选!)
  frp_port : "0"                    #不使用请保持为0,frp的端口,frp有内外端口,请在frp软件设置gensokyo的port,并将frp显示的对外端口填入这里

  record_bitRate : 24000            #语音文件的比特率 默认24000 代表 24 kbps 最高无限 请根据带宽 您发送的实际码率调整
  record_sampleRate : 24000         #语音文件的采样率 最高48000 默认24000 单位Khz

image

云崽发出信息和gsk发出不一样

发送群消息:[{"type":"text","data":{"text":"踩雷,游戏结束"}},{"type":"image","data":{"file":"base64://..."}},{"type":"button","data":[[{"text":"开始游戏","clicked_text":"/扫雷","callback":"/扫雷","send":true}],[{"text":"简单","clicked_text":"/扫雷难度简单","callback":"/扫雷难度简单","send":true},{"text":"中等","clicked_text":"/扫雷难度中等","callback":"/扫雷 难度中等","send":true},{"text":"困难","clicked_text":"/扫雷难度困难","callback":"/扫雷难度困难","send":true}],[{"text":"帮助","clicked_text":"/扫雷帮助","callback":"/扫雷帮助","send":true},{"text":"其他游戏","clicked_text":"/咸鱼帮助","callback":"/咸鱼帮助","send":true}]]}]

将主动消息存储到下次被动消息触发后发送

bot想要发送主动消息A,B时,将想要发送的消息A,B存入内存或者文件夹(类似这种形式)里面。
当有人@bot时发送被动消息C,在五分钟内把消息A,B也发送到群内。
只是建议,不一定要实现。

HTTP通信响应消息但不回复

我使用的两个项目Spelako
以及cppqqbot
(利用正向HTTP发信,反向HTTP收信)
Spelako没有任何响应,cppqqbot为刚开始的连接成功以及后面的POST提示,但是没有消息反馈
我只是一个使用他人框架的用户,如果这是框架问题拜托请不要骂我,抱歉抱歉!
Screenshot_20231211_232720
↑Spelako配置Bat,反向HTTP地址为5701
Screenshot_20231211_232511
↑cppqqbot运行日志
Screenshot_20231211_232608
↑Gensokyo发送消息HTTP POST成功发送提示
Screenshot_20231211_233954
Gensokyo HTTP配置文件
特殊配置项array=true

interface conversion: interface {} is int, not string

对接yobot,回复信息时报错

2023/12/03 12:43:47 send_group_msg获取到信息类型:guild
panic: interface conversion: interface {} is int, not string

goroutine 76 [running]:
github.com/hoshinonyaruko/gensokyo/handlers.handleSendGroupMsg({_, }, {, }, {, }, {{0x7cb4a3, 0xe}, {{0x0, 0x0}, ...}, ...})
/home/runner/work/Gensokyo/Gensokyo/handlers/send_group_msg.go:284 +0x1cf8
github.com/hoshinonyaruko/gensokyo/handlers.handle_quick_operation({
, }, {, }, {, }, {{0xc00039a4a0, 0x1d}, {{0x0, 0x0}, ...}, ...})
/home/runner/work/Gensokyo/Gensokyo/handlers/handle_quick_operation.go:20 +0x34a
github.com/hoshinonyaruko/gensokyo/callapi.CallAPIFromDict({
, }, {, }, {, _}, {{0xc00039a4a0, 0x1d}, {{0x0, 0x0}, ...}, ...})
/home/runner/work/Gensokyo/Gensokyo/callapi/callapi.go:179 +0xe6
github.com/hoshinonyaruko/gensokyo/wsclient.(*WebSocketClient).recvMessage(0xc000184d20, {0xc00044a000, 0x299, 0x380})
/home/runner/work/Gensokyo/Gensokyo/wsclient/ws.go:135 +0x22b
created by github.com/hoshinonyaruko/gensokyo/wsclient.(*WebSocketClient).handleIncomingMessages in goroutine 73
/home/runner/work/Gensokyo/Gensokyo/wsclient/ws.go:71 +0x27

重启之后有几率会报错403

gsk不重启,nb2重启发送第一条命令时有几率触发,版本是最新版本
但是。。。消息正常响应,就报错403

gensokyo端报错

2023/11/25 18:53:42 Failed to connect to WebSocket[ws://127.0.0.1:25550/onebot/v11/ws/]: websocket: bad handshake, retrying in 5 seconds...
2023/11/25 18:53:47 Dialing URL: ws://127.0.0.1:25550/onebot/v11/ws/
2023/11/25 18:53:47 Failed to connect to WebSocket[ws://127.0.0.1:25550/onebot/v11/ws/]: websocket: bad handshake, retrying in 5 seconds...
2023/11/25 18:53:51 DEBUG: [ws][ID:41d2c44e-d562-46c5-89a1-0bfaa1ec1bdd][Shard:(0/1)][Intent:1107300864] listened heartBeat
2023/11/25 18:53:51 INFO: [ws][ID:41d2c44e-d562-46c5-89a1-0bfaa1ec1bdd][Shard:(0/1)][Intent:1107300864] write Heartbeat message, {"op":1,"d":0}
2023/11/25 18:53:51 INFO: [ws][ID:41d2c44e-d562-46c5-89a1-0bfaa1ec1bdd][Shard:(0/1)][Intent:1107300864] receive HeartbeatAck message, {"op":11}
2023/11/25 18:53:52 Dialing URL: ws://127.0.0.1:25550/onebot/v11/ws/
2023/11/25 18:53:52 Failed to connect to WebSocket[ws://127.0.0.1:25550/onebot/v11/ws/]: websocket: bad handshake, retrying in 5 seconds...

nonebot2端报错

11-25 18:50:47 [INFO] uvicorn | Application startup complete.

11-25 18:50:47 [INFO] uvicorn | Uvicorn running on http://0.0.0.0:25550 (Press CTRL+C to quit)
11-25 18:50:49 [INFO] uvicorn | ('127.0.0.1', 44428) - "WebSocket /onebot/v11/ws/" [accepted]
11-25 18:50:49 [INFO] nonebot | OneBot V11 | Bot 10207xxxx connected
11-25 18:50:49 [INFO] websockets | connection open
11-25 18:53:07 [SUCCESS] nonebot | OneBot V11 102075551 | [message.group.normal]: Message 223 from 41518xxxx@[群:1] '今天吃什么'
11-25 18:53:07 [WARNING] nonebot | OneBot V11 | There's already a bot 102075551, ignored
11-25 18:53:07 [INFO] uvicorn | ('127.0.0.1', 52944) - "WebSocket /onebot/v11/ws/" 403
11-25 18:53:07 [INFO] websockets | connection rejected (403 Forbidden)
11-25 18:53:07 [INFO] websockets | connection closed
11-25 18:53:07 [INFO] nonebot | Event will be handled by Matcher(type='message', module=nonebot_plugin_whateat_pic, lineno=69)
11-25 18:53:08 [INFO] nonebot | Matcher(type='message', module=nonebot_plugin_whateat_pic, lineno=69) running complete
11-25 18:53:12 [WARNING] nonebot | OneBot V11 | There's already a bot 102075551, ignored
11-25 18:53:12 [INFO] uvicorn | ('127.0.0.1', 55292) - "WebSocket /onebot/v11/ws/" 403
11-25 18:53:12 [INFO] websockets | connection rejected (403 Forbidden)
11-25 18:53:12 [INFO] websockets | connection closed

希望完善这些地方

  • 建立echo映射id和类型
  • 建立uuid到固定int数据库映射
  • 将它修改成多个gensokyo可互相连接
  • (同一个bot多开公用一个映射)
  • 频道私域信息事件
  • 频道文字信息
  • 频道链接图
  • 群组文字信息
  • 群组链接图
  • 使用bolt数据库替代ini
  • 兼容https://github.com/Ice9Coffee/HoshinoBot
  • 频道私聊(私聊模式)
  • 频道私聊(频道模式)
  • 频道私聊(群模式)
  • 群私聊(私聊模式)
  • 群私聊(群模式)
  • 群信息的array
  • 频道信息array
  • 私信array
  • 回复类型信息(群)
  • (每个地方的array信息段都要支持)
  • Nb2插件测试 文字 图像
  • Koishi插件测试 文字 图像
  • 早苗插件测试 文字 图像
  • Trss插件测试 文字 图像
  • 獭獭 wss信息的accesstoken 文字 图像 测试
  • 频道base64图
  • 频道本地路径图
  • 群组base64图
  • 群组本地图
  • 发送成功后会返回发送成功回执,要组合成onebotv11的回执
  • 群组base64语音
  • 群组本地路径语音(搁置)
  • 频道禁言api
  • 群禁言api
  • 断线重连
  • 多个ws连接思路,多开

不支持原样发送链接

实际的结果:

未配置302跳转所需的crt和key时,发送的消息带链接时,框架会一律删除链接部分,包括在管理后台 开发设置 - 消息URL配置 中添加并验证过的链接,该功能无开关。

期望的结果:

用户可在配置文件中自行开关链接删除功能。因为有时候只需要原样发送后台验证过的链接

希望增加gocq一样的统计api

在状态插件中,收消息次数固定为500,发消息次数固定为400,希望gsk可以适配.
状态插件
https://github.com/lgc-NB2Dev/nonebot-plugin-picstatus
能增加统计群数量的更好(
gocq状态api
https://docs.go-cqhttp.org/api/#%E8%8E%B7%E5%8F%96%E7%8A%B6%E6%80%81

字段 类型 说明
packet_received uint64 收到的数据包总数
packet_sent uint64 发送的数据包总数
packet_lost uint32 数据包丢失总数
message_received uint64 接受信息总数
message_sent uint64 发送信息总数
disconnect_times uint32 TCP 链接断开次数
lost_times uint32 账号掉线次数
last_message_time int64 最后一条消息时间

开启idmap后,bind后的虚拟值无法还原成真实at

相关log如下:

[2023-11-29T22:41:34] INFO: RawMessage: xcw抽签
[2023-11-29T22:41:34] INFO: MessageID: 544035453
[2023-11-29T22:41:34] INFO: GroupID: *********
[2023-11-29T22:41:34] INFO: MessageType: group
[2023-11-29T22:41:34] INFO: PostType: message
[2023-11-29T22:41:34] INFO: SelfID: *********
[2023-11-29T22:41:34] INFO: Sender: {liyk  ********* owner}
[2023-11-29T22:41:34] INFO: SubType: normal
[2023-11-29T22:41:34] INFO: Time: 1701268894
[2023-11-29T22:41:34] INFO: Avatar: http://thirdqq.qlogo.cn/g?b=oidb&k=IIfbqKDVXOqv8icXEc2lakA&kti=ZUCfTwAAAAI&s=140&t=1555879289
[2023-11-29T22:41:34] INFO: Echo: 
[2023-11-29T22:41:34] INFO: Message: xcw抽签
[2023-11-29T22:41:34] INFO: MessageSeq: 0
[2023-11-29T22:41:34] INFO: Font: 0
[2023-11-29T22:41:34] INFO: UserID: *********
[2023-11-29T22:41:34] INFO: Received from onebotv11 server:Action: send_msg, Params: {"botqq":"","channel_id":"","guild_id":"","group_id":"*********","message":[{"data":{"qq":"*********"},"type":"at"},{"data":{"text":" 你今天已经抽过签了,欢迎明天再来~"},"type":"text"}],"user_id":"*********"}, Echo: map[seq:761]
[2023-11-29T22:41:34] INFO: appID: *********, GroupID: *********
[2023-11-29T22:41:34] INFO: msgType: guild
[2023-11-29T22:41:34] INFO: appID: *********, GroupID: *********
[2023-11-29T22:41:34] INFO: msgType: guild
[2023-11-29T22:41:34] INFO: params.message is a slice (segment_type_koishi)
[2023-11-29T22:41:34] INFO: Error retrieving user ID: key not found
[2023-11-29T22:41:34] INFO: GetLazyMessagesId: 
[2023-11-29T22:41:34] INFO: 通过GetMessageIDByUseridOrGroupid函数获取的message_id:0894d1cc93efccd6f42b10c4ab99ae0238d705489c9b9dab06
[2023-11-29T22:41:34] INFO: 频道发信息messageText:<@!*********> 你今天已经抽过签了,欢迎明天再来~

频道私聊转频道的handle_quick_operation会发生crash

Log如下

2023/12/05 18:34:02 Echo:
2023/12/05 18:34:02 Message: version
2023/12/05 18:34:02 MessageSeq: 0
2023/12/05 18:34:02 Font: 0
2023/12/05 18:34:02 UserID: *********
2023/12/05 18:34:02 Received from onebotv11 server: Action: .handle_quick_operation_async, Params: {"botqq":"","channel_id":"","guild_id":"","group_id":"","message":null,"user_id":"","context":{"avatar":"http://thirdqq.qlogo.cn/g?b=oidb\u0026k=IIfbqKDVXOqv8icXEc2lakA\u0026kti=ZUCfTwAAAAI\u0026s=140\u0026t=1555879289","message_id":171785827,"message_type":"group","post_type":"message","sub_type":"normal","time":1701772442,"user_id":*********,"group_id":*********},"operation":{"reply":"Remix-[v4.0.2]"}}, Echo: map[seq:26]
2023/12/05 18:34:02 send_group_msg获取到信息类型:guild_private
panic: interface conversion: interface {} is nil, not string

goroutine 46 [running]:
github.com/hoshinonyaruko/gensokyo/handlers.handleSendGroupMsg({_, _}, {_, _}, {_, _}, {{0x9d527c, 0xe}, {{0x0, 0x0}, ...}, ...})
        /home/runner/work/Gensokyo/Gensokyo/handlers/send_group_msg.go:344 +0x1e54
github.com/hoshinonyaruko/gensokyo/handlers.handle_quick_operation({_, _}, {_, _}, {_, _}, {{0xc0004d7d40, 0x1d}, {{0x0, 0x0}, ...}, ...})
        /home/runner/work/Gensokyo/Gensokyo/handlers/handle_quick_operation.go:22 +0x154
github.com/hoshinonyaruko/gensokyo/callapi.CallAPIFromDict({_, _}, {_, _}, {_, _}, {{0xc0004d7d40, 0x1d}, {{0x0, 0x0}, ...}, ...})
        /home/runner/work/Gensokyo/Gensokyo/callapi/callapi.go:179 +0xe6
github.com/hoshinonyaruko/gensokyo/wsclient.(*WebSocketClient).recvMessage(0xc0003f62a0, {0xc000225e00, 0x1ec, 0x200})
        /home/runner/work/Gensokyo/Gensokyo/wsclient/ws.go:135 +0x22b
created by github.com/hoshinonyaruko/gensokyo/wsclient.(*WebSocketClient).handleIncomingMessages in goroutine 37
        /home/runner/work/Gensokyo/Gensokyo/wsclient/ws.go:71 +0x27

无法响应yobot的消息:Unsupported action: .handle_quick_operation_async

相关log如下

2023/11/15 16:24:18 appID: 102074004, GroupID: 1
2023/11/15 16:24:18 msgType: guild
2023/11/15 16:24:18 appID: 102074004, GroupID: 1
2023/11/15 16:24:18 msgType: guild
2023/11/15 16:24:18 params.message is a string
2023/11/15 16:24:18 通过GetMessageIDByUseridOrGroupid函数获取的message_id: 0894d1cc93efccd6f42b10c4ab99ae02382448b180d2aa06
2023/11/15 16:24:18 频道发信息messageText:
2023/11/15 16:24:18 INFO: [OPENAPI]POST https://sandbox.api.sgroup.qq.com/channels/633755076/messages, traceID:ba7c390bf512d07ddf0e7efb85f05bfe, status:200 OK, elapsed:590.663122ms req: null, resp: {"id":"0894d1cc93efccd6f42b10c4ab99ae02382548b280d2aa06","channel_id":"633755076","guild_id":"3164159611405281428","content":"","timestamp":"2023-11-15T16:24:18+08:00","tts":false,"mention_everyone":false,"author":{"id":"8321198335729023742","username":"","avatar":"","bot":true},"pinned":false,"type":0,"flags":0,"seq_in_channel":"37"}
2023/11/15 16:24:18 发送成功回执: map[data:map[message_id:0] echo:map[seq:1506] message: retcode:0 status:ok]
2023/11/15 16:24:28 INFO: [ws][ID:43e50aa0-3362-4281-a169-b922ef031e9c][Shard:(0/1)][Intent:4608] receive Event message, {"op":0,"s":6,"t":"MESSAGE_CREATE","id":"MESSAGE_CREATE:0894d1cc93efccd6f42b10c4ab99ae02382648ba80d2aa06","d":{"author":{"avatar":"http://thirdqq.qlogo.cn/g?b=oidb\u0026k=IIfbqKDVXOqv8icXEc2lakA\u0026kti=ZUCfTwAAAAI\u0026s=140\u0026t=1555879289","bot":false,"id":"3261266598472609860","username":"liyk"},"channel_id":"633755076","content":"version","guild_id":"3164159611405281428","id":"0894d1cc93efccd6f42b10c4ab99ae02382648ba80d2aa06","member":{"joined_at":"2023-10-31T14:39:10+08:00","nick":"liyk","roles":["4","11"]},"seq":38,"seq_in_channel":"38","timestamp":"2023-11-15T16:24:26+08:00"}}
2023/11/15 16:24:28 收到私域信息 &{0894d1cc93efccd6f42b10c4ab99ae02382648ba80d2aa06 633755076 3164159611405281428  version 2023-11-15T16:24:26+08:00  false 0xc0003dc240 0xc0003dc540 [] [] [] <nil> false 38 <nil> }
2023/11/15 16:24:28 RawMessage: version
2023/11/15 16:24:28 MessageID: 24
2023/11/15 16:24:28 GroupID: 1
2023/11/15 16:24:28 MessageType: group
2023/11/15 16:24:28 PostType: message
2023/11/15 16:24:28 SelfID: *********
2023/11/15 16:24:28 Sender: {liyk  2 member}
2023/11/15 16:24:28 SubType: normal
2023/11/15 16:24:28 Time: 1700036668
2023/11/15 16:24:28 Avatar: http://thirdqq.qlogo.cn/g?b=oidb&k=IIfbqKDVXOqv8icXEc2lakA&kti=ZUCfTwAAAAI&s=140&t=1555879289
2023/11/15 16:24:28 Echo:
2023/11/15 16:24:28 Message: version
2023/11/15 16:24:28 MessageSeq: 0
2023/11/15 16:24:28 Font: 0
2023/11/15 16:24:28 UserID: 2
2023/11/15 16:24:28 Received from onebotv11 server raw: {"action": ".handle_quick_operation_async", "params": {"self_id": *********, "context": {"avatar": "http://thirdqq.qlogo.cn/g?b=oidb&k=IIfbqKDVXOqv8icXEc2lakA&kti=ZUCfTwAAAAI&s=140&t=1555879289", "font": 0, "group_id": 1, "message_id": 24, "message_seq": 0, "message_type": "group", "post_type": "message", "self_id": *********, "sub_type": "normal", "time": 1700036668, "user_id": 2}, "operation": {"reply": "Remix-[v4.0.2]", "at_sender": false}}, "echo": {"seq": 8}}
2023/11/15 16:24:28 Received from onebotv11 server: Action: .handle_quick_operation_async, Params: {"botqq":"","channel_id":"","guild_id":"","group_id":"","message":null,"user_id":""}, Echo: map[seq:8]
2023/11/15 16:24:28 Unsupported action: .handle_quick_operation_async

Version

使用overflow套用gsk在频道发送图片消息失败

环境信息

  • 操作系统:win10,
  • OneBot SDK:Overflow 2.16
  • gsk版本:Release 241/merge

问题描述

使用overflow调用mirial发送图片消息,QQ群能正常发送成功,频道发送失败。文字消息的话不论在Q群还是频道均能正常发送成功

期望行为

与Q群一样发送图片成功。

其他信息

overflow代码:
image

发送图片频道失败与Q群成功报文:
image

无法发送m4a的音频消息

Log如下:

2023/11/18 17:51:52INFOMessageID: 188
2023/11/18 17:51:52INFORawMessage: cygames
2023/11/18 17:51:52INFOReceived from onebotv11 server:Action: send_msg, Params: {"botqq":"","channel_id":"","guild_id":"","group_id":"1","message":"猜猜这个“cygames”语音来自哪位角色? (30s后公布答案)","user_id":"*"}, Echo: map[seq:2630]
2023/11/18 17:51:52INFOReceived from onebotv11 server raw:{"action":"send_msg","params":{"group_id":1,"message_type":"group","user_id":*,"message":"\u731c\u731c\u8fd9\u4e2a\u201ccygames\u201d\u8bed\u97f3\u6765\u81ea\u54ea\u4f4d\u89d2\u8272? (30s\u540e\u516c\u5e03\u7b54\u6848)"},"echo":{"seq":2630}}
2023/11/18 17:51:52INFO通过GetMessageIDByUseridOrGroupid函数获取的message_id:0894d1cc93efccd6f42b10c4ab99ae0238af0248b692e2aa06
2023/11/18 17:51:52INFO频道发信息messageText:猜猜这个“cygames”语音来自哪位角色? (30s后公布答案)
2023/11/18 17:51:52INFO发送成功回执: map[data:map[message_id:0] echo:map[seq:2630] message: retcode:0 status:ok]
2023/11/18 17:51:52INFOINFO: [OPENAPI]POST https://sandbox.api.sgroup.qq.com/channels/633755076/messages, traceID:3af21aa3a657d1f7eabc8644a20f913e, status:200 OK, elapsed:341.654693ms req: {"content":"猜猜这个“cygames”语音来自哪位角色? (30s后公布答案)","msg_id":"0894d1cc93efccd6f42b10c4ab99ae0238af0248b692e2aa06","msg_seq":1}, resp: {"id":"0894d1cc93efccd6f42b10c4ab99ae0238b00248b892e2aa06","channel_id":"633755076","guild_id":"3164159611405281428","content":"猜猜这个“cygames”语音来自哪位角色? (30s后公布答案)","timestamp":"2023-11-18T17:51:52+08:00","tts":false,"mention_everyone":false,"author":{"id":"8321198335729023742","username":"","avatar":"","bot":true},"pinned":false,"type":0,"flags":0,"seq_in_channel":"304"}
2023/11/18 17:51:52INFOReceived from onebotv11 server:Action: send_msg, Params: {"botqq":"","channel_id":"","guild_id":"","group_id":"1","message":{"data":{"file":"file:////HoshinoBot/res/voice_ci/vo_ci_101401_001.m4a","magic":"false"},"type":"record"},"user_id":"*"}, Echo: map[seq:2631]
2023/11/18 17:51:52INFOReceived from onebotv11 server raw:{"action":"send_msg","params":{"group_id":1,"message_type":"group","user_id":*,"message":{"type":"record","data":{"file":"file:\/\/\/\/HoshinoBot\/res\/voice_ci\/vo_ci_101401_001.m4a","magic":"false"}}},"echo":{"seq":2631}}
2023/11/18 17:51:52INFO频道发信息messageText:
2023/11/18 17:51:52INFO通过GetMessageIDByUseridOrGroupid函数获取的message_id:0894d1cc93efccd6f42b10c4ab99ae0238af0248b692e2aa06

版本:Release 126/merge

希望将群聊中的空指令也交由用户后台处理

版本:v163
环境:QQ群

J76J6PM3S21B`R_J3 )JSN0

问题1:手机端只@机器人不接指令 后台接受不到消息 gsk日志

[Intent:1107300352] receive Event message, {"op":0,"s":3,"t":"GROUP_AT_MESSA
GE_CREATE","id":"GROUP_AT_MESSAGE_CREATE:95l4tdlib8mtvkwxdexoanzadtrvswkvnztu
qcdgzsncy77s33ypdf8gdt","d":{"author":{"id":"9A2327F233DF4AA6411D87F07683A6B","
member_openid":"9A2327F233DF4AA6411D87F07683A6B"},"content":" ","group_id":"CD4
8C0B43B966A9333DE3AA457563BE9","group_openid":"CD48C0B43B966A9333DE3AA457563BE9"
,"id":"ROBOT1.0_95L4T.DLIB8mtVKwxdeXOXmG7XB2RnwtraQCVO5Mr-VAnICLHds.ykkOfPYyYBwc
","timestamp":"2023-11-22T21:37:45+08:00"}}
2023/11/22 21:37:46 信息被自定义黑白名单拦截

问题2:电脑端@机器人不接指令 后台和gsk均无消息(如果是官方限制请忽略)

gsk配置文件

white_prefix_mode : false         
white_prefixs : [""]              

black_prefix_mode : false        
black_prefixs : [""]             

visual_prefixs : [""]           

手机和电脑在频道中只@不接指令 均会正确将空消息传给用户后台 接收的消息为 "content":""

ps:我的后台功能分正式版和审核版,群聊中输入一段神秘代码可将审核版转正式版。所以在不同群聊中空指令的回复也会不一样,希望将空指令传给用户后台处理。

与nonebot对接后nonebot抛出无法获取上下文的报错

11-12 14:07:59 [ERROR] nonebot | Rule check failed for Matcher(type='message', module=plugins.teach, lineno=57).
Traceback (most recent call last):
File "D:\aila\aila\bot.py", line 41, in
nonebot.run(app="mp_main:app")
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\site-packages\nonebot_init_.py", line 331, in run
get_driver().run(*args, **kwargs)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\site-packages\nonebot\drivers\fastapi.py", line 201, in run
uvicorn.run(
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\site-packages\uvicorn\main.py", line 587, in run
server.run()
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\site-packages\uvicorn\server.py", line 61, in run
return asyncio.run(self.serve(sockets=sockets))
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\asyncio\runners.py", line 190, in run
return runner.run(main)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\asyncio\runners.py", line 118, in run
return self._loop.run_until_complete(task)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\asyncio\base_events.py", line 637, in run_until_complete
self.run_forever()
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\asyncio\windows_events.py", line 321, in run_forever
super().run_forever()
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\asyncio\base_events.py", line 604, in run_forever
self._run_once()
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\asyncio\base_events.py", line 1909, in _run_once
handle._run()
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\asyncio\events.py", line 80, in _run
self._context.run(self._callback, *self._args)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\site-packages\nonebot\message.py", line 457, in check_and_run_matcher
if not await _check_matcher(

File "C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\site-packages\nonebot\message.py", line 363, in check_matcher
) or not await Matcher.check_rule(bot, event, state, stack, dependency_cache):
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\site-packages\nonebot\internal\matcher\matcher.py", line 389, in check_rule
return event_type == (cls.type or event_type) and await cls.rule(
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\site-packages\nonebot\internal\rule.py", line 73, in call
results = await asyncio.gather(
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\site-packages\nonebot\dependencies_init
.py", line 113, in call
return await cast(Callable[..., Awaitable[R]], self.call)(**values)
File "D:\aila\aila\plugins\teach.py", line 36, in judge_o
return True if event.get_user_id() in start else False
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\site-packages\nonebot\adapters\onebot\v11\event.py", line 53, in get_user_id
raise ValueError("Event has no context!")
ValueError: Event has no context!

以下是配置文件
image

正向 ws 连接时可不可以不使用 ws_server_token

在 gocq 中,access_token 默认为 "",可以跳过鉴权正常连接
Gensokyo 中,ws_server_token 无论是注释掉还是设为空,似乎都无法连接。

日志:

Connection failed due to missing token. Headers: map[Connection:[Upgrade] Sec-Websocket-Extensions:[permessage-deflate; client_max_window_bits] Sec-Websocket-Key:[FNZxW1Cuv9GqldvKKRqOBQ==] Sec-Websocket-Version:[13] Upgrade:[websocket] User-Agent:[Python/3.10 websockets/11.0.3]]

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.