1
0
mirror of https://github.com/fumiama/go-onebot-agent.git synced 2026-06-05 10:10:24 +08:00

feat: add new emojis & terminus

This commit is contained in:
源文雨
2025-09-26 22:53:44 +08:00
parent 9c2cb926ec
commit f69aa24ec6
5 changed files with 82 additions and 10 deletions

View File

@@ -379,17 +379,66 @@
|346|你真棒棒|
|347|大展宏兔|
|348|福萝卜|
|9728|☀ 晴天|
|9749|☕ 咖啡|
|9786|☺ 可爱|
|10024|✨ 闪光|
|10060|❌ 错误|
|10068|❔ 问号|
|127801|🌹 玫瑰|
|127817|🍉 西瓜|
|127822|🍎 苹果|
|127827|🍓 草莓|
|127836|🍜 拉面|
|127838|🍞 面包|
|127847|🍧 刨冰|
|127866|🍺 啤酒|
|127867|🍻 干杯|
|127881|🎉 庆祝|
|128027|🐛 虫|
|128046|🐮 牛|
|128051|🐳 鲸鱼|
|128053|🐵 猴|
|128074|👊 拳头|
|128076|👌 好的|
|128077|👍 厉害|
|128079|👏 鼓掌|
|128089|👙 内衣|
|128102|👦 男孩|
|128104|👨 爸爸|
|128147|💓 爱心|
|128157|💝 礼物|
|128164|💤 睡觉|
|128166|💦 水|
|128168|💨 吹气|
|128170|💪 肌肉|
|128235|📫 邮箱|
|128293|🔥 火|
|128513|😁 呲牙|
|128514|😂 激动|
|128516|😄 高兴|
|128522|😊 嘿嘿|
|128524|😌 羞涩|
|128527|😏 哼哼|
|128530|😒 不屑|
|128531|😓 汗|
|128532|😔 失落|
|128536|😘 飞吻|
|128538|😚 亲亲|
|128540|😜 淘气|
|128541|😝 吐舌|
|128557|😭 大哭|
|128560|😰 紧张|
|128563|😳 瞪眼|
### 输出
> 严格遵循文档,禁止输出除下述格式外的任何解释性文本!
#### 1. 调用 API
格式如下,不要用任何代码块包裹,一次只能发送零个(不发送)或一个:
格式如下,不要用任何代码块包裹,一次能且只能发送一个:
{"action":"api_name","params":{"a":123,"b":"456"}}
如果选择不发送,输出一个全角空格 (非JSON),代表结束本次任务。
调用完成后,你可能会收到 API 的响应结果,格式如下:
{"status":"failed","data":null,"message":1404,"wording":"fail reason"}
@@ -400,10 +449,10 @@
#### 2. 分析调用结果
- 如果任务成功完成,输出全角空格 代表结束本次任务;
- 如果任务成功完成,调用`end_action`结束本次任务;
- 如果还需要进一步操作,首先发消息将要执行的任务解释给用户,
- 如果任务不是敏感或危险操作,直接执行;
- 否则,输出全角空格 暂停本次任务,等待用户确认。
- 否则,调用`end_action`暂停本次任务,等待用户确认。
注意事项:
- 如果你只是在回应用户而不做高级调用,发送一条消息成功后立即结束本次任务。

View File

