| """ |
| Example usage of Telegram tools in EvoAgentX |
| |
| This example demonstrates how to use the various Telegram tools |
| for messaging, searching, and file operations. |
| |
| Prerequisites: |
| 1. Telegram API credentials with the following setup: |
| - Create a new application at https://my.telegram.org/apps |
| - Get your API ID and API Hash |
| - Set up your phone number for authentication |
| |
| 2. Set your credentials as environment variables: |
| export TELEGRAM_API_ID="your_api_id_here" |
| export TELEGRAM_API_HASH="your_api_hash_here" |
| export TELEGRAM_PHONE="your_phone_number_here" |
| |
| Note: The TelegramToolkit will automatically retrieve the credentials from |
| the environment variables, making it compatible with AI agents. |
| """ |
|
|
| import os |
| from evoagentx.tools import TelegramToolkit |
|
|
| def main(): |
| |
| telegram_toolkit = TelegramToolkit() |
| |
| |
| if not telegram_toolkit.telegram_base.api_id or not telegram_toolkit.telegram_base.api_hash: |
| print("Please set TELEGRAM_API_ID and TELEGRAM_API_HASH environment variables") |
| print("Get your credentials from: https://my.telegram.org/apps") |
| return |
| |
| print("=== Telegram Tools Demo ===\n") |
| |
| |
| print("1. Listing Recent Chats") |
| list_chats_tool = telegram_toolkit.get_tool("list_recent_chats") |
| result = list_chats_tool(limit=5) |
| |
| if result["success"]: |
| print(f"Found {result['chats_count']} recent chats:") |
| for chat in result["chats"]: |
| print(f" - {chat['title']} ({chat['type']}) - ID: {chat['id']}") |
| |
| |
| if result["chats"]: |
| |
| for chat in result["chats"]: |
| if chat["id"] != 777000: |
| first_chat_id = chat["id"] |
| first_chat_title = chat["title"] |
| break |
| else: |
| |
| first_chat_id = result["chats"][0]["id"] |
| first_chat_title = result["chats"][0]["title"] |
| else: |
| print(f"Failed to list chats: {result['error']}") |
| return |
| |
| print("\n" + "="*50 + "\n") |
| |
| |
| print(f"2. Fetching Latest Messages from '{first_chat_title}'") |
| fetch_messages_tool = telegram_toolkit.get_tool("fetch_latest_messages") |
| result = fetch_messages_tool(contact_name=first_chat_title, limit=3) |
| |
| if result["success"]: |
| print(f"Found {result['messages_count']} recent messages:") |
| for msg in result["messages"]: |
| print(f" - [{msg['date']}] {msg['text'][:50]}...") |
| else: |
| print(f"Failed to fetch messages: {result['error']}") |
| |
| print("\n" + "="*50 + "\n") |
| |
| |
| print("3. Searching Messages by Keyword") |
| search_tool = telegram_toolkit.get_tool("search_messages_by_keyword") |
| result = search_tool(contact_name=first_chat_title, keyword="Hello", limit=3) |
| |
| if result["success"]: |
| print(f"Found {result['matches_count']} messages containing 'hello':") |
| for msg in result["messages"]: |
| print(f" - [{msg['date']}] {msg['text'][:50]}...") |
| else: |
| print(f"Failed to search messages: {result['error']}") |
| |
| print("\n" + "="*50 + "\n") |
| |
| |
| print("4. Finding Files in Chat") |
| find_files_tool = telegram_toolkit.get_tool("find_and_retrieve_file") |
| result = find_files_tool(contact_name="Telegram", filename_query="Kafka") |
| |
| if result["success"]: |
| print(f"Found {result['files_found']} files matching 'Kafka':") |
| for file_info in result["files"]: |
| print(f" - {file_info['filename']} ({file_info['file_size']} bytes, {file_info['mime_type']})") |
| else: |
| print(f"Failed to find files: {result['error']}") |
| |
| print("\n" + "="*50 + "\n") |
| |
| |
| print("5. Send Test Message by Contact Name") |
| send_tool = telegram_toolkit.get_tool("send_message_by_name") |
| |
| |
| test_contact_name = "Vinay Kumar" |
| test_message = "Hello! This is a test message from EvoAgentX Telegram tools. π€" |
| |
| print(f"Sending test message to contact: '{test_contact_name}'") |
| result = send_tool(contact_name=test_contact_name, message_text=test_message) |
| |
| if result["success"]: |
| print(f"β
Message sent successfully!") |
| print(f" Message ID: {result['message_id']}") |
| print(f" Sent to: {result['chat']['title']}") |
| print(f" Message: {result['message_text']}") |
| print(f" Sent at: {result['sent_at']}") |
| else: |
| print(f"β Failed to send message: {result['error']}") |
| if 'clarification_needed' in result: |
| print(" Available contacts:") |
| for contact in result['clarification_needed']: |
| print(f" - {contact}") |
| |
| print("\n" + "="*50 + "\n") |
| |
| |
| print("6. Summarize Contact Messages") |
| summarize_tool = telegram_toolkit.get_tool("summarize_contact_messages") |
| |
| |
| test_contact_name = "Telegram" |
| print(f"Summarizing recent messages from contact: '{test_contact_name}'") |
| result = summarize_tool(contact_name=test_contact_name, limit=10) |
| |
| if result["success"]: |
| print(f"β
Message summary generated successfully!") |
| print(f" Contact: {result['contact']['title']}") |
| print(f" Messages analyzed: {result['messages_analyzed']}") |
| print(f" Summary:") |
| print(f" {result['summary']}") |
| if result['recent_messages']: |
| print(f" Recent messages preview:") |
| for i, msg in enumerate(result['recent_messages'][:3], 1): |
| direction = "You" if msg['is_outgoing'] else test_contact_name |
| print(f" {i}. [{msg['date']}] {direction}: {msg['text'][:50]}...") |
| else: |
| print(f"β Failed to summarize messages: {result['error']}") |
| if 'clarification_needed' in result: |
| print(" Available contacts:") |
| for contact in result['clarification_needed']: |
| print(f" - {contact}") |
| |
| print("\n" + "=" * 50) |
| |
| |
| print("\n7. Download File Tool") |
| print("Downloading file from contact:", test_contact_name) |
| |
| download_tool = telegram_toolkit.get_tool("download_file") |
| download_result = download_tool( |
| contact_name=test_contact_name, |
| filename_query="Kafka", |
| download_dir="downloads" |
| ) |
| |
| if download_result["success"]: |
| print(f"β
File downloaded successfully!") |
| print(f" π File: {download_result['filename']}") |
| print(f" π Path: {download_result['file_path']}") |
| print(f" π Size: {download_result['file_size']} bytes") |
| print(f" π Directory: {download_result['download_dir']}") |
| else: |
| print(f"β Download failed: {download_result['error']}") |
| if 'clarification_needed' in download_result: |
| print(" Available contacts:") |
| for contact in download_result['clarification_needed']: |
| print(f" - {contact}") |
| |
| print("\n" + "=" * 50) |
| |
| |
| print("\n8. Read File Content Tool") |
| print("Reading file content from contact:", test_contact_name) |
| |
| read_tool = telegram_toolkit.get_tool("read_file_content") |
| |
| |
| content_tests = [ |
| ("summary", "Document summary"), |
| ("first_lines", "First 3 lines"), |
| ("last_lines", "Last 3 lines") |
| ] |
| |
| for content_type, description in content_tests: |
| print(f"\n π {description}:") |
| read_result = read_tool( |
| contact_name=test_contact_name, |
| filename_query="Kafka", |
| content_type=content_type, |
| lines_count=3 |
| ) |
| |
| if read_result["success"]: |
| print(f" β
{description} extracted successfully!") |
| print(f" π Content preview:") |
| content_preview = read_result["content"][:200] + "..." if len(read_result["content"]) > 200 else read_result["content"] |
| print(f" {content_preview}") |
| |
| if "file_info" in read_result: |
| file_info = read_result["file_info"] |
| print(f" π File info: {file_info}") |
| else: |
| print(f" β Failed to read {description}: {read_result['error']}") |
| |
| print("\n=== Demo Complete ===") |
| print("All 8 Telegram tools are working correctly!") |
| print("β
Core Tools (6): fetch_latest_messages, search_messages_by_keyword, send_message_by_name, list_recent_chats, find_and_retrieve_file, summarize_contact_messages") |
| print("β
Enhanced File Tools (2): download_file, read_file_content") |
|
|
| if __name__ == "__main__": |
| main() |
|
|