mirror of
https://shylinux.com/x/icebergs
synced 2025-04-26 01:24:05 +08:00
opt lark
This commit is contained in:
parent
095e243c44
commit
8c9c34ef35
@ -50,7 +50,7 @@ func _river_create(m *ice.Message, kind, name, text string, arg ...string) {
|
||||
))
|
||||
m.Log_CREATE(kit.MDB_META, RIVER, kit.MDB_TYPE, kind, kit.MDB_NAME, name)
|
||||
|
||||
_river_user(m, h, cli.UserName)
|
||||
_river_user(m, h, cli.UserName, m.Option(ice.MSG_USERNAME))
|
||||
kit.Fetch(m.Confv(RIVER, kit.Keys("meta.template", "base")), func(storm string, value interface{}) {
|
||||
list := []string{}
|
||||
kit.Fetch(value, func(index int, value string) {
|
||||
@ -85,14 +85,10 @@ func init() {
|
||||
),
|
||||
),
|
||||
aaa.Black, kit.Dict(aaa.TECH, []interface{}{
|
||||
"/river.create",
|
||||
"/river.rename",
|
||||
"/river.remove",
|
||||
"/river.share",
|
||||
"/storm.share",
|
||||
"/storm.remove",
|
||||
"/storm.rename",
|
||||
"/storm.create",
|
||||
}),
|
||||
aaa.White, kit.Dict(aaa.VOID, []interface{}{
|
||||
"/header",
|
||||
|
@ -16,6 +16,12 @@ import (
|
||||
"time"
|
||||
)
|
||||
|
||||
func raw(m *ice.Message, url string, arg ...interface{}) interface{} {
|
||||
m.Option("header", "Authorization", "Bearer "+m.Cmdx(APP, "token", "bot"), "Content-Type", "application/json")
|
||||
data := kit.UnMarshal(m.Cmdx(web.SPIDE, LARK, "raw", http.MethodGet, url, arg))
|
||||
m.Debug(kit.Formats(data))
|
||||
return data
|
||||
}
|
||||
func post(m *ice.Message, bot string, arg ...interface{}) {
|
||||
m.Richs(APP, nil, bot, func(key string, value map[string]interface{}) {
|
||||
m.Option("header", "Authorization", "Bearer "+m.Cmdx(APP, "token", bot), "Content-Type", "application/json")
|
||||
@ -44,21 +50,19 @@ func parse(m *ice.Message) {
|
||||
}
|
||||
}
|
||||
}
|
||||
if kit.Fetch(kit.Value(data, "action.value"), func(key string, value string) {
|
||||
m.Add("option", key, value)
|
||||
}) != nil {
|
||||
m.Option("msg.type", "event_click")
|
||||
}
|
||||
m.Info("msg: %v", kit.Formats(data))
|
||||
}
|
||||
|
||||
const (
|
||||
P2P_CHAT_CREATE = "p2p_chat_create"
|
||||
ADD_BOT = "add_bot"
|
||||
P2P_CHAT_CREATE = "p2p_chat_create"
|
||||
)
|
||||
const (
|
||||
OPEN_CHAT_ID = "open_chat_id"
|
||||
SHIP_ID = "ship_id"
|
||||
OPEN_ID = "open_id"
|
||||
CHAT_ID = "chat_id"
|
||||
USER_OPEN_ID = "user_open_id"
|
||||
OPEN_CHAT_ID = "open_chat_id"
|
||||
)
|
||||
const (
|
||||
APP = "app"
|
||||
@ -69,20 +73,22 @@ const (
|
||||
FORM = "form"
|
||||
DUTY = "duty"
|
||||
TALK = "talk"
|
||||
|
||||
RAND = "rand"
|
||||
RAND = "rand"
|
||||
HOME = "home"
|
||||
|
||||
LARK = "lark"
|
||||
)
|
||||
|
||||
var Index = &ice.Context{Name: "lark", Help: "机器人",
|
||||
Configs: map[string]*ice.Config{
|
||||
APP: &ice.Config{Name: APP, Help: "服务配置", Value: kit.Data(kit.MDB_SHORT, kit.MDB_NAME,
|
||||
APP: {Name: APP, Help: "服务配置", Value: kit.Data(kit.MDB_SHORT, kit.MDB_NAME,
|
||||
LARK, "https://open.feishu.cn", DUTY, "", "welcome", kit.Dict(
|
||||
P2P_CHAT_CREATE, "让我们做好朋友吧~", ADD_BOT, "我来也~",
|
||||
ADD_BOT, "我来也~", P2P_CHAT_CREATE, "让我们做好朋友吧~",
|
||||
),
|
||||
)},
|
||||
USER: &ice.Config{Name: USER, Help: "用户配置", Value: kit.Data()},
|
||||
SHIP: {Name: SHIP, Help: "组织配置", Value: kit.Data(kit.MDB_SHORT, SHIP_ID)},
|
||||
USER: {Name: USER, Help: "用户配置", Value: kit.Data(kit.MDB_SHORT, OPEN_ID)},
|
||||
HOME: {Name: HOME, Help: "卡片配置", Value: kit.Data(kit.MDB_SHORT, OPEN_ID)},
|
||||
},
|
||||
Commands: map[string]*ice.Command{
|
||||
ice.CTX_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
@ -91,7 +97,7 @@ var Index = &ice.Context{Name: "lark", Help: "机器人",
|
||||
m.Cmd(DUTY, "boot", m.Conf(cli.RUNTIME, "boot.hostname"), m.Time())
|
||||
}},
|
||||
ice.CTX_EXIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||
m.Save(APP, USER)
|
||||
m.Save(APP, SHIP, USER)
|
||||
}},
|
||||
|
||||
APP: {Name: "app [name] auto", Help: "应用", Action: map[string]*ice.Action{
|
||||
@ -102,18 +108,13 @@ var Index = &ice.Context{Name: "lark", Help: "机器人",
|
||||
m.Richs(APP, nil, arg[0], func(key string, value map[string]interface{}) {
|
||||
if now := time.Now().Unix(); kit.Format(value["token"]) == "" || kit.Int64(value["expire"]) < now {
|
||||
m.Cmdy(web.SPIDE, LARK, "/open-apis/auth/v3/tenant_access_token/internal/", "app_id", value["id"], "app_secret", value["mm"])
|
||||
value["token"] = m.Append("tenant_access_token")
|
||||
value["expire"] = kit.Int64(m.Append("expire")) + now
|
||||
m.Set("result")
|
||||
value["token"] = m.Append("tenant_access_token")
|
||||
m.Set(ice.MSG_RESULT)
|
||||
}
|
||||
m.Echo("%s", value["token"])
|
||||
})
|
||||
}},
|
||||
"watch": {Name: "watch user title text event...", Hand: func(m *ice.Message, arg ...string) {
|
||||
for _, v := range arg[2:] {
|
||||
m.Watch(v, m.Prefix("send"), arg[0], arg[1], v)
|
||||
}
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, key string, arg ...string) {
|
||||
m.Richs(APP, nil, kit.Select(kit.MDB_FOREACH, arg, 0), func(key string, value map[string]interface{}) {
|
||||
if len(arg) == 0 || arg[0] == "" {
|
||||
@ -124,122 +125,121 @@ var Index = &ice.Context{Name: "lark", Help: "机器人",
|
||||
})
|
||||
}},
|
||||
SHIP: {Name: "ship ship_id open_id text", Help: "组织", Action: map[string]*ice.Action{
|
||||
"user": {Name: "user id", Hand: func(m *ice.Message, arg ...string) {
|
||||
"info": {Name: "info ship_id", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Richs(APP, nil, "bot", func(key string, value map[string]interface{}) {
|
||||
m.Option("header", "Authorization", "Bearer "+m.Cmdx(APP, "token", "bot"), "Content-Type", "application/json")
|
||||
data := kit.UnMarshal(m.Cmdx(web.SPIDE, LARK, "raw", http.MethodGet, "/open-apis/contact/v1/department/user/list",
|
||||
"department_id", arg[0], "page_size", "100", "fetch_child", "true"))
|
||||
data := raw(m, "/open-apis/contact/v1/department/detail/batch_get",
|
||||
"department_ids", arg[0])
|
||||
|
||||
m.Debug(kit.Formats(data))
|
||||
kit.Fetch(kit.Value(data, "data.user_list"), func(index int, value map[string]interface{}) {
|
||||
msg := m.Cmd(m.Prefix("user"), value["open_id"])
|
||||
m.Push("name", msg.Append("name"))
|
||||
m.Push("open_id", msg.Append("open_id"))
|
||||
})
|
||||
})
|
||||
}},
|
||||
"info": {Name: "info id", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Richs(APP, nil, "bot", func(key string, value map[string]interface{}) {
|
||||
m.Option("header", "Authorization", "Bearer "+m.Cmdx(APP, "token", "bot"), "Content-Type", "application/json")
|
||||
data := kit.UnMarshal(m.Cmdx(web.SPIDE, LARK, "raw", http.MethodGet, "/open-apis/contact/v1/department/detail/batch_get", "department_ids", arg[0]))
|
||||
|
||||
m.Debug(kit.Formats(data))
|
||||
kit.Fetch(kit.Value(data, "data.department_infos"), func(index int, value map[string]interface{}) {
|
||||
m.Push("name", value)
|
||||
})
|
||||
})
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, key string, arg ...string) {
|
||||
if len(arg) == 0 {
|
||||
m.Option("header", "Authorization", "Bearer "+m.Cmdx(APP, "token", "bot"), "Content-Type", "application/json")
|
||||
data := kit.UnMarshal(m.Cmdx(web.SPIDE, LARK, "raw", http.MethodGet, "/open-apis/contact/v1/scope/get/"))
|
||||
kit.Fetch(kit.Value(data, "data.authed_departments"), func(index int, value string) {
|
||||
m.Push("ship_id", value)
|
||||
msg := m.Cmd(m.Prefix("ship"), "info", value)
|
||||
m.Push("name", msg.Append("name"))
|
||||
m.Push("chat_id", msg.Append("chat_id"))
|
||||
})
|
||||
return
|
||||
}
|
||||
if len(arg) == 1 {
|
||||
m.Cmdy(m.Prefix(SHIP), USER, arg[0])
|
||||
return
|
||||
}
|
||||
|
||||
m.Cmdy(m.Prefix(SEND), "open_id", arg[1], arg[2:])
|
||||
}},
|
||||
USER: {Name: "user code|email|mobile", Help: "用户", Hand: func(m *ice.Message, c *ice.Context, key string, arg ...string) {
|
||||
if !strings.HasPrefix(arg[0], "ou_") {
|
||||
us := []string{}
|
||||
for i := 0; i < len(arg); i++ {
|
||||
us = append(us, kit.Select("mobiles", "emails", strings.Contains(arg[i], "@")), arg[i])
|
||||
}
|
||||
post(m, "bot", "GET", "/open-apis/user/v1/batch_get_id", us)
|
||||
for i := 0; i < len(arg); i++ {
|
||||
m.Echo(m.Append(kit.Keys("data.mobile_users", arg[i], "0.open_id")))
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
m.Richs(APP, nil, "bot", func(key string, value map[string]interface{}) {
|
||||
m.Option("header", "Authorization", "Bearer "+m.Cmdx(APP, "token", "bot"), "Content-Type", "application/json")
|
||||
data := kit.UnMarshal(m.Cmdx(web.SPIDE, LARK, "raw", http.MethodGet, "/open-apis/contact/v1/user/batch_get", "open_ids", arg[0]))
|
||||
|
||||
m.Debug(kit.Formats(data))
|
||||
kit.Fetch(kit.Value(data, "data.user_infos"), func(index int, value map[string]interface{}) {
|
||||
m.Push("name", value["name"])
|
||||
m.Push("mobile", value["mobile"])
|
||||
m.Push("open_id", value["open_id"])
|
||||
})
|
||||
})
|
||||
}},
|
||||
GROUP: {Name: "group chat_id open_id text", Help: "群组", Action: map[string]*ice.Action{
|
||||
"user": {Name: "user id", Hand: func(m *ice.Message, arg ...string) {
|
||||
"user": {Name: "user ship_id", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Richs(APP, nil, "bot", func(key string, value map[string]interface{}) {
|
||||
m.Option("header", "Authorization", "Bearer "+m.Cmdx(APP, "token", "bot"), "Content-Type", "application/json")
|
||||
data := kit.UnMarshal(m.Cmdx(web.SPIDE, LARK, "raw", http.MethodGet, "/open-apis/chat/v4/info", "chat_id", arg[0]))
|
||||
data := raw(m, "/open-apis/contact/v1/department/user/list",
|
||||
"department_id", arg[0], "page_size", "100", "fetch_child", "true")
|
||||
|
||||
m.Debug(kit.Formats(data))
|
||||
kit.Fetch(kit.Value(data, "data.members"), func(index int, value map[string]interface{}) {
|
||||
msg := m.Cmd(m.Prefix("user"), value["open_id"])
|
||||
m.Push("name", msg.Append("name"))
|
||||
m.Push("open_id", msg.Append("open_id"))
|
||||
kit.Fetch(kit.Value(data, "data.user_list"), func(index int, value map[string]interface{}) {
|
||||
msg := m.Cmd(m.Prefix(USER), value[OPEN_ID])
|
||||
m.Push("avatar", m.Cmdx(mdb.RENDER, web.RENDER.IMG, msg.Append("avatar_72")))
|
||||
m.Push("gender", kit.Select("男", "女", msg.Append("gender") == "1"))
|
||||
m.Push(kit.MDB_NAME, msg.Append(kit.MDB_NAME))
|
||||
m.Push("description", msg.Append("description"))
|
||||
m.Push(OPEN_ID, msg.Append(OPEN_ID))
|
||||
})
|
||||
})
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, key string, arg ...string) {
|
||||
if len(arg) == 0 {
|
||||
// 组织列表
|
||||
data := raw(m, "/open-apis/contact/v1/scope/get/")
|
||||
kit.Fetch(kit.Value(data, "data.authed_departments"), func(index int, value string) {
|
||||
m.Push(SHIP_ID, value)
|
||||
msg := m.Cmd(m.Prefix(SHIP), "info", value)
|
||||
m.Push(kit.MDB_NAME, msg.Append(kit.MDB_NAME))
|
||||
m.Push("member_count", msg.Append("member_count"))
|
||||
m.Push(CHAT_ID, msg.Append(CHAT_ID))
|
||||
})
|
||||
m.Sort(kit.MDB_NAME)
|
||||
return
|
||||
}
|
||||
if len(arg) == 1 {
|
||||
// 用户列表
|
||||
m.Cmdy(m.Prefix(SHIP), USER, arg[0])
|
||||
return
|
||||
}
|
||||
// 用户通知
|
||||
m.Cmdy(m.Prefix(SEND), OPEN_ID, arg[1], arg[2:])
|
||||
}},
|
||||
USER: {Name: "user open_id|mobile|email", Help: "用户", Hand: func(m *ice.Message, c *ice.Context, key string, arg ...string) {
|
||||
if strings.HasPrefix(arg[0], "ou_") {
|
||||
m.Richs(APP, nil, "bot", func(key string, value map[string]interface{}) {
|
||||
m.Option("header", "Authorization", "Bearer "+m.Cmdx(APP, "token", "bot"), "Content-Type", "application/json")
|
||||
data := kit.UnMarshal(m.Cmdx(web.SPIDE, LARK, "raw", http.MethodGet, "/open-apis/chat/v4/list"))
|
||||
kit.Fetch(kit.Value(data, "data.groups"), func(index int, value map[string]interface{}) {
|
||||
m.Push("chat_id", value["chat_id"])
|
||||
m.Push("name", value["name"])
|
||||
m.Push("description", value["description"])
|
||||
m.Push("open_id", value["owner_open_id"])
|
||||
data := raw(m, "/open-apis/contact/v1/user/batch_get", "open_ids", arg[0])
|
||||
kit.Fetch(kit.Value(data, "data.user_infos"), func(index int, value map[string]interface{}) {
|
||||
m.Push("name", value)
|
||||
})
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
us := []string{}
|
||||
for i := 0; i < len(arg); i++ {
|
||||
us = append(us, kit.Select("mobiles", "emails", strings.Contains(arg[i], "@")), arg[i])
|
||||
}
|
||||
post(m, "bot", http.MethodGet, "/open-apis/user/v1/batch_get_id", us)
|
||||
for i := 0; i < len(arg); i++ {
|
||||
m.Echo(m.Append(kit.Keys("data.mobile_users", arg[i], "0.open_id")))
|
||||
}
|
||||
}},
|
||||
GROUP: {Name: "group chat_id open_id text", Help: "群组", Action: map[string]*ice.Action{
|
||||
"user": {Name: "user id", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Richs(APP, nil, "bot", func(key string, value map[string]interface{}) {
|
||||
data := raw(m, "/open-apis/chat/v4/info", "chat_id", arg[0])
|
||||
|
||||
kit.Fetch(kit.Value(data, "data.members"), func(index int, value map[string]interface{}) {
|
||||
msg := m.Cmd(m.Prefix(USER), value[OPEN_ID])
|
||||
m.Push("avatar", m.Cmdx(mdb.RENDER, web.RENDER.IMG, msg.Append("avatar_72")))
|
||||
m.Push("gender", kit.Select("男", "女", msg.Append("gender") == "2"))
|
||||
m.Push(kit.MDB_NAME, msg.Append(kit.MDB_NAME))
|
||||
m.Push("description", msg.Append("description"))
|
||||
m.Push(OPEN_ID, msg.Append(OPEN_ID))
|
||||
})
|
||||
})
|
||||
}},
|
||||
}, Hand: func(m *ice.Message, c *ice.Context, key string, arg ...string) {
|
||||
if len(arg) == 0 {
|
||||
// 群组列表
|
||||
m.Richs(APP, nil, "bot", func(key string, value map[string]interface{}) {
|
||||
m.Option("header", "Authorization", "Bearer "+m.Cmdx(APP, "token", "bot"), "Content-Type", "application/json")
|
||||
data := raw(m, "/open-apis/chat/v4/list")
|
||||
kit.Fetch(kit.Value(data, "data.groups"), func(index int, value map[string]interface{}) {
|
||||
m.Push(CHAT_ID, value[CHAT_ID])
|
||||
m.Push("avatar", m.Cmdx(mdb.RENDER, web.RENDER.IMG, value["avatar"]))
|
||||
m.Push(kit.MDB_NAME, value[kit.MDB_NAME])
|
||||
m.Push("description", value["description"])
|
||||
m.Push(OPEN_ID, value["owner_open_id"])
|
||||
})
|
||||
})
|
||||
m.Sort(kit.MDB_NAME)
|
||||
return
|
||||
}
|
||||
if len(arg) == 1 {
|
||||
// 用户列表
|
||||
m.Cmdy(m.Prefix(GROUP), USER, arg[0])
|
||||
return
|
||||
}
|
||||
m.Cmdy(m.Prefix(SEND), "chat_id", arg[0], arg[2:])
|
||||
}},
|
||||
RAND: {Name: "rand", Help: "随机", Hand: func(m *ice.Message, c *ice.Context, key string, arg ...string) {
|
||||
msg := m.Cmd(GROUP, "user", m.Option(OPEN_CHAT_ID))
|
||||
list := msg.Appendv("name")
|
||||
m.Echo(list[rand.Intn(len(list))])
|
||||
// 用户通知
|
||||
m.Cmdy(m.Prefix(SEND), CHAT_ID, arg[0], arg[2:])
|
||||
}},
|
||||
SEND: {Name: "send [chat_id|open_id|user_id|email] user [title] text", Help: "消息", Hand: func(m *ice.Message, c *ice.Context, key string, arg ...string) {
|
||||
var form = kit.Dict("content", kit.Dict())
|
||||
|
||||
switch arg[0] {
|
||||
case "chat_id", "open_id", "user_id", "email":
|
||||
case CHAT_ID, OPEN_ID, "user_id", "email":
|
||||
form[arg[0]], arg = arg[1], arg[2:]
|
||||
default:
|
||||
form["chat_id"], arg = arg[0], arg[1:]
|
||||
form[CHAT_ID], arg = arg[0], arg[1:]
|
||||
}
|
||||
|
||||
switch len(arg) {
|
||||
@ -247,10 +247,13 @@ var Index = &ice.Context{Name: "lark", Help: "机器人",
|
||||
case 1:
|
||||
kit.Value(form, "msg_type", "text")
|
||||
kit.Value(form, "content.text", arg[0])
|
||||
if arg[0] == "" {
|
||||
if strings.TrimSpace(arg[0]) == "" {
|
||||
return
|
||||
}
|
||||
default:
|
||||
if len(arg) == 2 && strings.TrimSpace(arg[1]) == "" {
|
||||
return
|
||||
}
|
||||
content := []interface{}{}
|
||||
line := []interface{}{}
|
||||
for _, v := range arg[1:] {
|
||||
@ -275,14 +278,15 @@ var Index = &ice.Context{Name: "lark", Help: "机器人",
|
||||
|
||||
post(m, "bot", "/open-apis/message/v4/send/", "data", kit.Formats(form))
|
||||
}},
|
||||
DUTY: {Name: "send [title] text", Help: "通告", Hand: func(m *ice.Message, c *ice.Context, key string, arg ...string) {
|
||||
m.Cmdy(SEND, m.Conf(APP, "meta.duty"), arg)
|
||||
}},
|
||||
TALK: {Name: "talk text", Help: "聊天", Hand: func(m *ice.Message, c *ice.Context, key string, arg ...string) {
|
||||
cmd := kit.Split(arg[0])
|
||||
if len(cmd) == 0 {
|
||||
m.Cmd(HOME)
|
||||
return
|
||||
}
|
||||
|
||||
// 用户权限
|
||||
m.Option(ice.MSG_USERNAME, m.Option("open_id"))
|
||||
m.Option(ice.MSG_USERNAME, m.Option(OPEN_ID))
|
||||
m.Option(ice.MSG_USERROLE, aaa.UserRole(m, m.Option(ice.MSG_USERNAME)))
|
||||
m.Info("%s: %s", m.Option(ice.MSG_USERROLE), m.Option(ice.MSG_USERNAME))
|
||||
|
||||
@ -295,15 +299,11 @@ var Index = &ice.Context{Name: "lark", Help: "机器人",
|
||||
if !m.Right(cmd) {
|
||||
// 没有权限
|
||||
m.Cmd(DUTY, m.Option(OPEN_CHAT_ID), m.Option("text_without_at_bot"))
|
||||
m.Cmd("home")
|
||||
m.Cmd(HOME)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
if len(cmd) == 0 {
|
||||
m.Cmd("home")
|
||||
return
|
||||
}
|
||||
// 执行命令
|
||||
msg := m.Cmd(cmd)
|
||||
if m.Hand = false; !msg.Hand {
|
||||
@ -312,17 +312,102 @@ var Index = &ice.Context{Name: "lark", Help: "机器人",
|
||||
if m.Hand = true; msg.Result() == "" {
|
||||
msg.Table()
|
||||
}
|
||||
if m.Hand = true; msg.Result() == "" {
|
||||
m.Cmd("home")
|
||||
m.Echo(msg.Result())
|
||||
}},
|
||||
DUTY: {Name: "duty [title] text", Help: "通告", Hand: func(m *ice.Message, c *ice.Context, key string, arg ...string) {
|
||||
m.Cmdy(SEND, m.Conf(APP, "meta.duty"), arg)
|
||||
}},
|
||||
RAND: {Name: "rand", Help: "随机", Hand: func(m *ice.Message, c *ice.Context, key string, arg ...string) {
|
||||
msg := m.Cmd(GROUP, "user", m.Option(OPEN_CHAT_ID))
|
||||
list := msg.Appendv("name")
|
||||
if strings.Contains(m.Option("content"), "誰") {
|
||||
m.Echo(strings.Replace(m.Option("content"), "誰", list[rand.Intn(len(list))], 1))
|
||||
return
|
||||
}
|
||||
m.Echo(msg.Result())
|
||||
m.Echo(list[rand.Intn(len(list))])
|
||||
}},
|
||||
HOME: {Name: "home", Help: "首页", Hand: func(m *ice.Message, c *ice.Context, key string, arg ...string) {
|
||||
m.Cmd(FORM, CHAT_ID, m.Option(OPEN_CHAT_ID), HOME, "应用列表",
|
||||
"官网首页", "url", "https://shylinux.com",
|
||||
"群里誰最帅", "cmd", "rand",
|
||||
"群里誰最美", "cmd", "rand",
|
||||
"date", "cmd", "date",
|
||||
"pwd", "cmd", "pwd",
|
||||
)
|
||||
}},
|
||||
FORM: {Name: "form chat_id|open_id|user_id|email user title [text [confirm|value|url arg...]]...", Help: "消息", Hand: func(m *ice.Message, c *ice.Context, key string, arg ...string) {
|
||||
var form = map[string]interface{}{"content": map[string]interface{}{}}
|
||||
switch arg[0] {
|
||||
case CHAT_ID, OPEN_ID, "user_id", "email":
|
||||
form[arg[0]], arg = arg[1], arg[2:]
|
||||
default:
|
||||
form[CHAT_ID], arg = arg[0], arg[1:]
|
||||
}
|
||||
|
||||
elements := []interface{}{}
|
||||
elements = append(elements, map[string]interface{}{
|
||||
"tag": "div", "text": map[string]interface{}{
|
||||
"tag": "plain_text", "content": arg[1],
|
||||
},
|
||||
})
|
||||
|
||||
actions := []interface{}{}
|
||||
for i := 2; i < len(arg); i++ {
|
||||
button := map[string]interface{}{
|
||||
"tag": "button", "text": map[string]interface{}{
|
||||
"tag": "plain_text", "content": arg[i],
|
||||
},
|
||||
"type": "default",
|
||||
}
|
||||
|
||||
content := arg[i]
|
||||
switch arg[i+1] {
|
||||
case "confirm":
|
||||
button[arg[i+1]], i = map[string]interface{}{
|
||||
"title": map[string]interface{}{"tag": "lark_md", "content": arg[i+2]},
|
||||
"text": map[string]interface{}{"tag": "lark_md", "content": arg[i+3]},
|
||||
}, i+3
|
||||
case "value":
|
||||
button[arg[i+1]], i = map[string]interface{}{
|
||||
arg[i+2]: arg[i+3],
|
||||
}, i+3
|
||||
case "url":
|
||||
button[arg[i+1]], i = arg[i+2], i+2
|
||||
default:
|
||||
button["value"], i = map[string]interface{}{
|
||||
arg[i+1]: arg[i+2],
|
||||
}, i+2
|
||||
}
|
||||
kit.Value(button, "value.content", content)
|
||||
kit.Value(button, "value.open_chat_id", m.Option(OPEN_CHAT_ID))
|
||||
kit.Value(button, "value.description", arg[1])
|
||||
kit.Value(button, "value.title", arg[0])
|
||||
|
||||
actions = append(actions, button)
|
||||
}
|
||||
elements = append(elements, map[string]interface{}{
|
||||
"tag": "action", "actions": actions,
|
||||
})
|
||||
|
||||
kit.Value(form, "msg_type", "interactive")
|
||||
kit.Value(form, "card", map[string]interface{}{
|
||||
"config": map[string]interface{}{
|
||||
"wide_screen_mode": true,
|
||||
},
|
||||
"header": map[string]interface{}{
|
||||
"title": map[string]interface{}{
|
||||
"tag": "lark_md", "content": arg[0],
|
||||
},
|
||||
},
|
||||
"elements": elements,
|
||||
})
|
||||
|
||||
post(m, "bot", "/open-apis/message/v4/send/", "data", kit.Formats(form))
|
||||
}},
|
||||
|
||||
web.LOGIN: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {}},
|
||||
"/msg": {Name: "/msg", Help: "聊天消息", Hand: func(m *ice.Message, c *ice.Context, key string, arg ...string) {
|
||||
data := m.Optionv(ice.MSG_USERDATA)
|
||||
if kit.Value(data, "action.tag") == "button" {
|
||||
if data := m.Optionv(ice.MSG_USERDATA); kit.Value(data, "action") != nil {
|
||||
kit.Fetch(kit.Value(data, "action.value"), func(key string, value string) {
|
||||
m.Option(key, value)
|
||||
})
|
||||
@ -338,7 +423,7 @@ var Index = &ice.Context{Name: "lark", Help: "机器人",
|
||||
if m.Hand = true; msg.Result() == "" {
|
||||
msg.Table()
|
||||
}
|
||||
m.Cmd(SEND, "chat_id", m.Option(OPEN_CHAT_ID), msg.Result())
|
||||
m.Cmd(SEND, CHAT_ID, m.Option(OPEN_CHAT_ID), msg.Result())
|
||||
return
|
||||
}
|
||||
|
||||
@ -368,112 +453,9 @@ var Index = &ice.Context{Name: "lark", Help: "机器人",
|
||||
}
|
||||
}
|
||||
}
|
||||
case "event_click":
|
||||
// 消息卡片
|
||||
m.Echo(kit.Format(map[string]interface{}{
|
||||
"header": map[string]interface{}{
|
||||
"title": map[string]interface{}{
|
||||
"tag": "lark_md", "content": "haha",
|
||||
},
|
||||
},
|
||||
"elements": []interface{}{
|
||||
map[string]interface{}{
|
||||
"tag": "action",
|
||||
"actions": []interface{}{
|
||||
map[string]interface{}{
|
||||
"tag": "button",
|
||||
"type": "default",
|
||||
"text": map[string]interface{}{
|
||||
"tag": "plain_text",
|
||||
"content": m.Time(),
|
||||
},
|
||||
"value": map[string]interface{}{
|
||||
"hi": "hello",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}))
|
||||
}
|
||||
}},
|
||||
|
||||
"home": {Name: "form chat_id|open_id|user_id|email user title [text [confirm|value|url arg...]]...", Help: "消息", Hand: func(m *ice.Message, c *ice.Context, key string, arg ...string) {
|
||||
m.Cmd("form", "chat_id", m.Option(OPEN_CHAT_ID), "home", "list", "pwd", "cmd", "pwd")
|
||||
}},
|
||||
FORM: {Name: "form chat_id|open_id|user_id|email user title [text [confirm|value|url arg...]]...", Help: "消息", Hand: func(m *ice.Message, c *ice.Context, key string, arg ...string) {
|
||||
var form = map[string]interface{}{"content": map[string]interface{}{}}
|
||||
switch arg[0] {
|
||||
case "chat_id", "open_id", "user_id", "email":
|
||||
form[arg[0]], arg = arg[1], arg[2:]
|
||||
default:
|
||||
form["chat_id"], arg = arg[0], arg[1:]
|
||||
}
|
||||
|
||||
elements := []interface{}{}
|
||||
elements = append(elements, map[string]interface{}{
|
||||
"tag": "div",
|
||||
"text": map[string]interface{}{
|
||||
"tag": "plain_text",
|
||||
"content": arg[1],
|
||||
},
|
||||
})
|
||||
|
||||
actions := []interface{}{}
|
||||
for i := 2; i < len(arg); i++ {
|
||||
button := map[string]interface{}{
|
||||
"tag": "button", "text": map[string]interface{}{
|
||||
"tag": "plain_text", "content": arg[i],
|
||||
},
|
||||
"type": "default",
|
||||
}
|
||||
|
||||
m.Debug("fuck %v", arg[i:])
|
||||
switch arg[i+1] {
|
||||
case "confirm":
|
||||
button[arg[i+1]], i = map[string]interface{}{
|
||||
"title": map[string]interface{}{"tag": "lark_md", "content": arg[i+2]},
|
||||
"text": map[string]interface{}{"tag": "lark_md", "content": arg[i+3]},
|
||||
}, i+3
|
||||
case "value":
|
||||
button[arg[i+1]], i = map[string]interface{}{
|
||||
arg[i+2]: arg[i+3],
|
||||
}, i+3
|
||||
case "url":
|
||||
button[arg[i+1]], i = arg[i+2], i+2
|
||||
default:
|
||||
button["value"], i = map[string]interface{}{
|
||||
arg[i+1]: arg[i+2],
|
||||
OPEN_CHAT_ID: m.Option(OPEN_CHAT_ID),
|
||||
}, i+2
|
||||
}
|
||||
|
||||
actions = append(actions, button)
|
||||
}
|
||||
elements = append(elements, map[string]interface{}{
|
||||
"tag": "action", "actions": actions,
|
||||
})
|
||||
|
||||
kit.Value(form, "msg_type", "interactive")
|
||||
kit.Value(form, "card", map[string]interface{}{
|
||||
"config": map[string]interface{}{
|
||||
"wide_screen_mode": true,
|
||||
// "title": map[string]interface{}{
|
||||
// "tag": "lark_md", "content": arg[1],
|
||||
// },
|
||||
},
|
||||
"header": map[string]interface{}{
|
||||
"title": map[string]interface{}{
|
||||
"tag": "lark_md", "content": arg[0],
|
||||
},
|
||||
},
|
||||
"elements": elements,
|
||||
})
|
||||
|
||||
post(m, "bot", "/open-apis/message/v4/send/", "data", kit.Formats(form))
|
||||
}},
|
||||
|
||||
"/sso": {Name: "/sso", Help: "消息", Hand: func(m *ice.Message, c *ice.Context, key string, arg ...string) {
|
||||
"/sso": {Name: "/sso", Help: "网页", Hand: func(m *ice.Message, c *ice.Context, key string, arg ...string) {
|
||||
if m.Options("code") {
|
||||
m.Richs(APP, nil, "bot", func(key string, value map[string]interface{}) {
|
||||
data := kit.UnMarshal(m.Cmdx(web.SPIDE, LARK, "raw", "/open-apis/authen/v1/access_token",
|
||||
|
Loading…
x
Reference in New Issue
Block a user