Guides
Creating Custom Embeds

Creating Custom Embeds Tutorial

Learn how to create stunning, interactive embeds with ZeroDegree's powerful embed system. This tutorial will guide you through the entire process, from basic embeds to advanced TagScript integration.

What You'll Build

By the end of this tutorial, you'll have created:

  • A professional server information embed
  • Interactive role assignment buttons
  • Dynamic content using TagScript
  • A complete welcome panel system

Prerequisites

  • ZeroDegree bot invited to your server
  • Manage Messages permission
  • Basic understanding of Discord permissions

Part 1: Creating Your First Embed

Step 1: Start the Creation Process

/embed create name:"Server Info" description:"Main server information panel"

This opens the embed creation modal where you'll enter basic information.

Step 2: Fill Out Basic Information

In the modal, enter:

  • Title: "Welcome to Our Server!"
  • Description: "Everything you need to know about our community"
  • Color: "#0099ff" (or any hex color you prefer)
  • Author: "Server Staff"
  • Footer: "Updated daily โ€ข Server Rules Apply"

Click Submit to proceed to the builder interface.

Step 3: Understanding the Builder Interface

After submitting, you'll see:

  • Preview of your embed
  • Action buttons for customization:
    • ๐Ÿ–ผ Add Images - Thumbnail and main images
    • ๐Ÿ“ Add Fields - Structured information
    • ๐Ÿ”˜ Add Buttons - Interactive elements
    • โœ… Finish & Save - Complete the embed

Part 2: Adding Visual Elements

Step 4: Add Images

Click ๐Ÿ–ผ Add Images to enhance your embed visually.

Image Types:

  • Thumbnail - Small image in top-right corner
  • Main Image - Large image at bottom of embed

Best Practices:

  • Use high-quality images (PNG/JPG)
  • Keep thumbnails under 1MB
  • Use your server icon for thumbnail
  • Use banners or artwork for main image

Example URLs:

Thumbnail: https://cdn.discordapp.com/icons/GUILD_ID/ICON_HASH.png
Main Image: https://example.com/server-banner.png

Step 5: Add Structured Fields

Click ๐Ÿ“ Add Fields to add organized information.

Field Structure:

  • Name - Field title (max 256 characters)
  • Value - Field content (max 1024 characters)
  • Inline - Display fields side by side

Example Fields:

Name: "๐Ÿ“‹ Server Rules"
Value: "1. Be respectful\n2. No spam\n3. Follow Discord ToS"
Inline: false

Name: "๐ŸŽฎ Game Channels"
Value: "#minecraft\n#valorant\n#general-gaming"
Inline: true

Name: "๐Ÿ”ง Utility Channels"  
Value: "#bot-commands\n#suggestions\n#help"
Inline: true

Part 3: Creating Interactive Buttons

Step 6: Add Your First Button

Click ๐Ÿ”˜ Add Buttons to make your embed interactive.

Button Configuration:

  • Label - Text displayed on button
  • Style - Visual appearance (Primary, Secondary, Success, Danger, Link)
  • Emoji - Optional emoji (e.g., ๐ŸŽญ, ๐ŸŽฎ, ๐Ÿ“)
  • Action Type - What the button does

Step 7: Create a Role Assignment Button

Example: Gaming Role Button

Label: "Get Gaming Role"
Style: Primary (Blue)
Emoji: ๐ŸŽฎ
Action Type: TagScript

TagScript Code:

{require(verified):You must be verified to get roles!}
{role(toggle):GAMING_ROLE_ID}
{if({member.roles.has(GAMING_ROLE_ID)}):
โœ… Gaming role assigned! Welcome to the gaming community.
|:
โŒ Gaming role removed. You can get it back anytime!
}

Replace GAMING_ROLE_ID with your actual role ID

Step 8: Add Multiple Role Buttons

Create additional buttons for different roles:

Art Role Button:

{role(toggle):ART_ROLE_ID}
{if({member.roles.has(ART_ROLE_ID)}):
๐ŸŽจ Art role assigned! Check out #art-showcase
|:
๐ŸŽจ Art role removed.
}

Event Notifications Button:

{role(toggle):EVENTS_ROLE_ID}
{if({member.roles.has(EVENTS_ROLE_ID)}):
๐Ÿ“… You'll now receive event notifications!
|:
๐Ÿ“… Event notifications disabled.
}

Part 4: Advanced TagScript Features

Step 9: Permission-Based Buttons

Create buttons that check permissions:

Moderator-Only Button:

{require(Manage Messages):Only moderators can use this button!}
Welcome to the staff area, {user.mention}!

Role-Specific Content:

{if({member.roles.has(VIP_ROLE_ID)}):
Welcome VIP member! You have access to exclusive channels.
|:
{if({member.roles.has(PREMIUM_ROLE_ID)}):
Hello Premium member! Enjoy your benefits.
|:
Welcome regular member! Consider upgrading for more features.
}
}

Step 10: Dynamic Information Buttons

Server Stats Button:

๐Ÿ“Š **Server Statistics**

๐Ÿ‘ฅ Members: {guild.membercount}
๐Ÿท๏ธ Your Roles: {member.roles.length}
๐Ÿ“… Joined: {member.joinedAt:YYYY-MM-DD}
โฐ Server Time: {now:HH:mm UTC}

User Info Button:

๐Ÿ‘ค **Your Information**

๐Ÿ†” User ID: {user.id}
๐Ÿ“› Nickname: {member.displayName}
๐ŸŽ‚ Account Created: {user.createdAt:YYYY-MM-DD}
๐Ÿ“… Joined Server: {member.joinedAt:YYYY-MM-DD}

Part 5: Finalizing Your Embed

Step 11: Preview and Test

