mattfalahe / seat-discord-pings
Discord ping and broadcast management for SeAT - Send fleet notifications to Discord channels
Installs: 1 846
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
Language:Blade
Type:seat-plugin
pkg:composer/mattfalahe/seat-discord-pings
Requires
- php: ^8.0
- eveseat/services: ^5.0
- eveseat/web: ^5.0
- guzzlehttp/guzzle: ^7.0
- laravel/framework: ^10.0
Requires (Dev)
- orchestra/testbench: ^8.0
- phpunit/phpunit: ^10.0
README
A comprehensive Discord ping and broadcast management plugin for SeAT - Send fleet notifications to Discord channels with rich embeds, role mentions, channel links, staging locations, and advanced scheduling features.
Features
Core Features
- ๐ข Fleet Pings - Send formatted fleet broadcasts to Discord with rich embeds
- ๐ฏ Multiple Webhooks - Manage unlimited Discord webhooks for different channels
- ๐ Templates - Quick templates for common ping types (CTA, Mining, Strategic, etc.)
- ๐ Rich Embeds - Beautiful Discord embeds with customizable colors and fields
- โฐ EVE Time - Automatic EVE time stamps with local time display
Discord Integration
- ๐ฅ Discord Roles - Manage and mention Discord roles in your pings
- ๐ฌ Discord Channels - Link to specific Discord channels in messages
- ๐จ Custom Mentions - Support for @everyone, @here, role mentions, and custom mentions
- ๐ Channel Links - Add clickable channel references to guide users
- ๐ Staging Locations - Pre-configure staging locations with quick dropdown selection
Fleet Information Fields
- FC Name
- Formup Location (with staging dropdown)
- PAP Type (Strategic/Peacetime/CTA)
- Comms Information
- Doctrine Details (with seat-fitting integration)
- Discord Channel Links
- Custom Messages
Advanced Features
- ๐ Scheduled Pings - Schedule pings with EVE time and recurring options
- ๐ Calendar View - Visual calendar for scheduled broadcasts with week/month/list views
- ๐ Doctrine Integration - Automatic integration with seat-fitting plugins
- ๐ Staging Management - Configure and manage staging locations
- ๐ History Tracking - Complete history of all sent pings with resend capability
- ๐ฅ Role Restrictions - Limit webhook access to specific SeAT roles
- ๐ Multiple Recipients - Send to multiple Discord channels simultaneously
- ๐จ Custom Colors - Per-webhook and per-ping embed color customization
- ๐งช Webhook Testing - Test webhooks before using them
- ๐๏ธ Automatic Cleanup - Scheduled cleanup of old ping history
- โ๏ธ Discord Configuration - Unified interface for managing webhooks, roles, channels, and stagings
- ๐ Personal Templates - Create and manage custom templates with full field support
Requirements
- SeAT 5.0 or higher
- PHP 8.0 or higher
- Laravel 10.0 or higher
- Discord webhook URLs
- Queue worker running for scheduled pings
Installation
composer require mattfalahe/seat-discord-pings
SeAT will automatically run migrations and publish assets on restart.
Configuration
Discord Setup
Setting Up Discord Webhooks
- In Discord, right-click on your channel and select Edit Channel
- Navigate to Integrations โ Webhooks
- Click New Webhook
- Give it a name (e.g., "SeAT Fleet Pings")
- Click Copy Webhook URL
- In SeAT, navigate to Discord Pings โ Discord Config โ Webhooks tab
- Click Add Webhook and paste your URL
Adding Discord Roles
- Navigate to Discord Pings โ Discord Config โ Discord Roles tab
- Click Add Role
- Enter a friendly name for the role
- Enter the Discord Role ID (right-click role in Discord with Developer Mode enabled โ Copy ID)
- Optionally set a color for visual identification
- Click Add Role
Adding Discord Channels
- Navigate to Discord Pings โ Discord Config โ Discord Channels tab
- Click Add Channel
- Enter a friendly name for the channel
- Paste the Discord channel URL (right-click channel โ Copy Link)
- Select the channel type (text, voice, announcement, etc.)
- Click Add Channel
Configuring Staging Locations
- Navigate to Discord Pings โ Discord Config โ Staging Locations tab
- Click Add Staging
- Enter a name for the staging (e.g., "Home Staging")
- Enter the system name (e.g., "Jita")
- Optionally enter the structure name (e.g., "4-4 CNAP")
- Optionally set as default staging
- Click Add Staging
Permissions
Configure permissions through SeAT's Access Management system:
| Permission | Description |
|---|---|
discordpings.view |
Access to Discord Pings plugin menu |
discordpings.send |
Send pings to Discord |
discordpings.send_multiple |
Send to multiple webhooks at once |
discordpings.manage_webhooks |
Manage webhooks, roles, channels, and stagings |
discordpings.view_history |
View own ping history |
discordpings.view_all_history |
View all users' ping history |
discordpings.manage_scheduled |
Create and manage scheduled pings |
discordpings.manage_templates |
Create, edit, and delete your own broadcast templates |
discordpings.manage_global_templates |
Create and manage global templates visible to all users |
Usage
Sending a Quick Ping
- Navigate to Discord Pings โ Send Ping
- Select your target webhook
- Enter your message
- Choose mention type (optional):
- No Mention
- @everyone
- @here
- Discord Role (select from configured roles)
- Custom mention
- Select a Discord channel to link (optional)
- Select formup location from staging dropdown or type manually
- Select doctrine from dropdown (if seat-fitting is installed) or type manually
- Fill in fleet details (FC, PAP type, comms, etc.)
- Click Send Ping
Using Templates
Click any template button to quickly fill the message field:
- Standard CTA - General call to arms
- Emergency - Urgent hostile response
- Mining Op - Mining fleet formation
- Roam Fleet - PvP roam announcement
- Strategic Op - Important strategic operations
Using Staging Locations
- Click the dropdown arrow next to Formup Location
- Select from pre-configured staging locations
- Or type a custom location manually
- Set default staging in Discord Config for quick access
Scheduling Pings
- Fill out your ping details on the Send Ping page
- Click Schedule instead of Send
- Set date and time in EVE time (UTC)
- View both EVE time and your local time for reference
- Set recurrence options:
- One-time
- Hourly
- Daily
- Weekly
- Monthly
- Optionally set an end date for recurring pings
- Pings will be sent automatically at the scheduled EVE time
Bulk Sending
- Click "Multiple Webhooks" button on the Send Ping page
- Check all desired webhooks
- Fill in your message and details
- Send once to reach multiple Discord channels
Managing Discord Configuration
Access Discord Pings โ Discord Config to manage:
- Webhooks Tab: Add, edit, test, and delete webhook configurations
- Discord Roles Tab: Configure Discord roles for mentions
- Discord Channels Tab: Add Discord channels for quick linking
- Staging Locations Tab: Manage staging locations for quick selection
Integration with Seat-Fitting
The plugin automatically detects and integrates with seat-fitting plugins (CryptaTech or Denngarr versions):
- Doctrine dropdown appears when seat-fitting is installed
- Creates clickable doctrine links in Discord
- Falls back to plain text if doctrine viewing route is not available
- Works with both scheduled and immediate pings
Discord Embed Format
Pings are sent as rich Discord embeds with:
- Title:
- ๐ข Fleet Broadcast (for fleet operations)
- ๐ฃ Announcement (for general announcements)
- ๐ฌ Message (for simple messages)
- Message: Your custom message
- Fields:
- ๐ค FC Name
- ๐ Formup Location
- ๐ฏ PAP Type
- ๐ Doctrine (with clickable link if using seat-fitting)
- ๐ง Comms / Channel (combined field)
- Footer: "This was a coord broadcast from [username] to discord at [timestamp] EVE"
- Color: Customizable per webhook or per ping
- Mentions: Configurable @everyone, @here, or specific roles
Time Zones
- All times in the interface are displayed in EVE time (UTC)
- Your local time is shown for reference when scheduling
- Scheduled pings execute based on EVE time
- History timestamps are in EVE time
Scheduled Jobs
The plugin includes two automated jobs:
- Process Scheduled Pings - Runs every minute to send due pings
- Cleanup History - Runs daily at 2 AM to remove old ping history
These are automatically registered in SeAT's schedule when you run migrations.
Troubleshooting
Webhook Test Fails
- Verify the webhook URL is correct and starts with
https://discord.com/api/webhooks/ - Check if the Discord channel still exists
- Ensure the webhook wasn't deleted in Discord
Pings Not Sending
- Check if Laravel queue is running:
php artisan queue:work - Verify cron job is configured correctly
- Check SeAT logs in
storage/logs/
Scheduled Pings Not Working
- Ensure the scheduler is running (check crontab)
- Verify queue workers are processing jobs
- Check if the scheduled ping is marked as active
- Verify times are being set correctly in EVE time
Permission Issues
- Run
php artisan discordpings:setup --grant-adminto grant admin permissions - Ensure users have the
discordpings.viewpermission to see the menu - Check role restrictions on webhooks
- Verify webhook is active
Missing Discord Roles/Channels in Dropdown
- Ensure roles and channels are added in Discord Config
- Check that they are marked as active
- Verify the Discord IDs are correct
Doctrine Dropdown Not Showing
- Ensure seat-fitting plugin is installed (CryptaTech or Denngarr version)
- Create at least one doctrine in the fitting plugin
- Check logs for any loading errors
Database Errors
- Run
php artisan migrateto ensure all tables are created - Clear caches with
php artisan cache:clear
Rate Limiting
- Discord has rate limits on webhooks (30 requests per minute)
- Space out bulk broadcasts
- Use scheduled pings for better timing
Support
- Issues: GitHub Issues
- Discord: Join the SeAT Discord server
- Documentation: SeAT Docs
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
License
This project is licensed under the GNU General Public License v2.0 - see the LICENSE file for details.
Credits
- Created by Matt Falahe
- Built for the SeAT Alliance / Corporation Management Platform
- Inspired by the EVE Online community's need for better fleet communication tools
Changelog
See CHANGELOG.md for a detailed list of changes in each version.