@@ -1,4 +1,8 @@
actions:
end_action:
desc: 结束或暂停任务
params: "-"
data: "-"
send_private_msg:
desc: 发送私聊消息
params: user_id 对方QQ号message 要发送的内容 (json.RawMessage)
@@ -15,6 +19,10 @@ actions:
desc: 发送好友赞
params: user_id 对方QQ号times 赞的次数每个好友每天最多10次 (number)
data: "-"
set_msg_emoji_like:
desc: 发送表情回应
params: message_id 消息IDemoji_id 表情 ID
data: "-"
set_group_kick:
desc: 群组踢人
params: group_id 群号user_id 要踢的QQ号reject_add_request 拒绝此人的加群请求 (boolean)
@@ -89,10 +97,12 @@ actions:
data: "[]User"
config:
owner:
- end_action
- send_private_msg
- send_group_msg
- delete_msg
- send_like
- set_msg_emoji_like
- set_group_kick
- set_group_ban
- set_group_whole_ban
@@ -112,9 +122,11 @@ config:
- get_group_member_info
- get_group_member_list
admin: # need to check if gid is the same as admin's gid
- end_action
- send_group_msg
- delete_msg
- send_like
- set_msg_emoji_like
- set_group_kick
- set_group_ban
- set_group_whole_ban
@@ -128,8 +140,10 @@ config:
- get_group_member_info
- get_group_member_list
user: # need to check if gid is the same as user's gid
- end_action
- send_group_msg
- send_like
- set_msg_emoji_like
- get_msg
- get_forward_msg
- get_stranger_info

View File

@@ -14,6 +14,10 @@ import (
"github.com/wdvxdr1123/ZeroBot/message"
)
const (
EOA = "end_action" // EOA is a dummy action that is used to terminate request
)
var (
// ErrPermissionDenied LLM 调用了不该调用的 action
ErrPermissionDenied = errors.New("permission denied")
@@ -55,7 +59,7 @@ func (ag *Agent) AddEvent(grp int64, ev *Event) {
ag.log.Add(grp, ev, false)
}
// AddRequest 一般无需主动调用, 由 GetAction 自动添加
// AddRequest 添加 API 请求, 一般无需主动调用, 由 GetAction 自动添加
func (ag *Agent) AddRequest(grp int64, req *zero.APIRequest) {
ag.log.Add(grp, req, true)
}
@@ -65,7 +69,7 @@ func (ag *Agent) AddResponse(grp int64, resp *APIResponse) {
ag.log.Add(grp, resp, false)
}
// AddTerminus 添加会话终止符
// AddTerminus 添加会话终止符, 一般无需主动调用, 由 GetAction 自动添加
func (ag *Agent) AddTerminus(grp int64) {
ag.log.Add(grp, Terminus{}, true)
}
@@ -158,6 +162,9 @@ func (ag *Agent) GetAction(api deepinfra.API, p model.Protocol, grp int64, role
continue
}
switch {
case r.Action == EOA:
ag.AddTerminus(grp)
return
case !ag.perm.allow(role, r.Action):
err = errors.Wrap(ErrPermissionDenied, r.Action)
return

View File

@@ -2,12 +2,14 @@ package goba
import "testing"
const fulltab = `|功能|action|params|data|
const fulltab = ` |功能|action|params|data|
|---|---|---|---|
|结束或暂停任务|end_action|-|-|
|发送私聊消息|send_private_msg|user_id 对方QQ号message 要发送的内容 (json.RawMessage)|message_id 消息ID (number)|
|发送群消息|send_group_msg|group_id 群号message 要发送的内容 (json.RawMessage)|message_id 消息ID (number)|
|撤回消息|delete_msg|message_id 消息ID|-|
|发送好友赞|send_like|user_id 对方QQ号times 赞的次数每个好友每天最多10次 (number)|-|
|发送表情回应|set_msg_emoji_like|message_id 消息IDemoji_id 表情 ID|-|
|群组踢人|set_group_kick|group_id 群号user_id 要踢的QQ号reject_add_request 拒绝此人的加群请求 (boolean)|-|
|群组单人禁言|set_group_ban|group_id 群号user_id 要禁言的QQ号duration 禁言时长0表示取消禁言|-|
|群组全员禁言|set_group_whole_ban|group_id 群号enable 是否禁言 (boolean)|-|

View File

@@ -58,9 +58,9 @@ func (resp *APIResponse) String() string {
return strings.TrimSpace(sb.String())
}
// Terminus 终止符, 一个全角空格
// Terminus 终止符, 映射到 EOA
type Terminus struct{}
func (Terminus) String() string {
return " "
return `{"action":"` + EOA + `"}`
}