gpt4 book ai didi

python - 拉取历史 channel 消息python

转载 作者:太空宇宙 更新时间:2023-11-04 11:17:16 24 4
gpt4 key购买 nike

我正在尝试通过从我所属的松弛 channel 中提取消息/响应来创建一个小型数据集。我想使用 python 从 channel 中提取数据,但是我无法确定我的 api key 。我在 slack 上创建了一个应用程序,但我不确定如何找到我的 api key 。我看到了我的客户端密码、签名密码和验证 token ,但找不到我的 API key

这是我认为我正在努力完成的一个基本示例:

import slack
sc = slack.SlackClient("api key")
sc.api_call(
"channels.history",
channel="C0XXXXXX"
)

如果可能的话,我也愿意手动下载数据。非常感谢任何帮助。

最佳答案

消息

请参阅下面的示例代码,了解如何使用 Python 从 channel 中提取消息。

  • 它使用官方 Python Slack 库并调用 带有分页的 conversations_history。因此它将与任何类型的 channel ,如果需要。
  • 结果将作为 JSON 数组写入文件。
  • 您可以指定要检索的 channel 和最大消息数

线程

请注意, conversations.history 端点不会返回线程消息。对于您要为其检索消息的每个线程,必须通过一次调用 conversations.replies 来检索它们。

通过检查消息中的 threads_ts 属性,可以在每个 channel 的消息中识别线程。如果它存在,则有一个线程附加到它。有关线程如何工作的更多详细信息,请参阅此 page

ID

虽然此脚本不会用名称替换 ID。如果您需要,这里有一些关于如何实现它的指导:

  • 您需要替换用户、 channel 、机器人、用户组的 ID(如果是付费计划)
  • 您可以分别使用 users_listconversations_listusergroups_list 从 API 获取用户、 channel 和用户组的列表,机器人需要使用 bots_info 一一获取(如果需要)
  • ID 出现在消息中的许多地方:
    • 用户顶级属性
    • bot_id 顶级属性
    • 作为任何允许文本的属性中的链接,例如用户的 <@U12345678> 或 channel 的 <#C1234567>。这些可以出现在顶级 text 属性中,也可以出现在附件和 block 中。

示例代码

import os
import slack
import json
from time import sleep

CHANNEL = "C12345678"
MESSAGES_PER_PAGE = 200
MAX_MESSAGES = 1000

# init web client
client = slack.WebClient(token=os.environ['SLACK_TOKEN'])

# get first page
page = 1
print("Retrieving page {}".format(page))
response = client.conversations_history(
channel=CHANNEL,
limit=MESSAGES_PER_PAGE,
)
assert response["ok"]
messages_all = response['messages']

# get additional pages if below max message and if they are any
while len(messages_all) + MESSAGES_PER_PAGE <= MAX_MESSAGES and response['has_more']:
page += 1
print("Retrieving page {}".format(page))
sleep(1) # need to wait 1 sec before next call due to rate limits
response = client.conversations_history(
channel=CHANNEL,
limit=MESSAGES_PER_PAGE,
cursor=response['response_metadata']['next_cursor']
)
assert response["ok"]
messages = response['messages']
messages_all = messages_all + messages

print(
"Fetched a total of {} messages from channel {}".format(
len(messages_all),
CHANNEL
))

# write the result to a file
with open('messages.json', 'w', encoding='utf-8') as f:
json.dump(
messages_all,
f,
sort_keys=True,
indent=4,
ensure_ascii=False
)

关于python - 拉取历史 channel 消息python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56744339/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com