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.pngStep 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: truePart 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: TagScriptTagScript 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:
- Use Preview to see the final result
- Test all buttons in a private channel
- Verify role assignments work correctly
- 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:#rolesPart 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:
- Check TagScript syntax
- Verify role IDs are correct
- Confirm bot has necessary permissions
- Test in a different channel
Role Assignment Failing
Symptoms: Roles not added/removed Solutions:
- Check bot role hierarchy
- Verify "Manage Roles" permission
- Ensure target role is below bot's role
- Check for role permission conflicts
Permission Errors
Symptoms: Users get permission denied messages Solutions:
- Review
{require()}statements - Check user roles and permissions
- Verify channel-specific permissions
- Update permission checks in TagScript
Embed Not Displaying
Symptoms: Embed appears broken or empty Solutions:
- Check embed content length limits
- Verify image URLs are accessible
- Confirm proper markdown formatting
- 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 GamesStudy Server Organization
Title: "๐ Study Groups & Subjects"
Description: "Join study groups and get access to subject-specific resources!"
Buttons:
โข ๐งฎ Mathematics
โข ๐ฌ Science
โข ๐ Literature
โข ๐ป Computer Science
โข ๐ GeographyCreative Community Hub
Title: "๐จ Creative Roles"
Description: "Show off your creative interests and connect with like-minded members!"
Buttons:
โข ๐๏ธ Digital Art
โข ๐ธ Photography
โข โ๏ธ Writing
โข ๐ต Music
โข ๐ญ Voice ActingReady 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!