Maison >interface Web >js tutoriel >Comment recevoir des messages sur Discord avec les fonctions Cloudflare

Comment recevoir des messages sur Discord avec les fonctions Cloudflare

WBOY
WBOYoriginal
2024-07-19 16:26:321113parcourir

Como Receber Mensagens no Discord com Cloudflare Functions

Comment recevoir des messages d'un formulaire HTML directement sur votre Discord à l'aide des pages Cloudflare et des fonctions Cloudflare.

Nous diviserons le processus en quatre parties principales : création du formulaire HTML, configuration du webhook sur Discord, configuration du Worker sur Cloudflare et déploiement du projet.

Création d'un formulaire HTML

Tout d'abord, vous avez besoin d'un formulaire HTML pour collecter les données utilisateur. Le formulaire de base pourrait ressembler à ceci :

8b05045a5be5764f313ed5b9168a17e6
49099650ebdc5f3125501fa170048923
  93f0f5c25f18dab9d176bd4f6de5d30e
    1fc2df4564f5324148703df3b6ed50c1
    b2386ffb911b14667cb8f0f91ea547a7Formulário de Contato6e916e0f7d1e588d4f442bf645aedb2f
    e6a2ef4717ed03faee9e40cd54c601e7
  9c3bca370b5104690d9ef395f2c5f8d1
  6c04bd5ca3fcae76e30b72ad730ca86d
    41a62721f8f6faf85d3f3c442e120146
      32748748547056b73a05801fcce610b9Nome:8c1ecd4bb896b2264e0711597d40766c
      d54606a9be00961829c6e14160b24f20

      fb17cf704df615c5ede8c45530d33a1dEmail:8c1ecd4bb896b2264e0711597d40766c
      1080a2b74ca5aa671651a7e5cb19b3b6

      67ea4e327d93b644e8207e5594cd3243Assunto:8c1ecd4bb896b2264e0711597d40766c
      ea7d10cd0f3e06a24f7d5ec80f4ed662

      30ec3257503b5021be72e6d720187196Mensagem:8c1ecd4bb896b2264e0711597d40766c
      8f90f65b244ff37f833edf9160eb4a3540587128eee8df8f03d0b607fe983014

      2fde95773b8f5f556e457b384dfac0eeEnviar65281c5ac262bf6d81768915a4a77ac0
    f5a47148e367a6035fd7a2faa965022e
  36cc49f0c466276486e50c850b7e4956
73a6ac4ed44ffec12cee46588e518a5e

Ce formulaire envoie une requête POST au point de terminaison /api/submit lorsque l'utilisateur clique sur "Soumettre".

Configuration du webhook Discord

Pour recevoir des messages sur Discord, vous devez configurer un webhook. Suivez les étapes ci-dessous :

  1. Créez une chaîne Discord : Si vous n'avez pas déjà de chaîne dédiée, créez-en une sur votre serveur Discord.
  2. Configurez le Webhook : Accédez à « Paramètres de la chaîne » > "Intégrations" > "Webhooks" et cliquez sur "Créer un Webhook".
  3. Nommez le Webhook : Donnez un nom à votre webhook et copiez l'URL générée.

Configuration des pages et des travailleurs Cloudflare

Maintenant que le formulaire et le webhook sont configurés, il est temps de configurer Cloudflare Worker pour traiter les demandes et envoyer des messages à Discord.

1 : Créer un projet sur GitHub

Créez un référentiel sur GitHub pour votre projet. Dans votre terminal, clonez le référentiel et configurez la structure du projet :

mkdir meu-projeto
cd meu-projeto
git init
git remote add origin git@github.com:b44895184412195210c28bd5c3af3a4c/3f8699a903798851377304c0547685d2.git

2 : Structure du projet

Organisez votre projet comme suit :

meu-projeto
├── functions
│   └── api
│       └── submit.js
└── public
    └── index.html

3 : Configurer le travailleur

Dans le fichier function/api/submit.js, ajoutez le code suivant pour traiter le formulaire et envoyer le message à Discord :

export async function onRequestPost(ctx) {
    try {
        return await handleRequest(ctx);
    } catch(e) {
        return new Response(`${e.message}\n${e.stack}`, { status: 500 });
    }
}

async function handleRequest({ request, env }) {
    const data = await request.formData();

    const name = data.get('name');
    const email = data.get('email');
    const subject = data.get('subject');
    const message = data.get('message');
    const captcha = data.get('h-captcha-response');

    if (!name || !email || !subject || !message || !captcha) {
        return new Response('Verifique se os campos estão preenchidos!', { status: 400 });
    }

    const captchaVerified = await verifyHcaptcha(
        captcha,
        request.headers.get('cf-connecting-ip'),
        env.HCAPTCHA_SECRET,
        env.HCAPTCHA_SITE_KEY
    );

    if (!captchaVerified) {
        return new Response('Captcha inválido!', { status: 400 });
    }

    await sendDiscordMessage(name, email, subject, message, env.DISCORD_WEBHOOK_URL);

    return new Response('OK');
}

async function verifyHcaptcha(response, ip, secret, siteKey) {
    const res = await fetch('https://hcaptcha.com/siteverify', {
        method: 'POST',
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded',
        },
        body: `response=${response}&remoteip=${ip}&secret=${secret}&sitekey=${siteKey}`
    });

    const json = await res.json();
    return json.success;
}

async function sendDiscordMessage(name, email, subject, message, webhookUrl) {
    await fetch(webhookUrl, {
        method: 'POST',
        headers: {
            'Content-Type': 'application/json',
        },
        body: JSON.stringify({
            username: 'Formulário de Contato',
            embeds: [{
                color: 0x0099ff,
                title: 'Nova Mensagem',
                fields: [
                    {
                        name: 'Nome',
                        value: name,
                        inline: true,
                    },
                    {
                        name: 'Email',
                        value: email,
                        inline: true,
                    },
                    {
                        name: 'Assunto',
                        value: subject,
                    },
                    {
                        name: 'Mensagem',
                        value: "```

" + message + "

```",
                    }
                ]
            }]
        }),
    });
}

Déployer

Une fois tout configuré, déployons le projet :

  1. Commitez et envoyez le code vers GitHub :

    git add .
    git commit -m "Projeto configurado"
    git push origin main
    
  2. Dans Cloudflare Pages, connectez le référentiel GitHub, sélectionnez la branche principale et définissez la sortie de build sur publique.

  3. Pour éviter d'exposer vos clés et paramètres sensibles, configurez les variables d'environnement dans Cloudflare Pages. Accédez à votre tableau de bord Cloudflare Pages. Sélectionnez le projet et accédez à Paramètres > Variables d'environnement. Ajoutez les variables suivantes :

    • DISCORD_WEBHOOK_URL avec l'URL du webhook Discord.
    • HCAPTCHA_SECRET avec le secret hCaptcha.
    • HCAPTCHA_SITE_KEY avec la clé du site hCaptcha.

Après la configuration, votre site Web sera accessible via un sous-domaine *.pages.dev et prêt à être utilisé. Lorsqu'un utilisateur soumet le formulaire, un message sera envoyé directement sur votre chaîne Discord.

Félicitations ! Vous avez configuré avec succès un formulaire HTML qui envoie des messages à Discord à l'aide des fonctions Cloudflare.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn