PHPackages                             mattfalahe/seat-discord-pings - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. mattfalahe/seat-discord-pings

ActiveSeat-plugin[Utility &amp; Helpers](/categories/utility)

mattfalahe/seat-discord-pings
=============================

Discord ping and broadcast management for SeAT - Send fleet notifications to Discord channels

1.0.6(1mo ago)02.3k↑214.3%GPL-2.0-or-laterBladePHP ^8.0

Since Sep 22Pushed 1mo agoCompare

[ Source](https://github.com/MattFalahe/SeAT-Discord-Pings)[ Packagist](https://packagist.org/packages/mattfalahe/seat-discord-pings)[ Docs](https://github.com/MattFalahe/seat-discord-pings)[ RSS](/packages/mattfalahe-seat-discord-pings/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (7)Dependencies (12)Versions (10)Used By (0)

SeAT Discord Pings
==================

[](#seat-discord-pings)

A comprehensive Discord ping and broadcast management plugin for [SeAT](https://github.com/eveseat/seat) - Send fleet notifications to Discord channels with rich embeds, role mentions, channel links, staging locations, and advanced scheduling features.

[![Latest Version](https://camo.githubusercontent.com/f14b9fb60c0946004e3b5cc9cff30f647d41d8e6910e56910b6a93d18ecbd641/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f762f72656c656173652f4d61747446616c6168652f736561742d646973636f72642d70696e6773)](https://github.com/MattFalahe/seat-discord-pings/releases)[![License](https://camo.githubusercontent.com/fc7ef0bd4e7daa962ca0072e865f9970ee5441edb26f5fca76d6e7f0d3805a70/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d47504c2d2d322e302d626c75652e737667)](https://github.com/MattFalahe/seat-discord-pings/blob/master/LICENSE)[![SeAT 5.0](https://camo.githubusercontent.com/6fc17575c84ddf1e55d98246883ad7b8a39d9e021cc69b5688e434d2a706074a/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f536541542d352e302d626c7565)](https://github.com/eveseat/seat)

Features
--------

[](#features)

### Core Features

[](#core-features)

- 📢 **Fleet Pings** - Send formatted fleet broadcasts to Discord with rich embeds
- 🎯 **Multiple Webhooks** - Manage unlimited Discord webhooks for different channels
- 📝 **Templates** - Personal and global templates for common ping types
- 📊 **Rich Embeds** - Beautiful Discord embeds with customizable colors and fields
- 🎨 **Visual Color Picker** - Pick embed colours visually or enter hex code directly
- ⏰ **EVE Time** - Automatic EVE time stamps with local time display

### Broadcast Types

[](#broadcast-types)

- 📢 **Fleet Broadcast** - For active fleet operations
- 📣 **Announcement** - For general announcements
- 💬 **Message** - For simple messages
- ‼️ **PREPING** - For staging fleets before ops begin

### Discord Integration

[](#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

[](#fleet-information-fields)

- FC Name
- Formup Location (with staging dropdown)
- PAP Type (configurable — admin-managed, defaults: Strategic / Peacetime / CTA)
- Comms Information
- Doctrine Details (with seat-fitting integration)
- Discord Channel Links
- Custom Messages

### Advanced Features

[](#advanced-features)

- 📅 **Scheduled Pings** - Schedule pings with EVE time and recurring options
- ✏️ **Edit Scheduled Pings** - Edit any scheduled broadcast; recurring series changes apply from the new time onwards
- 📆 **Broadcasts Calendar** - Visual calendar showing both scheduled pings and manual broadcast history
- 🚀 **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
- 👥 **Shared Visibility** - Directors with Manage Scheduled Pings see all users' scheduled pings and can edit/delete any
- 🔄 **Multiple Recipients** - Send to multiple Discord channels simultaneously
- 🧹 **Bulk Clear** - Bulk delete inactive scheduled pings older than 7 or 30 days
- 🧪 **Webhook Testing** - Test webhooks before using them
- 🗑️ **Automatic Cleanup** - Scheduled cleanup of old ping history
- ⚙️ **Settings** - Unified settings page for webhooks, roles, channels, stagings, and PAP types
- 📚 **Personal &amp; Global Templates** - Create and manage templates with full field support

Requirements
------------

[](#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
------------

[](#installation)

```
composer require mattfalahe/seat-discord-pings
```

SeAT will automatically run migrations and publish assets on restart.

Configuration
-------------

[](#configuration)

### Discord Setup

[](#discord-setup)

#### Setting Up Discord Webhooks

[](#setting-up-discord-webhooks)

1. In Discord, right-click on your channel and select **Edit Channel**
2. Navigate to **Integrations** → **Webhooks**
3. Click **New Webhook**
4. Give it a name (e.g., "SeAT Fleet Pings")
5. Click **Copy Webhook URL**
6. In SeAT, navigate to **Discord Pings** → **Settings** → **Webhooks tab**
7. Click **Add Webhook** and paste your URL

#### Adding Discord Roles

[](#adding-discord-roles)

1. Navigate to **Discord Pings** → **Settings** → **Discord Roles tab**
2. Click **Add Role**
3. Enter a friendly name for the role
4. Enter the Discord Role ID (right-click role in Discord with Developer Mode enabled → Copy ID)
5. Optionally set a color for visual identification
6. Click **Add Role**

#### Adding Discord Channels

[](#adding-discord-channels)

1. Navigate to **Discord Pings** → **Settings** → **Discord Channels tab**
2. Click **Add Channel**
3. Enter a friendly name for the channel
4. Paste the Discord channel URL (right-click channel → Copy Link)
5. Select the channel type (text, voice, announcement, etc.)
6. Click **Add Channel**

#### Configuring Staging Locations

[](#configuring-staging-locations)

1. Navigate to **Discord Pings** → **Settings** → **Staging Locations tab**
2. Click **Add Staging**
3. Enter a name for the staging (e.g., "Home Staging")
4. Enter the system name (e.g., "Jita")
5. Optionally enter the structure name (e.g., "4-4 CNAP")
6. Optionally set as default staging
7. Click **Add Staging**

### Permissions

[](#permissions)

Configure permissions through SeAT's Access Management system:

PermissionDescription`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, stagings, and PAP types`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 usersUsage
-----

[](#usage)

### Sending a Quick Ping

[](#sending-a-quick-ping)

1. Navigate to **Discord Pings** → **Send Ping**
2. Select your target webhook
3. Enter your message
4. Choose mention type (optional):
    - No Mention
    - @everyone
    - @here
    - Discord Role (select from configured roles)
    - Custom mention
5. Select a Discord channel to link (optional)
6. Select formup location from staging dropdown or type manually
7. Select doctrine from dropdown (if seat-fitting is installed) or type manually
8. Fill in fleet details (FC, PAP type, comms, etc.)
9. Click **Send Ping**

### Using Templates

[](#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

[](#using-staging-locations)

1. Click the dropdown arrow next to Formup Location
2. Select from pre-configured staging locations
3. Or type a custom location manually
4. Set default staging in Discord Config for quick access

### Scheduling Pings

[](#scheduling-pings)

1. Fill out your ping details on the Send Ping page
2. Click **Schedule** instead of Send
3. Set date and time in EVE time (UTC)
4. View both EVE time and your local time for reference
5. Set recurrence options:
    - One-time
    - Hourly
    - Daily
    - Weekly
    - Monthly
6. Optionally set an end date for recurring pings
7. Pings will be sent automatically at the scheduled EVE time

### Bulk Sending

[](#bulk-sending)

1. Click "Multiple Webhooks" button on the Send Ping page
2. Check all desired webhooks
3. Fill in your message and details
4. Send once to reach multiple Discord channels

### Managing Discord Configuration

[](#managing-discord-configuration)

Access **Discord Pings** → **Settings** 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
- **PAP Types Tab**: Add, reorder, and deactivate PAP types (Strategic, Peacetime, CTA seeded by default)

Integration with Seat-Fitting
-----------------------------

[](#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
--------------------

[](#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)
    - ‼️ PREPING ‼️ (for staging fleets before ops)
- **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
----------

[](#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
--------------

[](#scheduled-jobs)

The plugin includes two automated jobs:

1. **Process Scheduled Pings** - Runs every minute to send due pings
2. **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
---------------

[](#troubleshooting)

### Webhook Test Fails

[](#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

[](#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

[](#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

[](#permission-issues)

- Run `php artisan discordpings:setup --grant-admin` to grant admin permissions
- Ensure users have the `discordpings.view` permission to see the menu
- Check role restrictions on webhooks
- Verify webhook is active

### Missing Discord Roles/Channels in Dropdown

[](#missing-discord-roleschannels-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

[](#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

[](#database-errors)

- Run `php artisan migrate` to ensure all tables are created
- Clear caches with `php artisan cache:clear`

### Rate Limiting

[](#rate-limiting)

- Discord has rate limits on webhooks (30 requests per minute)
- Space out bulk broadcasts
- Use scheduled pings for better timing

Support
-------

[](#support)

- **Issues**: [GitHub Issues](https://github.com/MattFalahe/seat-discord-pings/issues)
- **Discord**: Join the [SeAT Discord server](https://discord.gg/seat)
- **Documentation**: [SeAT Docs](https://docs.eveseat.net/)

Contributing
------------

[](#contributing)

Contributions are welcome! Please feel free to submit a Pull Request.

1. Fork the repository
2. Create your feature branch (`git checkout -b feature/AmazingFeature`)
3. Commit your changes (`git commit -m 'Add some AmazingFeature'`)
4. Push to the branch (`git push origin feature/AmazingFeature`)
5. Open a Pull Request

License
-------

[](#license)

This project is licensed under the GNU General Public License v2.0 - see the [LICENSE](LICENSE) file for details.

Credits
-------

[](#credits)

- Created by [Matt Falahe](https://github.com/MattFalahe)
- Built for the [SeAT](https://github.com/eveseat/seat) Alliance / Corporation Management Platform
- Inspired by the EVE Online community's need for better fleet communication tools

Changelog
---------

[](#changelog)

See [CHANGELOG.md](CHANGELOG.md) for a detailed list of changes in each version.

###  Health Score

43

—

FairBetter than 91% of packages

Maintenance88

Actively maintained with recent releases

Popularity21

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity46

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~30 days

Recently: every ~43 days

Total

7

Last Release

59d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/f0a1dd29a419ebc176eeb45fbf4ab22e388fa624f99c4ecc94976b73cb50d6ca?d=identicon)[MattFalahe](/maintainers/MattFalahe)

---

Top Contributors

[![MattFalahe](https://avatars.githubusercontent.com/u/47831385?v=4)](https://github.com/MattFalahe "MattFalahe (42 commits)")

---

Tags

discordBroadcastfleeteveeveonlineseatpings

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/mattfalahe-seat-discord-pings/health.svg)

```
[![Health](https://phpackages.com/badges/mattfalahe-seat-discord-pings/health.svg)](https://phpackages.com/packages/mattfalahe-seat-discord-pings)
```

###  Alternatives

[grumpydictator/firefly-iii

Firefly III: a personal finances manager.

22.8k69.3k](/packages/grumpydictator-firefly-iii)[gehrisandro/tailwind-merge-laravel

TailwindMerge for Laravel merges multiple Tailwind CSS classes by automatically resolving conflicts between them

341682.2k18](/packages/gehrisandro-tailwind-merge-laravel)[backpack/basset

Dead-simple way to load CSS or JS assets only once per page, when using Laravel 10+.

202832.4k6](/packages/backpack-basset)[firefly-iii/data-importer

Firefly III Data Import Tool.

7545.8k](/packages/firefly-iii-data-importer)[blair2004/nexopos

The Free Modern Point Of Sale System build with Laravel, TailwindCSS and Vue.js.

1.2k2.3k](/packages/blair2004-nexopos)[nickurt/laravel-akismet

Akismet for Laravel 11.x/12.x/13.x

97139.6k2](/packages/nickurt-laravel-akismet)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
