slack api - سلاك تنظيف جميع الرسائل(~ 8K) في القناة




slack-api (7)

إذا كنت تحب Python وحصلت على https://api.slack.com/custom-integrations/legacy-tokens التطبيق slack ، فيمكنك حذف جميع الرسائل الخاصة التي أرسلتها إلى مستخدم بما يلي:

import requests
import sys
import time
from json import loads

# config - replace the bit between quotes with your "token"
token = 'xoxp-854385385283-5438342854238520-513620305190-505dbc3e1c83b6729e198b52f128ad69'

# replace 'Carl' with name of the person you were messaging
dm_name = 'Carl'

# helper methods
api = 'https://slack.com/api/'
suffix = 'token={0}&pretty=1'.format(token)

def fetch(route, args=''):
  '''Make a GET request for data at `url` and return formatted JSON'''
  url = api + route + '?' + suffix + '&' + args
  return loads(requests.get(url).text)

# find the user whose dm messages should be removed
target_user = [i for i in fetch('users.list')['members'] if dm_name in i['real_name']]
if not target_user:
  print(' ! your target user could not be found')
  sys.exit()

# find the channel with messages to the target user
channel = [i for i in fetch('im.list')['ims'] if i['user'] == target_user[0]['id']]
if not channel:
  print(' ! your target channel could not be found')
  sys.exit()

# fetch and delete all messages
print(' * querying for channel', channel[0]['id'], 'with target user', target_user[0]['id'])
args = 'channel=' + channel[0]['id'] + '&limit=100'
result = fetch('conversations.history', args=args)
messages = result['messages']
print(' * has more:', result['has_more'], result.get('response_metadata', {}).get('next_cursor', ''))
while result['has_more']:
  cursor = result['response_metadata']['next_cursor']
  result = fetch('conversations.history', args=args + '&cursor=' + cursor)
  messages += result['messages']
  print(' * next page has more:', result['has_more'])

for idx, i in enumerate(messages):
  # tier 3 method rate limit: https://api.slack.com/methods/chat.delete
  # all rate limits: https://api.slack.com/docs/rate-limits#tiers
  time.sleep(1.05)
  result = fetch('chat.delete', args='channel={0}&ts={1}'.format(channel[0]['id'], i['ts']))
  print(' * deleted', idx+1, 'of', len(messages), 'messages', i['text'])
  if result.get('error', '') == 'ratelimited':
    print('\n ! sorry there have been too many requests. Please wait a little bit and try again.')
    sys.exit()

لدينا حاليًا قناة Slack مع رسائل ~ 8K كلها تأتي من تكامل Jenkins. هل هناك أي طريقة برمجية لحذف جميع الرسائل من تلك القناة؟ يمكن لواجهة الويب حذف 100 رسالة فقط في كل مرة.


اكتشفت بسرعة أن هناك شخصًا قام بالفعل بمساعدة: slack-cleaner لهذا الغرض.

بالنسبة لي هو فقط:

slack-cleaner --token=<TOKEN> --message --channel jenkins --user "*" --perform


بالنسبة لأي شخص آخر لا يحتاج إلى القيام بذلك بطريقة برمجية ، إليك طريقة سريعة :

(من المحتمل للمستخدمين المدفوعين فقط)

  1. افتح القناة في الويب أو تطبيق سطح المكتب ، وانقر فوق cog (أعلى اليمين).
  2. اختر "خيارات إضافية ..." لإظهار قائمة الأرشيف. ملاحظات
  3. حدد "تعيين سياسة الاحتفاظ برسالة القناة".
  4. اضبط "الاحتفاظ بجميع الرسائل لعدد معين من الأيام".
  5. يتم حذف جميع الرسائل الأقدم من هذا الوقت نهائيًا!

عادةً ما أقوم بتعيين هذا الخيار على "يوم واحد" لمغادرة القناة مع بعض السياق ، ثم أعود إلى الإعدادات أعلاه ، وقم بتعيين سياسة الاستبقاء الخاصة بها على "افتراضي" لمواصلة تخزينها من الآن فصاعدًا.

ملاحظات:
يشير Luke إلى: إذا كان الخيار مخفيًا: يجب عليك الانتقال إلى إعدادات مسؤول مساحة العمل العالمية وحفظ الرسائل وحذفها ، والتحقق من "السماح لأعضاء مساحة العمل بتجاوز هذه الإعدادات"


فيما يلي امتداد كروم رائع لحذف رسائل قناة / مجموعة / im الركود الخاصة بك - https://slackext.com/deleter ، حيث يمكنك تصفية الرسائل حسب النجوم أو النطاق الزمني أو المستخدمين. راجع للشغل ، كما أنه يدعم تحميل جميع الرسائل في الإصدار الأخير ، ثم يمكنك تحميل رسائل ~ 8K الخاصة بك كما تريد.



!!تحديث!!

as @ niels-van-reijmersdal metioned in comment.

تمت إزالة هذه الميزة. راجع هذا الموضوع لمزيد من المعلومات: twitter.com/slackhq/status/467182697979588608؟lang=en

!! نهاية التحديث!

فيما يلي إجابة لطيفة من SlackHQ عبر تويتر ، وهي تعمل بدون أي أشياء خاصة بجهات خارجية. https://twitter.com/slackhq/status/467182697979588608?lang=en

يمكنك الحذف المجمع عبر صفحة الأرشيف ( http://my.slack.com/archives ) لقناة معينة: ابحث عن "حذف الرسائل" في القائمة


slack-cleaner --token=<TOKEN> --message --channel jenkins --user "*"