revolution/discord-manager

Discord 管理器

5.1.1 2024-03-19 06:39 UTC

README

packagist Maintainability Test Coverage

注意 从 v5 版本开始,只提供 Interactions 命令。Interactions 命令是基于 webhooks 的,在 Laravel 中使用起来非常方便。 v4 仍然支持 Gateway API。

要求

  • PHP >= 8.1
  • Laravel >= 10.0

安装

composer require revolution/discord-manager

.env

DISCORD_BOT_TOKEN=

# APPLICATION ID
DISCORD_BOT=

# PUBLIC KEY
DISCORD_PUBLIC_KEY=

# GUILD ID
DISCORD_GUILD=

卸载

composer remove revolution/discord-manager
  • 删除 config/discord_interactions.php
  • 删除 app/Discord/ 和其他文件。
  • 删除 .env 中的 DISCORD_*

交互

发布配置文件

php artisan vendor:publish --tag=discord-interactions-config

编辑 config/discord_interactions.php

在 Discord 的开发者门户中设置 INTERACTIONS ENDPOINT URL

https://example/discord/webhook

创建响应命令

php artisan discord:make:interaction HelloCommand

将命令注册到 Discord 服务器

php artisan discord:interactions:register

创建事件监听器

php artisan make:listener InteractionsListener
use Revolution\DiscordManager\Events\InteractionsWebhook;
use Revolution\DiscordManager\Facades\DiscordManager;

//

    /**
     * Handle the event.
     *
     * @param  InteractionsWebhook  $event
     * @return void
     */
    public function handle(InteractionsWebhook $event)
    {
        DiscordManager::interaction($event->request);
    }

(仅 Laravel10) 更新 EventServiceProvider.php

use App\Listeners\InteractionsListener;
use Revolution\DiscordManager\Events\InteractionsWebhook;

//

    protected $listen = [
        Registered::class => [
            SendEmailVerificationNotification::class,
        ],
        InteractionsWebhook::class => [
            InteractionsListener::class,
        ],
    ];

工作流程

  1. 来自 Discord 的 POST 请求到达 https://example/discord/webhook
  2. 验证签名
  3. InteractionsWebhookController
  4. DeferredResponse
  5. DispatchInteractionsEvent 终止中间件
  6. InteractionsWebhook 事件分发
  7. 在您的项目中创建 InteractionsListener。
  8. DiscordManager 调用 app/Discord/ 中的某个命令。

授权协议

MIT