@@ -45,37 +45,43 @@ export const AddRepo = karin.command(
4545 return await e . reply ( '未找到该平台, 请重试' )
4646 }
4747
48- let repoInfo = await db . repo . GetRepo (
49- platformName ,
50- owner ,
51- repo ,
52- botId ,
53- groupId ,
54- )
48+ let [ repoInfo , sessionInfo ] = await Promise . all ( [
49+ db . repo . GetRepo ( platformName , owner , repo ) ,
50+ db . session . GetSession ( botId , groupId ) ,
51+ ] )
5552 if ( ! repoInfo ) {
56- await db . repo . AddRepo ( platformName , owner , repo , botId , groupId )
57- repoInfo = await db . repo . GetRepo (
58- platformName ,
59- owner ,
60- repo ,
61- botId ,
62- groupId ,
63- )
53+ await db . repo . AddRepo ( platformName , owner , repo )
54+ repoInfo = await db . repo . GetRepo ( platformName , owner , repo )
55+ }
56+ if ( ! sessionInfo ) {
57+ await db . session . AddSession ( botId , groupId )
58+ sessionInfo = await db . session . GetSession ( botId , groupId )
6459 }
65- if ( ! repoInfo ) return await e . reply ( '添加订阅仓库失败,请重试' )
60+ if ( ! repoInfo || ! sessionInfo )
61+ return await e . reply ( '添加订阅仓库失败,请重试' )
6662
6763 let msg = `添加订阅仓库成功, 平台: ${ platformName } , 仓库: ${ owner } /${ repo } , 订阅类型: ${ eventType . join ( ',' ) } `
6864
6965 const PushEvent = eventType . includes ( EventType . Push )
7066 if ( PushEvent ) {
7167 const repoClient = client . repo ( )
72- const PushBranch = ( await repoClient . info ( { owner, repo } ) ) . defaultBranch
73- const pushRepo = await db . push . GetPush ( repoInfo . id , PushBranch )
68+ let defaultBranch : string
69+ try {
70+ const repo_info = await repoClient . info ( { owner, repo } )
71+ defaultBranch = repo_info . defaultBranch
72+ } catch ( e ) {
73+ defaultBranch = 'main'
74+ }
75+ const pushRepo = await db . push . GetPush (
76+ repoInfo . id ,
77+ sessionInfo . id ,
78+ defaultBranch ,
79+ )
7480 if ( ! pushRepo ) {
75- await db . push . AddPush ( repoInfo . id , PushBranch )
76- msg += `, 分支: ${ PushBranch } `
81+ await db . push . AddPush ( repoInfo . id , sessionInfo . id , defaultBranch )
82+ msg += `, 分支: ${ defaultBranch } `
7783 } else {
78- msg = `仓库 ${ owner } /${ repo } 的推送订阅已存在,平台: ${ platformName } , 分支: ${ PushBranch } `
84+ msg = `仓库 ${ owner } /${ repo } 的推送订阅已存在, 请勿重复订阅 `
7985 }
8086 }
8187
@@ -91,6 +97,50 @@ export const AddRepo = karin.command(
9197 } ,
9298)
9399
100+ export const BindRepo = karin . command (
101+ / ^ # ? g i t (?: 绑 定 | b i n d ) (?: 仓 库 | r e p o ) (?: ( [ a - z A - Z ] + ) : ( [ ^ / \s ] + ) \/ ( [ ^ : \s ] + ) ) $ / i,
102+ async ( e ) => {
103+ const [ , platform , owner , repo ] = e . msg . match ( BindRepo ! . reg ) !
104+ let platformName = Platform . GitHub
105+
106+ switch ( platform . toLowerCase ( ) ) {
107+ case 'github' :
108+ platformName = Platform . GitHub
109+ break
110+ case 'gitcode' :
111+ platformName = Platform . GitCode
112+ break
113+ case 'gitee' :
114+ platformName = Platform . Gitee
115+ break
116+ case 'cnb' :
117+ case 'cnbcool' :
118+ platformName = Platform . CnbCool
119+ break
120+ default :
121+ return await e . reply ( '未找到该平台, 请重试' )
122+ }
123+ let repoInfo = await db . repo . GetRepo ( platformName , owner , repo )
124+ if ( ! repoInfo ) {
125+ await db . repo . AddRepo ( platformName , owner , repo )
126+ repoInfo = await db . repo . GetRepo ( platformName , owner , repo )
127+ }
128+ if ( ! repoInfo ) {
129+ return await e . reply ( '绑定仓库失败, 请重试' )
130+ }
131+ const BindInfo = await db . bind . GetBind ( e . groupId )
132+ if ( BindInfo ) {
133+ return await e . reply ( '该群已绑定该仓库, 请勿重复绑定' )
134+ }
135+ await db . bind . AddBind ( e . groupId , repoInfo . id )
136+ await e . reply ( `绑定仓库成功, 平台: ${ platformName } , 仓库: ${ owner } /${ repo } ` )
137+ } ,
138+ {
139+ name : 'admin:bindRepo' ,
140+ event : 'message.group' ,
141+ } ,
142+ )
143+
94144export const RemoveRepo = karin . command (
95145 / ^ # ? g i t (?: 移 除 | 删 除 | r e m o v e ) (?: 订 阅 仓 库 | r e p o ) (?: ( [ a - z A - Z ] + ) : ( [ ^ / \s ] + ) \/ ( [ ^ : \s ] + ) ) $ / i,
96146 async ( e ) => {
@@ -117,17 +167,14 @@ export const RemoveRepo = karin.command(
117167 return await e . reply ( '未找到该平台, 请重试' )
118168 }
119169
120- const repoInfo = await db . repo . GetRepo (
121- platformName ,
122- botId ,
123- groupId ,
124- owner ,
125- repo ,
126- )
127- if ( ! repoInfo ) {
170+ const [ repoInfo , sessionInfo ] = await Promise . all ( [
171+ db . repo . GetRepo ( platformName , owner , repo ) ,
172+ db . session . GetSession ( botId , groupId ) ,
173+ ] )
174+ if ( ! repoInfo || ! sessionInfo ) {
128175 return await e . reply ( '未找到该订阅仓库, 删除失败,请重试' )
129176 }
130- await db . push . RemovePush ( repoInfo . id )
177+ await db . push . RemovePush ( repoInfo . id , sessionInfo . id )
131178
132179 await e . reply ( `删除订阅仓库成功` )
133180 } ,
0 commit comments