trypost/app/Exceptions/Social
Paulo Castellano c2dd4515b2 feat(channels): add Discord as a social channel
Connect a Discord server via OAuth (bot authorization) and schedule/publish
messages to its channels, with mentions and rich embeds.

- Connect: custom Socialite Discord provider (bot scope) maps the authorized
  guild to a SocialAccount; throws if no server was authorized.
- Publish: DiscordPublisher posts via the global bot token, validates the chosen
  channel belongs to the connected guild (anti cross-guild), optimizes media,
  builds allowed_mentions only from explicit mention chips (no accidental pings),
  and renders rich embeds.
- Compose: per-post channel picker (live lookup), mention autocomplete and an
  embed editor, gated by a required-channel compliance rule; Discord post preview.
- Enum/config/content-type wiring, ConnectionVerifier health check, throttled
  lookup endpoints, i18n (en/es/pt-BR), and tests.

Operators must create a Discord application and set DISCORD_CLIENT_ID,
DISCORD_CLIENT_SECRET, DISCORD_BOT_TOKEN and DISCORD_CLIENT_REDIRECT.
2026-06-16 14:44:00 -03:00
..
BlueskyPublishException.php feat: add Pinterest, Bluesky, Mastodon publish exceptions 2026-03-31 20:43:13 -03:00
DiscordPublishException.php feat(channels): add Discord as a social channel 2026-06-16 14:44:00 -03:00
ErrorCategory.php feat: add ErrorCategory enum and SocialPublishException base class 2026-03-31 20:34:41 -03:00
FacebookPublishException.php fix: Facebook/Instagram/Threads OAuthException type incorrectly treated as token error — now only code 190 triggers TokenExpiredException 2026-04-01 14:33:26 -03:00
InstagramPublishException.php fix: Facebook/Instagram/Threads OAuthException type incorrectly treated as token error — now only code 190 triggers TokenExpiredException 2026-04-01 14:33:26 -03:00
LinkedInPublishException.php feat: add LinkedIn, X, Threads publish exceptions 2026-03-31 20:43:21 -03:00
MastodonPublishException.php feat: add Pinterest, Bluesky, Mastodon publish exceptions 2026-03-31 20:43:13 -03:00
PinterestPublishException.php feat: add Pinterest, Bluesky, Mastodon publish exceptions 2026-03-31 20:43:13 -03:00
SocialPublishException.php refactor(social): TokenRedactor::redact accepts nullable 2026-05-19 09:25:01 -03:00
TelegramPublishException.php Address PR review: connect-status enum, publisher cleanup, fill test gaps 2026-06-13 22:38:23 -03:00
ThreadsPublishException.php fix: Facebook/Instagram/Threads OAuthException type incorrectly treated as token error — now only code 190 triggers TokenExpiredException 2026-04-01 14:33:26 -03:00
TikTokPublishException.php refactor: use data_get in MediaOptimizer for consistency 2026-03-31 21:25:37 -03:00
XPublishException.php fix(x): drop chunked upload chunk size from 5MB to 1MB 2026-05-12 20:02:23 -03:00
YouTubePublishException.php refactor: use data_get in MediaOptimizer for consistency 2026-03-31 21:25:37 -03:00