From e644709311baaea7158e3f9cf8ffeda9a6c66ff4 Mon Sep 17 00:00:00 2001 From: bucolucas Date: Sat, 17 Aug 2024 19:10:09 -0500 Subject: [PATCH 1/2] Add TelegramKeyboardTool to create and manage Telegram keyboards --- tools/telegram_keyboard_tool.py | 47 +++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 tools/telegram_keyboard_tool.py diff --git a/tools/telegram_keyboard_tool.py b/tools/telegram_keyboard_tool.py new file mode 100644 index 0000000..6d0f859 --- /dev/null +++ b/tools/telegram_keyboard_tool.py @@ -0,0 +1,47 @@ +from .base_tool import BaseTool + +class TelegramKeyboardTool(BaseTool): + def __init__(self): + self.keyboard = [] + + def get_functions(self): + return [ + { + "name": "add_button", + "description": "Add a button to the keyboard.", + "parameters": { + "type": "object", + "properties": { + "text": { + "type": "string", + "description": "The text on the button." + } + }, + "required": ["text"] + } + }, + { + "name": "get_keyboard", + "description": "Get the current keyboard layout.", + "parameters": { + "type": "object", + "properties": {} + } + } + ] + + def execute(self, function_name, **kwargs): + if function_name == "add_button": + return self._add_button(kwargs["text"]) + elif function_name == "get_keyboard": + return self._get_keyboard() + else: + error_message = f"Unknown function: {function_name}" + return error_message + + def _add_button(self, text): + self.keyboard.append({"text": text}) + return f"Button '{text}' added." + + def _get_keyboard(self): + return self.keyboard \ No newline at end of file From d5ac479506da6a7c972accd3eae898feefa24438 Mon Sep 17 00:00:00 2001 From: bucolucas Date: Sat, 17 Aug 2024 19:10:18 -0500 Subject: [PATCH 2/2] Add TelegramKeyboardTool for creating Telegram keyboard layouts --- tools/telegram_keyboard_tool.py | 58 +++++++++++++++++---------------- 1 file changed, 30 insertions(+), 28 deletions(-) diff --git a/tools/telegram_keyboard_tool.py b/tools/telegram_keyboard_tool.py index 6d0f859..aca4c0e 100644 --- a/tools/telegram_keyboard_tool.py +++ b/tools/telegram_keyboard_tool.py @@ -1,47 +1,49 @@ +# tools/telegram_keyboard_tool.py + from .base_tool import BaseTool class TelegramKeyboardTool(BaseTool): - def __init__(self): - self.keyboard = [] - + def get_functions(self): return [ { - "name": "add_button", - "description": "Add a button to the keyboard.", + "name": "create_keyboard", + "description": "Create a Telegram keyboard layout.", "parameters": { "type": "object", "properties": { - "text": { - "type": "string", - "description": "The text on the button." + "buttons": { + "type": "array", + "items": { + "type": "array", + "items": { + "type": "string", + "description": "Text on the button." + }, + "description": "A row of buttons." + }, + "description": "List of rows of buttons." } }, - "required": ["text"] - } - }, - { - "name": "get_keyboard", - "description": "Get the current keyboard layout.", - "parameters": { - "type": "object", - "properties": {} + "required": ["buttons"] } } ] def execute(self, function_name, **kwargs): - if function_name == "add_button": - return self._add_button(kwargs["text"]) - elif function_name == "get_keyboard": - return self._get_keyboard() + if function_name == "create_keyboard": + return self._create_keyboard(kwargs.get("buttons")) else: - error_message = f"Unknown function: {function_name}" - return error_message + return f"Unknown function: {function_name}" - def _add_button(self, text): - self.keyboard.append({"text": text}) - return f"Button '{text}' added." + def _create_keyboard(self, buttons): + if not isinstance(buttons, list): + return "Invalid input: 'buttons' must be a list of lists." - def _get_keyboard(self): - return self.keyboard \ No newline at end of file + keyboard = { + "keyboard": buttons, + "resize_keyboard": True, + "one_time_keyboard": True + } + + return keyboard