Skip to content

Instantly share code, notes, and snippets.

@mochipon
Last active December 27, 2018 02:12
Show Gist options
  • Save mochipon/f389f0e38747080acea0eae445d45b39 to your computer and use it in GitHub Desktop.
Save mochipon/f389f0e38747080acea0eae445d45b39 to your computer and use it in GitHub Desktop.

これはなに

あるユーザに送信したダイレクトメッセージを過去○日分一気に削除するスクリプト(デフォルトで 14 日間)

つかいかた

$ virtualenv -p python3 v
$ . v/bin/activate
$ pip install requests.txt
$ WEBEX_TEAMS_ACCESS_TOKEN='......' EMAIL='hogehoge@example.com' python run.py
certifi==2018.11.29
chardet==3.0.4
future==0.17.1
idna==2.8
requests==2.21.0
requests-toolbelt==0.8.0
urllib3==1.24.1
webexteamssdk==1.0.3
from datetime import datetime, timedelta, timezone
import os
from webexteamssdk import WebexTeamsAPI
# 思い出を消したいお相手のメールアドレス
EMAIL = os.environ["EMAIL"]
# 思い出を消したい日数
DAYS = 14
api = WebexTeamsAPI()
def get_datetime_bydeltaDays():
JST = timezone(timedelta(hours=+9), 'JST')
delta = timedelta(days=DAYS)
ret = datetime.now(JST) - delta
return ret
def get_datetime_byISOstr(iso_str):
# dt = timezone aware, UTC
dt = datetime.strptime("{}{}".format(iso_str, "+0000"), '%Y-%m-%dT%H:%M:%S.%fZ%z')
return dt
def get_people_displayName(email):
items = list(api.people.list(email=EMAIL))
if items:
return items[0].displayName
return None
def get_roomId_bydisplayName(displayName):
rooms = api.rooms.list(type='direct', max=1000)
for room in rooms:
if room.title == displayName:
return room.id
return None
def get_mymessages_byroomId(roomId):
ret = []
me = api.people.me()
afterdatetime = get_datetime_bydeltaDays()
messages = api.messages.list(roomId=roomId, max=1000)
for message in messages:
if get_datetime_byISOstr(message.created) < afterdatetime:
break
if message.personId == me.id:
ret.append(message)
return ret
def main():
target_displayname = get_people_displayName(EMAIL)
print("{name} さんに送信したメッセージを過去 {days} 日分削除します".format(name=target_displayname, days=DAYS))
target_roomid = get_roomId_bydisplayName(target_displayname)
target_messages = get_mymessages_byroomId(target_roomid)
print("削除対象は {} 件です".format(len(target_messages)))
for i, message in enumerate(target_messages):
api.messages.delete(messageId=message.id)
# i starts from 0
print("削除しました:{now}/{total} 件".format(now=i+1, total=len(target_messages)))
if __name__ == '__main__':
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment