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.
Event Name
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.
- • 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.
- • 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.
- • Location string or URL (required)
- • Start time (required)
- • End time (required)
Event Status Lifecycle
Events have a lifecycle with four possible statuses:
Initial status when an event is created. Event is upcoming and visible to members.
Event has started. Can be set manually or happens automatically at start time. Interested members receive notifications.
Event has ended successfully. Event remains visible in the event list but is marked as past.
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:
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).