any-env-code / watch.py
izuemon's picture
Update watch.py
1e95b68 verified
raw
history blame
1.96 kB
import os
import time
import requests
from datetime import datetime, timezone
URL = "https://desk-api.channel.io/desk/channels/200605/groups/519217/messages"
PARAMS = {
"sortOrder": "desc",
"limit": 36,
"logFolded": "false",
}
X_ACCOUNT = os.getenv("channeliotokenbot2")
if not X_ACCOUNT:
raise RuntimeError("環境変数 channeliotokenbot2 が設定されていません")
HEADERS = {
"accept": "application/json",
"accept-language": "ja",
"x-account": X_ACCOUNT,
}
def parse_updated_at(value):
if isinstance(value, (int, float)):
return datetime.fromtimestamp(value / 1000, tz=timezone.utc)
elif isinstance(value, str):
return datetime.fromisoformat(value.replace("Z", "+00:00"))
return None
def main():
while True:
try:
response = requests.get(
URL,
headers=HEADERS,
params=PARAMS,
timeout=30,
)
response.raise_for_status()
data = response.json()
messages = data.get("messages", [])
latest_msg = None
latest_time = None
for msg in messages:
plain_text = msg.get("plainText")
updated_at = msg.get("updatedAt")
if not plain_text or updated_at is None:
continue
updated_time = parse_updated_at(updated_at)
if not updated_time:
continue
if latest_time is None or updated_time > latest_time:
latest_time = updated_time
latest_msg = msg
if latest_msg:
print(latest_msg["plainText"])
else:
print("条件に合う message が見つかりませんでした")
except Exception as e:
print("エラー:", e)
time.sleep(10)
if __name__ == "__main__":
main()