#!/usr/bin/env python3 """Test script for Discord embed functionality.""" import os import sys from dotenv import load_dotenv # Add the src directory to the Python path sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'src')) from umabot.discord_client import DiscordWebhookClient def test_discord_embed(): """Test the Discord embed functionality.""" # Load environment variables load_dotenv() # Get Discord configuration webhook_url = os.getenv("DISCORD_WEBHOOK_URL") channel_id = os.getenv("DISCORD_LOG_CHANNEL_ID") if not webhook_url: print("โŒ Error: DISCORD_WEBHOOK_URL not found in environment variables") print("Please set DISCORD_WEBHOOK_URL in your .env file") return False print(f"๐Ÿ”— Using webhook URL: {webhook_url[:50]}...") if channel_id: print(f"๐Ÿ“บ Using channel ID: {channel_id}") else: print("๐Ÿ“บ Using webhook's default channel") # Initialize Discord client discord_client = DiscordWebhookClient(webhook_url, channel_id) print("\n๐Ÿงช Testing Discord embed functionality...") # Test 1: Reflair action print("\n1๏ธโƒฃ Testing reflair action embed...") success1 = discord_client.log_moderation_action( action="Reflair to Art", submission_id="test123", author="testuser", title="Beautiful artwork of my favorite character!", reason="The post contains primarily visual artwork content with minimal textual roleplay elements, focusing more on showcasing the artwork rather than engaging in character-driven narrative or dialogue.", post_url="https://reddit.com/r/test/comments/test123/" ) if success1: print("โœ… Reflair embed sent successfully!") else: print("โŒ Failed to send reflair embed") # Test 2: Removal action print("\n2๏ธโƒฃ Testing removal action embed...") success2 = discord_client.log_moderation_action( action="Removed", submission_id="test456", author="anotheruser", title="Short post with minimal content", reason="Content needs more development, short length, no plot development, lacks creativity, minimal detail, no character development, content that doesn't meet community standards", post_url="https://reddit.com/r/test/comments/test456/" ) if success2: print("โœ… Removal embed sent successfully!") else: print("โŒ Failed to send removal embed") # Test 3: Long reason truncation (simulating real behavior) print("\n3๏ธโƒฃ Testing long reason truncation...") success3 = discord_client.log_moderation_action( action="Removed", submission_id="test789", author="longreasonuser", title="Another test post", reason="This is a very long reason that should be truncated in the actual implementation because the intelligent moderator truncates reasons to 100 characters plus ellipsis when they are too long, just like this one which is definitely longer than 100 characters and should demonstrate the truncation behavior for content that needs more development", post_url="https://reddit.com/r/test/comments/test789/" ) if success3: print("โœ… Long reason embed sent successfully!") else: print("โŒ Failed to send long reason embed") # Test 4: Custom embed print("\n4๏ธโƒฃ Testing custom embed...") custom_embed = { "title": "๐Ÿงช Test Embed", "description": "This is a test embed to verify the Discord webhook functionality.", "color": 0x0099ff, # Blue color "fields": [ { "name": "๐Ÿ“Š Test Status", "value": "โœ… All systems operational", "inline": True }, { "name": "๐Ÿ”ง Bot Version", "value": "UmaBot v1.0", "inline": True }, { "name": "๐Ÿ“ Test Details", "value": "This embed was generated by the test script to verify Discord webhook integration.", "inline": False } ], "footer": { "text": "UmaBot Test Script" } } success4 = discord_client.send_embed(custom_embed) if success4: print("โœ… Custom embed sent successfully!") else: print("โŒ Failed to send custom embed") # Summary print("\n๐Ÿ“Š Test Summary:") print(f" Reflair embed: {'โœ… Success' if success1 else 'โŒ Failed'}") print(f" Removal embed: {'โœ… Success' if success2 else 'โŒ Failed'}") print(f" Long reason embed: {'โœ… Success' if success3 else 'โŒ Failed'}") print(f" Custom embed: {'โœ… Success' if success4 else 'โŒ Failed'}") total_success = sum([success1, success2, success3, success4]) print(f"\n๐ŸŽฏ Total: {total_success}/4 tests passed") if total_success == 4: print("๐ŸŽ‰ All tests passed! Discord embed functionality is working correctly.") return True else: print("โš ๏ธ Some tests failed. Check your Discord webhook configuration.") return False def main(): """Main function.""" print("๐Ÿค– UmaBot Discord Embed Test Script") print("=" * 50) try: success = test_discord_embed() sys.exit(0 if success else 1) except KeyboardInterrupt: print("\n\nโน๏ธ Test interrupted by user") sys.exit(1) except Exception as e: print(f"\nโŒ Unexpected error: {e}") sys.exit(1) if __name__ == "__main__": main()