68 lines
No EOL
1.8 KiB
TypeScript
68 lines
No EOL
1.8 KiB
TypeScript
import { WebClient } from '@slack/web-api'
|
|
|
|
export default defineEventHandler(async (event) => {
|
|
const config = useRuntimeConfig()
|
|
|
|
if (!config.slackBotToken) {
|
|
return {
|
|
success: false,
|
|
error: 'Slack bot token not configured'
|
|
}
|
|
}
|
|
|
|
const client = new WebClient(config.slackBotToken)
|
|
|
|
try {
|
|
// Test basic API access
|
|
const authTest = await client.auth.test()
|
|
console.log('Auth test result:', authTest)
|
|
|
|
// Test if admin API is available
|
|
let adminApiAvailable = false
|
|
let adminError = null
|
|
|
|
try {
|
|
// Try to call admin.users.list to test admin API access
|
|
await client.admin.users.list({ limit: 1 })
|
|
adminApiAvailable = true
|
|
} catch (error: any) {
|
|
adminError = error.data?.error || error.message
|
|
console.log('Admin API test failed:', adminError)
|
|
}
|
|
|
|
// Test channel access if channel ID is configured
|
|
let channelAccess = false
|
|
let channelError = null
|
|
|
|
if (config.slackVettingChannelId) {
|
|
try {
|
|
const channelInfo = await client.conversations.info({
|
|
channel: config.slackVettingChannelId
|
|
})
|
|
channelAccess = !!channelInfo.channel
|
|
} catch (error: any) {
|
|
channelError = error.data?.error || error.message
|
|
}
|
|
}
|
|
|
|
return {
|
|
success: true,
|
|
botInfo: {
|
|
user: authTest.user,
|
|
team: authTest.team,
|
|
url: authTest.url
|
|
},
|
|
adminApiAvailable,
|
|
adminError: adminApiAvailable ? null : adminError,
|
|
channelAccess,
|
|
channelError: channelAccess ? null : channelError,
|
|
channelId: config.slackVettingChannelId || 'Not configured'
|
|
}
|
|
|
|
} catch (error: any) {
|
|
return {
|
|
success: false,
|
|
error: error.data?.error || error.message || 'Unknown error'
|
|
}
|
|
}
|
|
}) |