使用Slack CLI部署应用后无法接收DM及Manifest配置不生效问题
解决Slack Deno应用部署后DM功能失效及Manifest配置不生效问题
一、Manifest配置不生效的修复
Slack CLI v2.x会自动管理Manifest文件,手动修改生成的配置文件后,执行slack deploy大概率会被CLI覆盖——因为它会根据项目里的slack.json、触发器、工作流等自动生成Manifest。
正确操作方式:
- 直接修改项目根目录的
manifest.ts(TS项目),在其中明确定义App Home配置:import { Manifest } from "deno-slack-sdk/mod.ts"; export default Manifest({ name: "你的应用名称", description: "你的应用描述", icon: "assets/icon.png", features: { app_home: { home_tab_enabled: true, messages_tab_enabled: true, messages_tab_read_only_enabled: false, // 这里固定设置为false }, }, // 必须添加DM相关权限 oauth_scopes: [ "app_mentions:read", "chat:write", "commands", "im:history", "im:read", "im:write", "users:read", ], settings: { event_subscriptions: { bot_events: [ "message.im", // 订阅DM消息事件 ], }, }, }); - 先执行
slack manifest validate验证配置合法性,再执行slack deploy,此时CLI会基于你定义的manifest.ts生成正确的Manifest,不会覆盖你的配置。
二、部署后找不到App Settings页面的解决
部署后的应用设置不在本地路径,要通过Slack开发者控制台访问:
- 打开Slack开发者控制台,找到你部署的目标应用
- 进入「App Home」配置页,确认「Messages Tab」的配置是否和Manifest定义一致
- 如果配置不一致,手动在控制台修改后点击「Save Changes」,再重新执行
slack deploy同步配置
三、确保DM消息能被正确接收
除了Manifest的权限配置,还要做好事件监听和触发器设置:
- 新建事件处理函数,处理
message.im事件:import { SlackFunction } from "deno-slack-sdk/mod.ts"; export default SlackFunction("handle_dm_message", async ({ event, client }) => { const { text, user } = event as any; // 这里添加你的签到签退逻辑 console.log(`收到用户${user}的DM:${text}`); await client.chat.postMessage({ channel: event.channel, text: `已收到你的消息:${text}`, }); return { completed: true }; }); - 在
triggers/目录下创建事件触发器,订阅message.im事件:import { Trigger } from "deno-slack-api/types.ts"; import HandleDmMessage from "../functions/handle_dm_message.ts"; const trigger: Trigger<typeof HandleDmMessage.definition> = { type: "event", name: "接收用户DM消息", description: "用户向机器人发DM时触发", workflow: `#/functions/${HandleDmMessage.definition.callback_id}`, event: { event_type: "slack#/events/message.im", // 过滤掉机器人自己发的消息 filter: { version: 1, root: { operator: "NOT", operand: { operator: "EQ", left: "{{data.user}}", right: "{{data.bot_id}}", }, }, }, }, }; export default trigger; - 执行
slack triggers create --trigger-def triggers/dm_trigger.ts创建触发器,再重新部署应用。
四、检查部署后的权限有效性
部署后在Slack开发者控制台的「OAuth & Permissions」页面,确认已添加im:history、im:read、im:write权限,且已订阅message.im事件。如果权限缺失,点击「Reinstall to Workspace」重新安装应用,确保权限生效。
内容的提问来源于stack exchange,提问作者ygh
相关产品推荐
相关产品推荐

