PHPackages                             katzen48/laravel-restcord - 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. [API Development](/categories/api)
4. /
5. katzen48/laravel-restcord

ActiveLibrary[API Development](/categories/api)

katzen48/laravel-restcord
=========================

v4.0.0(3y ago)029MITPHPPHP ^8.0.2

Since Sep 19Pushed 3y ago1 watchersCompare

[ Source](https://github.com/Katzen48/laravel-restcord)[ Packagist](https://packagist.org/packages/katzen48/laravel-restcord)[ Docs](https://github.com/katzen48/laravel-restcord)[ RSS](/packages/katzen48-laravel-restcord/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (1)Dependencies (7)Versions (28)Used By (0)

laravel-restcord
================

[](#laravel-restcord)

A small, fluent wrapper for [Restcord](http://www.restcord.com).

> THIS PROJECT IS DEPRECATED, see  for more details.

README Contents
---------------

[](#readme-contents)

- [Features](#features)
- [Installation](#installation)
- [Usage](#usage)
    - [Guilds](#guilds)
    - [Adding Bots To Guilds](#adding-bots-to-guilds)
    - [Creating Webhooks](#creating-webhooks)

Features
========

[](#features)

- Integrates Restcord with [Laravel Socialite](http://socialiteproviders.github.io) so currently OAuth'd user is used for api calls (when `sessionHasDiscordToken` middleware is used)
- Handles creation of webhooks via OAuth (no bot required)
- Handles adding bots to to guilds via OAuth (no websocket connection required)
- Obtain information about a member's relationship with a guild (roles, permissions, etc.)

Installation
============

[](#installation)

1. Install package

```
composer require more-cores/laravel-restcord:2.*

```

2. Define the `DISCORD_BOT_TOKEN` environmental variable.
3. Add the middleware `sessionHasDiscordToken` for the routes where you need to use the current OAuth'd user's credentials to interact with the Discord API. This is required because session information is not available in a ServiceProvider.
4. For Laravel &lt;= 5.4, register the [service provider](http://laravel.com/docs/master/providers) in `config/app.php`

```
'providers' => [
    ...
    LaravelRestcord\ServiceProvider::class,
]
```

Environment Variables
---------------------

[](#environment-variables)

- `DISCORD_BOT_KEY`
- `DISCORD_BOT_SECRET`
- `DISCORD_BOT_TOKEN`
- `DISCORD_KEY`
- `DISCORD_SECRET`

Bot key/secret will be used for callback endpoints related to adding a bot or creating a webhook as well as when the application is running in the console such as queue workers and cron.

Usage
=====

[](#usage)

This documentation assumes your users are logging in via the [Discord driver](https://socialiteproviders.netlify.com/providers/discord.html) for [Laravel Socialite](https://laravel.com/docs/master/socialite).

Anytime you see `$discord` in this documentation it is assumed to be an instance of `LaravelRestcord\Discord\Discord::class` which is available from Laravel's IOC container.

Guilds
------

[](#guilds)

Get a list of guilds the current user has access to:

```
$discord->guilds() // Guild[]
```

Get information about a user's relationship with a guild

```
$guild->userCan(Permission::KICK_MEMBERS); // bool - uses permissions of the currently oauth'd user

$member = $guild->getMemberById($discordUserId); // \LaravelRestcord\Discord\Member
$member->roles(); // \LaravelRestcord\Discord\Role[]
$member->joinedAt(); // Carbon
```

Adding Bots To Guilds
---------------------

[](#adding-bots-to-guilds)

This implementation uses the [Advanced Bot Authorization](https://discord.com/developers/docs/topics/oauth2#advanced-bot-authorization) flow to add the bot to a guild. You should have the **Require OAuth2 Code Grant** option *enabled* on your app's settings.

```
use LaravelRestcord\Discord\HandlesBotAddedToGuild;
use Illuminate\Http\RedirectResponse;

class BotAddedToDiscordGuild
{
    use HandlesBotAddedToGuild;

    public function botAdded(Guild $guild) : RedirectResponse
    {
        // do something with the guild information the bot was added to

        return redirect('/to/this/page');
    }
}
```

Next, add a binding to your `AppServiceProvider` so the package knows which class to pass the guild information to when the user returns to your web site.

```
 $this->app->bind(HandlesBotAddedToGuild::class, BotAddedToDiscordGuild::class);
```

Now you're ready to direct the user to Discord's web site so they can select the guild to add the bot to:

```
    public function show(Guild $guild)
    {
        // Reference https://discordapi.com/permissions.html to determine
        // the permissions your bot needs

        $guild->sendUserToDiscordToAddBot($permissions);
    }
```

This package handles the routing needs, but you need to whitelist the callback URL for this to work. Add `http://MY-SITE.com/discord/bot-added` to your [application's redirect uris](https://discord.com/developers/applications/me).

Your handler will be trigger when the bot has been added to a guild.

> You will be able to send messages via this bot once it has established a web socket connection. It only has to do this once, so it's a common practice to use the below code snippet to do so:

```
"use strict";
var TOKEN="PUT YOUR TOKEN HERE";
fetch("https://discord.com/api/v7/gateway").then(function(a){return a.json()}).then(function(a){var b=new WebSocket(a.url+"/?encoding=json&v=6");b.onerror=function(a){return console.error(a)},b.onmessage=function(a){try{var c=JSON.parse(a.data);0===c.op&&"READY"===c.t&&(b.close(),console.log("Successful authentication! You may now close this window!")),10===c.op&&b.send(JSON.stringify({op:2,d:{token:TOKEN,properties:{$browser:"b1nzy is a meme"},large_threshold:50}}))}catch(a){console.error(a)}}});
```

Creating Webhooks
-----------------

[](#creating-webhooks)

Because we're using OAuth to create webhooks, the user will be directed to Discord's web site to select the guild/channel. This package handles interpreting the request/response lifecycle for this, so all you need to do is build a handler:

```
use LaravelRestcord\Discord\HandlesDiscordWebhooksBeingCreated;
use Illuminate\Http\RedirectResponse;

class Subscribe
{
    use HandlesDiscordWebhooksBeingCreated;

    public function webhookCreated(Webhook $webhook) : RedirectResponse
    {
        // $webhook->token();
        // Here you should save the token for use later when activating the webhook

        return redirect('/to/this/page');
    }
}
```

Next, add a binding to your `AppServiceProvider` so the package knows which class to pass the webhook data to when the user returns to your web site.

```
 $this->app->bind(HandlesDiscordWebhooksBeingCreated::class, DiscordChannelAdded::class);
```

Now you're ready to direct the user to Discord's web site to create the webhook:

```
    public function show(Guild $guild)
    {
        // redirects the user to Discord's interface for selecting
        // a guild and channel for the webhook
        $guild->sendUserToDiscordToCreateWebhook();
    }
```

This package handles the routing needs, but you need to whitelist the callback URL for this to work. Add `http://MY-SITE.com/discord/create-webhook` to your [application's redirect uris](https://discord.com/developers/applications/me).

Your handler will be trigger when the webhook is created.

###  Health Score

32

—

LowBetter than 72% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity7

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity78

Established project with proven stability

 Bus Factor1

Top contributor holds 92.1% 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 ~73 days

Recently: every ~252 days

Total

25

Last Release

1396d ago

Major Versions

v1.1.6 → v2.0.02018-01-26

v2.4.0 → v3.0.02019-10-13

v3.0.3 → v4.0.02022-07-16

PHP version history (3 changes)v1.0PHP &gt;=7.1.0

v3.0.0PHP &gt;=7.3.0

v4.0.0PHP ^8.0.2

### Community

Maintainers

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

---

Top Contributors

[![bkuhl](https://avatars.githubusercontent.com/u/524933?v=4)](https://github.com/bkuhl "bkuhl (105 commits)")[![Katzen48](https://avatars.githubusercontent.com/u/19516002?v=4)](https://github.com/Katzen48 "Katzen48 (5 commits)")[![alexknutson](https://avatars.githubusercontent.com/u/905228?v=4)](https://github.com/alexknutson "alexknutson (4 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/katzen48-laravel-restcord/health.svg)

```
[![Health](https://phpackages.com/badges/katzen48-laravel-restcord/health.svg)](https://phpackages.com/packages/katzen48-laravel-restcord)
```

###  Alternatives

[andreaselia/laravel-api-to-postman

Generate a Postman collection automatically from your Laravel API

1.0k586.2k3](/packages/andreaselia-laravel-api-to-postman)[mll-lab/laravel-graphiql

Easily integrate GraphiQL into your Laravel project

683.2M9](/packages/mll-lab-laravel-graphiql)[spatie/laravel-route-discovery

Auto register routes using PHP attributes

23645.0k2](/packages/spatie-laravel-route-discovery)[neuron-core/neuron-laravel

Official Neuron AI Laravel SDK.

10710.0k](/packages/neuron-core-neuron-laravel)[simplestats-io/laravel-client

Client for SimpleStats!

4515.5k](/packages/simplestats-io-laravel-client)[dragon-code/laravel-json-response

Automatically always return a response in JSON format

1118.6k1](/packages/dragon-code-laravel-json-response)

PHPackages © 2026

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