我正在try 使用Slack Bolt PythonSDK阅读在一个私有的Slack频道上发布的消息.问题是,当我向此通道发布一些消息时,该方法根本不会被调用.

from typing import Optional
import slack_sdk
import os
import logging
from pathlib import Path
from dotenv import load_dotenv
from slack_bolt import App
from slack_bolt.adapter.socket_mode import SocketModeHandler

logging.basicConfig(level=logging.DEBUG)
env_path = Path('..') / '.env'
load_dotenv(dotenv_path=env_path)

SLACK_VERIFICATION_TOKEN = os.environ['SLACK_VERIFICATION_TOKEN']
SLACK_SIGNING_SECRET = os.environ['SLACK_SIGNING_SECRET']
SLACK_BOT_TOKEN = os.environ['SLACK_BOT_TOKEN']
SLACK_APP_TOKEN = os.environ['SLACK_APP_TOKEN']

app = App(token=SLACK_BOT_TOKEN, signing_secret=SLACK_SIGNING_SECRET)

@app.message("<Slack Channel Id>")  # Replace "your-channel-id" with your actual channel ID
 def handle_message(message, say):
     user = message["user"]
     text = message["text"]
     channel = message["channel"]

     # Do something with the received message
     print(f"Received message '{text}' from user {user} in channel {channel}")


if __name__ == "__main__":
    handler = SocketModeHandler(app, SLACK_APP_TOKEN)
    handler.start()

I have enabled subscriptions as well to events as message.channels event enter image description here

推荐答案

要从私有通道接收消息,您需要确保以下几个关键事项到位:

  1. Permissions:确保用户(在本例中是您的机器人或应用程序)具有访问频道历史记录的必要权限.这包括将channels:historygroups:history权限授予您的机器人的API令牌或用户帐户,以在私有通道中阅读消息.

  2. Membership in the Channel:您的机器人或应用程序需要被添加或邀请到私有频道.由于这是一个私有频道,访问受到限制,只有经过批准的成员或机器人才能加入.确保您的机器人已安装或添加到私有频道.

Python-3.x相关问答推荐

海象表达可以放在方括号中而不是括号中吗?

Pandas 中每行的最大值范围

安装grpcio时出现错误DeproationWarning:pkg_resource

Pandas -我们如何在一行中应用多个要求

我用Kivy创建的应用程序在安卓系统上运行时出错.(attributeerror:';class';对象没有属性';_javaclass__cls_storage';)

为什么 tkinter 在 tkinter 窗口外计算鼠标事件?

tkinter treeview 如何在获取所选项目时将设置的对象作为对象返回

继承自 Counter 与 dict 的类实例的 Deepcopy

如何获取自定义文件上传路径的对象ID?

Python中根据分组/ID对两个数据框进行映射,以更接近值的升序排列

如何将多输入数据加载器传递给单输入模型

asyncio.as_completed() 应该接受 `Iterable`,但如果输入是 `Generator` 就会崩溃?

例外:使用 Pyinstaller 时找不到 PyQt5 插件目录,尽管 PyQt5 甚至没有被使用

为什么不切换到 Python 3.x?

Python 异步调试示例

Pylint 给我最后的新行丢失

Python中的多行日志(log)记录

如何将numpy数组图像转换为字节?

什么是ANSI_X3.4-1968编码?

注册 Celery 基于类的任务