Spaces:
Running
Running
| 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() | |