Інтеграція Discord API з сайтом (сповіщення, боти)

Наша компанія займається розробкою, підтримкою та обслуговуванням сайтів будь-якої складності. Від простих односторінкових сайтів до масштабних кластерних систем, побудованих на мікро сервісах. Досвід розробників підтверджено сертифікатами від вендорів.

Розробка та обслуговування будь-яких видів сайтів:

Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Пропоновані послуги
Показано 1 з 1 послугУсі 2065 послуг
Інтеграція Discord API з сайтом (сповіщення, боти)
Середня
від 1 робочого дня до 3 робочих днів
Часті питання

Наші компетенції:

Етапи розробки
Останні роботи
  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    874
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851

Інтеграція Discord API з веб-сайтом (сповіщення, боти)

Discord — популярна платформа для ігрових та технічних спільнот. Інтеграція з сайтом дозволяє: сповіщати спільноту про новий матеріал, перевіряти власність NFT або ліцензій, створювати закриті канали для платних підписників.

Discord Webhooks (сповіщення)

class DiscordNotifier
{
    public function send(string $webhookUrl, array $embeds): void
    {
        Http::post($webhookUrl, [
            'embeds' => $embeds,
        ]);
    }

    public function announceNewArticle(Article $article): void
    {
        $this->send(config('services.discord.news_webhook'), [[
            'title'       => $article->title,
            'description' => $article->excerpt,
            'url'         => route('articles.show', $article->slug),
            'color'       => 0x5865F2,   // Discord Blurple
            'image'       => ['url' => $article->cover_url],
            'timestamp'   => $article->published_at->toIso8601String(),
            'footer'      => ['text' => 'example.com'],
        ]]);
    }
}

OAuth2: авторизація через Discord

Для доступу до закритих розділів сайту — авторизація через Discord-акаунт:

Route::get('/auth/discord/redirect', function () {
    return redirect(
        'https://discord.com/api/oauth2/authorize?' .
        http_build_query([
            'client_id'     => config('services.discord.client_id'),
            'redirect_uri'  => route('auth.discord.callback'),
            'response_type' => 'code',
            'scope'         => 'identify guilds.members.read',
        ])
    );
});

Route::get('/auth/discord/callback', function (Request $request) {
    // Обмін коду на токен
    $tokenResp = Http::post('https://discord.com/api/oauth2/token', [
        'client_id'     => config('services.discord.client_id'),
        'client_secret' => config('services.discord.client_secret'),
        'code'          => $request->code,
        'grant_type'    => 'authorization_code',
        'redirect_uri'  => route('auth.discord.callback'),
    ])->json();

    // Отримання даних користувача
    $user = Http::withToken($tokenResp['access_token'])
        ->get('https://discord.com/api/users/@me')
        ->json();

    // Перевірка членства на сервері
    $member = Http::withToken($tokenResp['access_token'])
        ->get("https://discord.com/api/users/@me/guilds/{$guildId}/member")
        ->json();

    return redirect('/dashboard');
});

Role Gating: доступ за роллю на Discord-сервері

class DiscordRoleGate
{
    public function hasAccess(string $userId, string $accessToken): bool
    {
        $member = Http::withToken($accessToken)
            ->get("https://discord.com/api/users/@me/guilds/{$this->guildId}/member")
            ->json();

        $requiredRoles = config('services.discord.premium_role_ids');
        return !empty(array_intersect($member['roles'] ?? [], $requiredRoles));
    }
}

Графік

Сповіщення через Webhooks: 1 день. OAuth2 + role-gating: 3–4 дні.