| 
					
				 | 
			
			
				@@ -0,0 +1,44 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+from datetime import datetime 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+from typing import Any, Union 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import pytz 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+from core.tools.entities.tool_entities import ToolInvokeMessage 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+from core.tools.errors import ToolInvokeError 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+from core.tools.tool.builtin_tool import BuiltinTool 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+class LocaltimeToTimestampTool(BuiltinTool): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    def _invoke( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        user_id: str, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        tool_parameters: dict[str, Any], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ) -> Union[ToolInvokeMessage, list[ToolInvokeMessage]]: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Convert localtime to timestamp 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        localtime = tool_parameters.get("localtime") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        timezone = tool_parameters.get("timezone", "Asia/Shanghai") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if not timezone: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            timezone = None 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        time_format = "%Y-%m-%d %H:%M:%S" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        timestamp = self.localtime_to_timestamp(localtime, time_format, timezone) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if not timestamp: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return self.create_text_message(f"Invalid localtime: {localtime}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return self.create_text_message(f"{timestamp}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @staticmethod 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    def localtime_to_timestamp(localtime: str, time_format: str, local_tz=None) -> int | None: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        try: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if local_tz is None: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                local_tz = datetime.now().astimezone().tzinfo 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if isinstance(local_tz, str): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                local_tz = pytz.timezone(local_tz) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            local_time = datetime.strptime(localtime, time_format) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            localtime = local_tz.localize(local_time) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            timestamp = int(localtime.timestamp()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return timestamp 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        except Exception as e: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            raise ToolInvokeError(str(e)) 
			 |