Before finalizing:

  1. Use Preview to see the final result
  2. Test all buttons in a private channel
  3. Verify role assignments work correctly
  4. Check permissions and error handling

Step 12: Save and Deploy

Click โœ… Finish & Save to save your embed.

Deployment Options:

/embed send embed:"Server Info" channel:#welcome
/embed send embed:"Server Info" channel:#roles

Part 6: Advanced Embed Examples

Example 1: FAQ Embed with Collapsible Sections

TagScript for FAQ Button:

โ“ **Frequently Asked Questions**

**Q: How do I get roles?**
A: Click the role buttons in this embed!

**Q: Where can I report issues?**
A: Use our ticket system in #support

**Q: What are the server rules?**
A: Check #rules for complete guidelines

Need more help? Open a support ticket!

Example 2: Event Registration System

Event Button TagScript:

{require(events):You need the @Events role first!}
{if({member.roles.has(EVENT_ATTENDEE_ROLE)}):
โŒ You're already registered for this event!
|:
{role(add):EVENT_ATTENDEE_ROLE}
โœ… Successfully registered for the event!
๐Ÿ“… Event: Community Game Night
โฐ Time: Saturday 8PM EST
๐Ÿ“ Channel: #event-voice
}

Example 3: Ticket System Integration

Support Ticket Button:

๐ŸŽซ **Support Ticket Created**

Your ticket has been created: #ticket-{user.id}
A staff member will assist you shortly.

**What to expect:**
โ€ข Response within 2-4 hours
โ€ข Professional assistance
โ€ข Complete confidentiality

Thank you for your patience!

Best Practices & Tips

Design Guidelines

Visual Hierarchy:

  • Use consistent colors throughout your server
  • Limit embeds to 3-4 fields for readability
  • Choose emojis that match your server theme
  • Keep button labels short and clear

Content Organization:

  • Group related buttons together
  • Use descriptive field names
  • Write clear, concise descriptions
  • Include helpful instructions

TagScript Optimization

Performance Tips:

  • Use specific role checks instead of broad permissions
  • Cache frequently accessed data
  • Minimize API calls in scripts
  • Test scripts thoroughly before deployment

Security Considerations:

  • Always validate user permissions
  • Use {require()} for sensitive actions
  • Implement rate limiting for buttons
  • Log important actions for audit trails

Maintenance and Updates

Regular Reviews:

  • Update role IDs if roles change
  • Refresh outdated information
  • Test buttons after server changes
  • Monitor button usage statistics

Version Control:

  • Keep backup copies of complex embeds
  • Document TagScript changes
  • Use descriptive embed names
  • Track embed performance metrics

Troubleshooting Common Issues

Button Not Working

Symptoms: Button clicks don't respond Solutions:

  1. Check TagScript syntax
  2. Verify role IDs are correct
  3. Confirm bot has necessary permissions
  4. Test in a different channel

Role Assignment Failing

Symptoms: Roles not added/removed Solutions:

  1. Check bot role hierarchy
  2. Verify "Manage Roles" permission
  3. Ensure target role is below bot's role
  4. Check for role permission conflicts

Permission Errors

Symptoms: Users get permission denied messages Solutions:

  1. Review {require()} statements
  2. Check user roles and permissions
  3. Verify channel-specific permissions
  4. Update permission checks in TagScript

Embed Not Displaying

Symptoms: Embed appears broken or empty Solutions:

  1. Check embed content length limits
  2. Verify image URLs are accessible
  3. Confirm proper markdown formatting
  4. Test with minimal embed first

Next Steps

Congratulations! You've created your first interactive embed. Here's what to explore next:

Advanced Features

  • Conditional Logic - Create dynamic responses
  • User Data Storage - Remember user preferences
  • External APIs - Fetch live data
  • Scheduled Updates - Automatic content updates

Integration Opportunities

  • Welcome System - Combine with welcome messages
  • Giveaway Integration - Entry requirement checking
  • Moderation Tools - Quick action buttons
  • Analytics Tracking - Monitor user interactions

Community Resources

  • Template Library - Browse community creations
  • TagScript Examples - Learn from others' code
  • Support Server - Get help with complex projects
  • Video Tutorials - Watch advanced techniques

Sample Templates

Gaming Community Roles Panel

Title: "๐ŸŽฎ Choose Your Games"
Description: "Select roles for your favorite games to get notifications and access to game-specific channels!"

Buttons:
โ€ข ๐Ÿ”ซ Valorant
โ€ข โ›๏ธ Minecraft  
โ€ข ๐Ÿš— Rocket League
โ€ข ๐ŸŽฏ Overwatch
โ€ข ๐ŸŽฒ Board Games

Study Server Organization

Title: "๐Ÿ“š Study Groups & Subjects"
Description: "Join study groups and get access to subject-specific resources!"

Buttons:
โ€ข ๐Ÿงฎ Mathematics
โ€ข ๐Ÿ”ฌ Science
โ€ข ๐Ÿ“– Literature
โ€ข ๐Ÿ’ป Computer Science
โ€ข ๐ŸŒ Geography

Creative Community Hub

Title: "๐ŸŽจ Creative Roles"
Description: "Show off your creative interests and connect with like-minded members!"

Buttons:
โ€ข ๐Ÿ–Œ๏ธ Digital Art
โ€ข ๐Ÿ“ธ Photography
โ€ข โœ๏ธ Writing
โ€ข ๐ŸŽต Music
โ€ข ๐ŸŽญ Voice Acting

Ready to create your own embeds? Start with the basic tutorial above and gradually work your way up to more complex TagScript implementations. Remember, the key to great embeds is starting simple and adding complexity as you learn!


Need help with your embed? Join our support server and share your creation for feedback and assistance!