|
|
|
|
@ -7,27 +7,29 @@ from core.tools.tool.builtin_tool import BuiltinTool
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class DiscordWebhookTool(BuiltinTool):
|
|
|
|
|
def _invoke(self, user_id: str, tool_parameters: dict[str, Any]
|
|
|
|
|
) -> Union[ToolInvokeMessage, list[ToolInvokeMessage]]:
|
|
|
|
|
def _invoke(
|
|
|
|
|
self, user_id: str, tool_parameters: dict[str, Any]
|
|
|
|
|
) -> Union[ToolInvokeMessage, list[ToolInvokeMessage]]:
|
|
|
|
|
"""
|
|
|
|
|
Incoming Webhooks
|
|
|
|
|
API Document:
|
|
|
|
|
https://discord.com/developers/docs/resources/webhook#execute-webhook
|
|
|
|
|
Incoming Webhooks
|
|
|
|
|
API Document:
|
|
|
|
|
https://discord.com/developers/docs/resources/webhook#execute-webhook
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
content = tool_parameters.get('content', '')
|
|
|
|
|
content = tool_parameters.get("content", "")
|
|
|
|
|
if not content:
|
|
|
|
|
return self.create_text_message('Invalid parameter content')
|
|
|
|
|
return self.create_text_message("Invalid parameter content")
|
|
|
|
|
|
|
|
|
|
webhook_url = tool_parameters.get('webhook_url', '')
|
|
|
|
|
webhook_url = tool_parameters.get("webhook_url", "")
|
|
|
|
|
|
|
|
|
|
if not webhook_url.startswith('https://discord.com/api/webhooks/'):
|
|
|
|
|
if not webhook_url.startswith("https://discord.com/api/webhooks/"):
|
|
|
|
|
return self.create_text_message(
|
|
|
|
|
f'Invalid parameter webhook_url ${webhook_url}, \
|
|
|
|
|
not a valid Discord webhook URL')
|
|
|
|
|
f"Invalid parameter webhook_url ${webhook_url}, \
|
|
|
|
|
not a valid Discord webhook URL"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
headers = {
|
|
|
|
|
'Content-Type': 'application/json',
|
|
|
|
|
"Content-Type": "application/json",
|
|
|
|
|
}
|
|
|
|
|
params = {}
|
|
|
|
|
payload = {
|
|
|
|
|
@ -35,15 +37,13 @@ class DiscordWebhookTool(BuiltinTool):
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
try:
|
|
|
|
|
res = httpx.post(webhook_url, headers=headers,
|
|
|
|
|
params=params, json=payload)
|
|
|
|
|
res = httpx.post(webhook_url, headers=headers, params=params, json=payload)
|
|
|
|
|
if res.is_success:
|
|
|
|
|
return self.create_text_message(
|
|
|
|
|
"Text message was sent successfully")
|
|
|
|
|
return self.create_text_message("Text message was sent successfully")
|
|
|
|
|
else:
|
|
|
|
|
return self.create_text_message(
|
|
|
|
|
f"Failed to send the text message, \
|
|
|
|
|
status code: {res.status_code}, response: {res.text}")
|
|
|
|
|
status code: {res.status_code}, response: {res.text}"
|
|
|
|
|
)
|
|
|
|
|
except Exception as e:
|
|
|
|
|
return self.create_text_message(
|
|
|
|
|
"Failed to send message through webhook. {}".format(e))
|
|
|
|
|
return self.create_text_message("Failed to send message through webhook. {}".format(e))
|
|
|
|
|
|