1
0
forked from x/icebergs
This commit is contained in:
shylinux 2021-11-09 23:52:12 +08:00
parent 7b92e41750
commit 2242d218d6
5 changed files with 29 additions and 23 deletions

View File

@ -5,6 +5,7 @@ import (
ice "shylinux.com/x/icebergs" ice "shylinux.com/x/icebergs"
"shylinux.com/x/icebergs/base/mdb" "shylinux.com/x/icebergs/base/mdb"
"shylinux.com/x/icebergs/base/tcp"
"shylinux.com/x/icebergs/base/web" "shylinux.com/x/icebergs/base/web"
kit "shylinux.com/x/toolkits" kit "shylinux.com/x/toolkits"
) )
@ -20,17 +21,17 @@ const APP = "app"
func init() { func init() {
Index.Merge(&ice.Context{Configs: map[string]*ice.Config{ Index.Merge(&ice.Context{Configs: map[string]*ice.Config{
APP: {Name: APP, Help: "服务配置", Value: kit.Data( APP: {Name: APP, Help: "应用", Value: kit.Data(
kit.MDB_SHORT, APPID, kit.MDB_FIELD, "time,appid,appmm,duty,token,expire", kit.MDB_SHORT, APPID, kit.MDB_FIELD, "time,appid,duty,token,expire",
LARK, "https://open.feishu.cn/", tcp.SERVER, "https://open.feishu.cn/",
)}, )},
}, Commands: map[string]*ice.Command{ }, Commands: map[string]*ice.Command{
ice.CTX_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
m.Cmd(web.SPIDE, mdb.CREATE, LARK, m.Conf(APP, kit.Keym(LARK)))
}},
APP: {Name: "app appid auto token login", Help: "应用", Action: ice.MergeAction(map[string]*ice.Action{ APP: {Name: "app appid auto token login", Help: "应用", Action: ice.MergeAction(map[string]*ice.Action{
ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) {
m.Cmd(web.SPIDE, mdb.CREATE, LARK, m.Config(tcp.SERVER))
}},
LOGIN: {Name: "login appid appmm duty", Help: "登录", Hand: func(m *ice.Message, arg ...string) { LOGIN: {Name: "login appid appmm duty", Help: "登录", Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(mdb.INSERT, m.Prefix(APP), "", mdb.HASH, arg) m.Cmdy(mdb.INSERT, m.PrefixKey(), "", mdb.HASH, arg)
}}, }},
TOKEN: {Name: "token appid", Help: "令牌", Hand: func(m *ice.Message, arg ...string) { TOKEN: {Name: "token appid", Help: "令牌", Hand: func(m *ice.Message, arg ...string) {
msg := m.Cmd(APP, m.Option(APPID)) msg := m.Cmd(APP, m.Option(APPID))
@ -38,7 +39,7 @@ func init() {
res := m.Cmd(web.SPIDE, LARK, "/open-apis/auth/v3/tenant_access_token/internal/", res := m.Cmd(web.SPIDE, LARK, "/open-apis/auth/v3/tenant_access_token/internal/",
APP_ID, msg.Append(APPID), "app_secret", msg.Append(APPMM)) APP_ID, msg.Append(APPID), "app_secret", msg.Append(APPMM))
m.Cmd(mdb.MODIFY, m.Prefix(APP), "", mdb.HASH, m.OptionSimple(APPID), m.Cmd(mdb.MODIFY, m.PrefixKey(), "", mdb.HASH, m.OptionSimple(APPID),
TOKEN, res.Append("tenant_access_token"), EXPIRE, now+kit.Int64(res.Append(EXPIRE))) TOKEN, res.Append("tenant_access_token"), EXPIRE, now+kit.Int64(res.Append(EXPIRE)))
m.Echo(res.Append("tenant_access_token")) m.Echo(res.Append("tenant_access_token"))
return return
@ -48,6 +49,5 @@ func init() {
}, mdb.HashAction()), Hand: func(m *ice.Message, c *ice.Context, key string, arg ...string) { }, mdb.HashAction()), Hand: func(m *ice.Message, c *ice.Context, key string, arg ...string) {
mdb.HashSelect(m, arg...) mdb.HashSelect(m, arg...)
}}, }},
}, }})
})
} }

View File

@ -9,8 +9,8 @@ const DUTY = "duty"
func init() { func init() {
Index.Merge(&ice.Context{Commands: map[string]*ice.Command{ Index.Merge(&ice.Context{Commands: map[string]*ice.Command{
DUTY: {Name: "duty [title] text auto", Help: "通告", Hand: func(m *ice.Message, c *ice.Context, key string, arg ...string) { DUTY: {Name: "duty [title] text auto", Help: "通告", Hand: func(m *ice.Message, c *ice.Context, key string, arg ...string) {
duty := m.Cmd(APP, m.Option(APP_ID)).Append(DUTY) msg := m.Cmd(APP, m.Option(APP_ID))
m.Cmdy(SEND, arg[0], duty, arg[1:]) m.Cmdy(SEND, msg.Append(APPID), msg.Append(DUTY), arg)
}}, }},
}}) }})
} }

View File

@ -1,23 +1,22 @@
title "飞书机器人" title "飞书机器人"
refer "官网" ` refer `
官网 https://shylinux.com/chat/lark/sso
官网 https://www.feishu.cn/ 官网 https://www.feishu.cn/
文档 https://open.feishu.cn/document/uQjL04CN/ucDOz4yN4MjL3gzM 文档 https://open.feishu.cn/document/uQjL04CN/ucDOz4yN4MjL3gzM
源码 https://shylinux.com/x/icebergs/blob/master/misc/lark/lark.go
后台管理 https://www.feishu.cn/admin 后台管理 https://www.feishu.cn/admin
应用管理 https://open.feishu.cn/app 应用管理 https://open.feishu.cn/app
` `
qrcode `https://applink.feishu.cn/client/bot/open?appId=cli_9d3b9d146a7cd103` qrcode `https://applink.feishu.cn/client/bot/open?appId=cli_9d3b9d146a7cd103`
chapter "应用" chapter "应用"
field "app" web.chat.lark.app field "应用" web.chat.lark.app
field "group" web.chat.lark.group field "群组" web.chat.lark.group
field "company" web.chat.lark.company field "组织" web.chat.lark.company
field "duty" web.chat.lark.duty field "值班" web.chat.lark.duty
chapter "权限" chapter "权限"
field sess aaa.sess field "共享" web.share
field user aaa.user field "会话" aaa.sess
field "用户" aaa.user
chapter "项目" chapter "项目"
field "icebergs" web.code.git.trend args `icebergs` field "icebergs" web.code.git.trend args `icebergs`

View File

@ -60,7 +60,7 @@ func init() {
if _send_text(m, form, arg...) { if _send_text(m, form, arg...) {
msg := _lark_post(m, appid, "/open-apis/message/v4/send/", web.SPIDE_DATA, kit.Format(form)) msg := _lark_post(m, appid, "/open-apis/message/v4/send/", web.SPIDE_DATA, kit.Format(form))
m.Push("time", m.Time()) m.Push(kit.MDB_TIME, m.Time())
m.Push("message_id", msg.Append("data.message_id")) m.Push("message_id", msg.Append("data.message_id"))
} }
}}, }},

View File

@ -5,6 +5,7 @@ import (
ice "shylinux.com/x/icebergs" ice "shylinux.com/x/icebergs"
"shylinux.com/x/icebergs/base/aaa" "shylinux.com/x/icebergs/base/aaa"
"shylinux.com/x/icebergs/base/cli"
"shylinux.com/x/icebergs/base/web" "shylinux.com/x/icebergs/base/web"
kit "shylinux.com/x/toolkits" kit "shylinux.com/x/toolkits"
) )
@ -24,7 +25,13 @@ func init() {
} }
// 执行命令 // 执行命令
if m.Cmdy(cmds); len(m.Resultv()) > 0 { if m.Cmdy(cmds); m.Result() != "" && m.Result(1) != ice.ErrNotFound {
m.Cmd(SEND, m.Option(APP_ID), m.Option(OPEN_CHAT_ID), m.Result())
return
}
if m.Length() == 0 {
m.Set(ice.MSG_RESULT)
m.Cmdy(cli.SYSTEM, cmds)
m.Cmd(SEND, m.Option(APP_ID), m.Option(OPEN_CHAT_ID), m.Result()) m.Cmd(SEND, m.Option(APP_ID), m.Option(OPEN_CHAT_ID), m.Result())
return return
} }