mirror of
https://github.com/ikechan8370/chatgpt-plugin.git
synced 2025-12-16 13:27:08 +00:00
feat: slack支持指定频道以便共享claude机器人
This commit is contained in:
parent
74f4b641e4
commit
a3ef75cdcc
3 changed files with 31 additions and 19 deletions
|
|
@ -469,6 +469,12 @@ export function supportGuoba () {
|
|||
bottomHelpMessage: 'Signing Secret。在Basic Information页面获取',
|
||||
component: 'Input'
|
||||
},
|
||||
{
|
||||
field: 'slackClaudeSpecifiedChannel',
|
||||
label: 'Slack指定频道',
|
||||
bottomHelpMessage: '为空时,将为每个qq号建立私有频道。若填写了,对话将发生在本频道。和其他人公用workspace时建议用这个',
|
||||
component: 'Input'
|
||||
},
|
||||
{
|
||||
field: 'slackClaudeEnableGlobalPreset',
|
||||
label: 'Claude使用全局设定',
|
||||
|
|
|
|||
|
|
@ -101,6 +101,7 @@ const defaultConfig = {
|
|||
slackClaudeUserId: '',
|
||||
slackClaudeEnableGlobalPreset: true,
|
||||
slackClaudeGlobalPreset: '',
|
||||
slackClaudeSpecifiedChannel: '',
|
||||
version: 'v2.5.6'
|
||||
}
|
||||
const _path = process.cwd()
|
||||
|
|
|
|||
|
|
@ -38,27 +38,32 @@ export class SlackClaudeClient {
|
|||
logger.warn('消息长度大于slack限制,长度剪切至3990')
|
||||
prompt = limitString(prompt, 3990, false)
|
||||
}
|
||||
let channel
|
||||
let qq = e.sender.user_id
|
||||
let channels = await this.app.client.conversations.list({
|
||||
token: this.config.slackUserToken,
|
||||
types: 'public_channel,private_channel'
|
||||
})
|
||||
let channel = channels.channels.filter(c => c.name === '' + qq)
|
||||
if (!channel || channel.length === 0) {
|
||||
let createChannelResponse = await this.app.client.conversations.create({
|
||||
token: this.config.slackUserToken,
|
||||
name: qq + '',
|
||||
is_private: true
|
||||
})
|
||||
channel = createChannelResponse.channel
|
||||
await this.app.client.conversations.invite({
|
||||
token: this.config.slackUserToken,
|
||||
channel: channel.id,
|
||||
users: Config.slackClaudeUserId
|
||||
})
|
||||
await delay(1000)
|
||||
if (Config.slackClaudeSpecifiedChannel) {
|
||||
channel = { id: Config.slackClaudeSpecifiedChannel }
|
||||
} else {
|
||||
channel = channel[0]
|
||||
let channels = await this.app.client.conversations.list({
|
||||
token: this.config.slackUserToken,
|
||||
types: 'public_channel,private_channel'
|
||||
})
|
||||
channel = channels.channels.filter(c => c.name === '' + qq)
|
||||
if (!channel || channel.length === 0) {
|
||||
let createChannelResponse = await this.app.client.conversations.create({
|
||||
token: this.config.slackUserToken,
|
||||
name: qq + '',
|
||||
is_private: true
|
||||
})
|
||||
channel = createChannelResponse.channel
|
||||
await this.app.client.conversations.invite({
|
||||
token: this.config.slackUserToken,
|
||||
channel: channel.id,
|
||||
users: Config.slackClaudeUserId
|
||||
})
|
||||
await delay(1000)
|
||||
} else {
|
||||
channel = channel[0]
|
||||
}
|
||||
}
|
||||
let conversationId = await redis.get(`CHATGPT:SLACK_CONVERSATION:${qq}`)
|
||||
if (!conversationId) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue