📅

Scheduled Events Builder

Create and manage Discord scheduled events programmatically. Set times, locations, and descriptions for voice, stage, and external events.

1-100 characters. Required.

Up to 1000 characters. Optional.

The ID of the voice channel where the event will take place.

When the event starts. Required.

When the event ends. Optional for voice/stage events.

Optional cover image URL or buffer. Recommended size: 960x540 pixels.

🔊
Scheduled
Voice

Event Name

3 Interested

Preview of how your event will appear in Discord

// Discord.js v14+ - Create Scheduled Event
const { GuildScheduledEventEntityType, GuildScheduledEventPrivacyLevel } = require('discord.js');

// Get the guild
const guild = client.guilds.cache.get('YOUR_GUILD_ID');

// Create the event
const scheduledEvent = await guild.scheduledEvents.create({
  name: 'Event Name',
  // description: 'Optional event description',
  scheduledStartTime: new Date(Date.now() + 86400000), // Start time
  // scheduledEndTime: Optional for voice/stage
  privacyLevel: GuildScheduledEventPrivacyLevel.GuildOnly,
  entityType: GuildScheduledEventEntityType.Voice,
  channel: 'CHANNEL_ID', // Voice or Stage channel ID
  // image: 'https://example.com/image.png', // Optional event cover image
});

console.log('Event created:', scheduledEvent.id);
console.log('Event URL:', scheduledEvent.url);
// Discord.js v14+ - Manage Scheduled Events

// Get an event by ID
const event = await guild.scheduledEvents.fetch('EVENT_ID');

// Edit an event
await event.edit({
  name: 'Updated Event Name',
  description: 'Updated description',
  scheduledStartTime: new Date(Date.now() + 172800000), // 2 days from now
});

// Start an event (set status to ACTIVE)
await event.setStatus('ACTIVE');

// Complete an event
await event.setStatus('COMPLETED');

// Cancel an event
await event.setStatus('CANCELLED');

// Delete an event
await event.delete();

// Get all events in a guild
const allEvents = await guild.scheduledEvents.fetch();
console.log(`Found ${allEvents.size} events`);

// Get event subscribers (users interested)
const subscribers = await event.fetchSubscribers();
console.log(`${subscribers.size} users are interested`);

// Listen for event updates
client.on('guildScheduledEventUpdate', (oldEvent, newEvent) => {
  console.log(`Event ${newEvent.name} was updated`);
});

// Listen for users subscribing
client.on('guildScheduledEventUserAdd', (event, user) => {
  console.log(`${user.tag} is interested in ${event.name}`);
});
💡

What are Scheduled Events?

Scheduled events help communities organize and promote activities. Members can mark themselves as interested and receive notifications when events start. Events appear in the server's event list and can be shared via URL.

What are Scheduled Events?

Scheduled events are Discord's built-in feature for organizing and promoting community activities. They allow server members to discover upcoming events, mark themselves as interested, and receive notifications when events start.

Events appear in a dedicated events list in the server, can be shared via URL, and automatically track interested members. Bots can create and manage events programmatically, making them perfect for automated scheduling and event management.

Event Types

🔊

Voice Channel Events

Events that take place in a voice channel. Perfect for casual hangouts, game nights, movie watching, or group discussions.

Requirements:
  • • Voice channel ID
  • • Start time (required)
  • • End time (optional)
🎤

Stage Channel Events

Events in stage channels for presentations, Q&As, announcements, or podcasts. Features speaker controls and audience management.

Requirements:
  • • Stage channel ID
  • • Start time (required)
  • • End time (optional)
🌐

External Events

Events that happen outside Discord, such as Twitch streams, YouTube premieres, in-person meetups, or external conferences.

Requirements:
  • • Location string or URL (required)
  • • Start time (required)
  • • End time (required)

Event Status Lifecycle

Events have a lifecycle with four possible statuses:

SCHEDULED

Initial status when an event is created. Event is upcoming and visible to members.

ACTIVE

Event has started. Can be set manually or happens automatically at start time. Interested members receive notifications.

COMPLETED

Event has ended successfully. Event remains visible in the event list but is marked as past.

CANCELLED

Event was cancelled. Interested members receive a cancellation notification.

Common Use Cases

🎮

Automated Game Nights

Schedule recurring game nights automatically. Bot creates events weekly at the same time.

📺

Stream Announcements

Create events when you go live on Twitch or YouTube. Include stream link as external location.

🗣️

Community Meetings

Schedule regular community meetings, town halls, or Q&A sessions in stage channels.

🎉

Special Events

Create events for tournaments, contests, giveaways, or server celebrations.

📚

Educational Sessions

Schedule workshops, tutorials, study sessions, or lectures with automatic reminders.

🎬

Movie Nights

Plan movie watch parties with specific start times and gather interested viewers.

Required Permissions

To create and manage scheduled events, your bot needs the following permissions:

Manage Events
Required to create, edit, and delete events
View Channel
Required to access voice/stage channels for events
Moderate Members (Optional)
For stage events with speaker management

Best Practices

Set Realistic Times

Create events at least 24 hours in advance to give members time to see and plan for them. Consider different time zones when scheduling.

📝

Write Clear Descriptions

Include what the event is about, what members should bring or prepare, and any special requirements. Use formatting for readability.

🖼️

Add Cover Images

Use eye-catching cover images (960x540px recommended) to make events stand out in the event list and attract more interested members.

🔔

Send Reminders

Use event subscriber lists to send reminder messages an hour or 15 minutes before the event starts.

📊

Track Interest

Monitor the subscriber count to gauge interest. If an event has low interest, consider rescheduling or cancelling it.

Update Event Status

Set events to ACTIVE when they start and COMPLETED when they end. This helps maintain an accurate event history and triggers notifications.

🗑️

Clean Up Old Events

Delete old completed events to keep the event list clean. Consider keeping recent history (last 30 days) for reference.

🔄

Automate Recurring Events

Use cron jobs or schedulers to create recurring events automatically (weekly game nights, daily announcements, monthly meetings).

Event Limitations

Maximum of 100 scheduled events per guild
Event names must be 1-100 characters
Descriptions are limited to 1000 characters
External location strings are limited to 100 characters
Events must start in the future (can't create past events)
End time must be after start time if specified
Cover images must be under 10MB