#javascript-typescript

1 messages · Page 92 of 1

civic dragon
#

Qui est null

burnt perch
#

ton json non valide vient du back que tu request ?

#

je peut plus voir ton code ton paste est expiré...

civic dragon
#

Nope il viens du front j'ai une variable {"message":message} que je stringify

burnt perch
#

okay et quand tu JSON.parse ta variable ça donne ça ou ta pas essayé ?

civic dragon
#

A vrai dire j'ai pas pensé à retester car j'avais une erreure quand je le faisais

#

Mais entre temps j'avais changé deux trois truc

burnt perch
#

yes test et dit moi

civic dragon
#

Ok

civic dragon
#
        window.onload = () => {
            let texte = document.querySelector("#text")
            texte.addEventListener("keyup",verifieEnter)
        }
        function verifieEnter(e){
            if (e.key === "Enter"){
                ajoutMessage()
            }
        }
        function ajoutMessage(){
            let message = document.querySelector("#text").value
            console.log(message)
            if (message !== ""){
                let json = {
                    "message" : message,
                };
                let resultJson =  JSON.stringify(json)
          
                console.log(resultJson)
                axios.post("{{ path('add_direct_private',{token: '47f6edd3-438f-416d-a4f7-99d76c21c181'}) }}", resultJson)
                    .then(function (response) {
                        document.querySelector("#text").value=""
                        console.log(response.data);

                    })
                    .catch(function (error) {
                        console.log(error);
                   });
            }
        }
#

voici le code

#
  return $this -> json(["msg" => $request -> request -> get('message')]);
keen narwhal
#

Salut

#

@slim anvil Enzozoowww

#

I need your help

slim anvil
#

met ton message ici

burnt perch
#

Tu peux stop ping tout le monde s'il te plaît merci et venir en mp ne change rien tu veux de l'aide ? Alors attend ton tour stp

keen narwhal
#

J’aimerais savoir si quelqu’un savais comment faire un welcome message sans embed

burnt perch
#

Bah attend pas la peine de ping/mp

keen narwhal
#

Yessirrrrr

#

Désolé

burnt perch
#

Et puis en attendant tu peux faire tes recherches

burnt perch
#

tu peux faire un var_dump de $request -> request -> get('message') ?

#

@civic dragon

#

et m'nevoyer le résultat biensur

surreal sparrow
#

Salut, comment je pourrais faire en sorte le plus efficacement possible que le bot envoie un message toutes les 2 heures, donc 8 10 12 14 16... Comme actuellement j'ai fais ce code mais il envoie à partir du moment ou ils s'est lancé le bot

    var voteEmbeb = new MessageEmbed()
    .setTitle('Vote pour le serveur et remporte 50K ou et le plus de vote du mois !')
    .setColor(colorbot)
    .setDescription(`:topserver: Vote sur [Top Serveur](https://top-serveurs.net/garrys-mod/splife)\n
    :urgence: **LES PERSONNES QUI VOTENT LE PLUS DURANT CE MOIS-CI GAGNERONT**\n
    *1er : Premium* 
    *2ème : 2 Armes Permanentes* 
    *3ème : 1 Armes Permanente*\n
    __Pour cela vous devez votes en mettant le même nom à chaque vote (possible toute les 2 heures)__
    *PS: Les classements seront donnés toutes au long du mois !*\n
    :pointorange:*Attention suit ce [Tuto](https://splife.fr/forums/index.php?threads/recevoir-de-largent-ig-gr%C3%A2ce-aux-votes.1440/) afin de recevoir les 50K par vote*`)
    setInterval(function() {
        client.channels.cache.get(channelvote).send({ content: "*Envoie !notifvote pour recevoir une notification toute les 2 heures* <@&907319885766492240>",embeds: [voteEmbeb] });
    }, 120 * 60000);

neat lintel
cyan iron
#

Avec ça tu vas pouvoir répéter toutes les 2h une fonction de manière très simple

#

Sinon tu fais un setTimeout()

keen narwhal
#

Genre si tu lui dit a ta tache cron toutes les 2h ils vas te les sortir au moment ou le bot start

cyan iron
#

Il a dit 8h 10h 12h

#

Donc si, mais du coup je vois pas le problème

keen narwhal
#

Nan, c'est moi le problème mon cerveau mou

cyan iron
#

Sinon tu veux faire comment ?

surreal sparrow
#

Ok merci oui en gros c'est des tâches que tu fais

keen narwhal
#

Mais une tache cron, c'est bien mieux mmLul

cyan iron
#

Une tâche cron tu peux faire toutes les 2h si tu veux, mais il me semble qu'il y a possibilité de faire toutes les 2h à partir de minuit

#

Après je l'ai pas beaucoup utilisé donc j'en sais rien

keen narwhal
#

Je vais look avec lui

#

Ty bg 😉

civic dragon
#

te c'est mon message

burnt perch
#

donc ça c'est que tu renvois ? et pas ce que tu reçois et ce que tu envoie en front n'est pas null donc le problème vient de ton back end alors

civic dragon
#

c'est ce que je resoit

#

ce que j'envoie ca ressemble a ca

{"message":"dfsdf"}
#

@burnt perch

burnt perch
#

ok alors si c'est null c'est que tu dois avoir un problème en back je pense

civic dragon
#

je vois pas d'ou ca peut venir a part que ce que m'envoie axios c'est {"message":"dfsdf"} : ""

#

je sais pas pourquoi ca m'envoie ca

burnt perch
#

attend je crois qu'on s'est emmêlé {"message":"dfsdf"} : "" c'est ce que tu reçois en back depuis ton front c'est ça ?
donc dans ce cas :

let resultJson =  JSON.stringify(json)

ça donne quoi ?

civic dragon
#

c'est ce que j'ai deja

#

en gros je post mon message avec axios et le recupere avec symfony

#

juste quand je recupere je resoit {"message":"dfsdf"} : ""

#

sinon quand j'envoie j'ai bien

#

{"message":"dfsdf"}

#

dans mon console.log

burnt perch
#

tu envois un json normal mais tu ne met aucun header ducoup axios envoie pas vraiment le bon truc essaie un truc comme ça :

let resultJson  = JSON.stringify({ "message": "j'aime les licornes"});
const res = axios.post("{{ path('add_direct_private',{token: '47f6edd3-438f-416d-a4f7-99d76c21c181'}) }}", resultJson, {
  headers: {
    // présisce que tu envois du JSON
    'Content-Type': 'application/json'
  }
});

console.log(res.data.data); // '{"message":"ta reponse"}'
#

essaie ça

#

jtai envoyé un truc avec un await enlève le car tu n'est pas en async

#

enfin la jlai enlever du message

civic dragon
burnt perch
#

euh mince j'avais fait une erreur c'est fix

civic dragon
#

tqt j'avais vu

#

nan tjrs rien

burnt perch
#

et tu reçois quoi niveau front ? en réponse ?

civic dragon
#

data est null et code 200

#

comme d'hab

burnt perch
#

dans ton back tu fais quoi avec ton message ?

civic dragon
#
#[Route('/message/add/{token}', name: 'add_direct_private' , methods: ["POST"])]
    public function add($token , Request $request): Response
    {

        return $this -> json(["message" => $request -> request]);

    }
burnt perch
#

Et tu le reçois tjr en null Depuis le front ?

civic dragon
#

oui

burnt perch
#

Et sans le stringlify ça donne quoi ?

civic dragon
#

null encore

burnt perch
#

Okay bah att je re après mais pour moi ça devrai être good att

civic dragon
#

ok tqt

leaden juniper
#

cc je voudrais savoir si c'est envisageable de coder un jeu 2d en pur javascript

#

et s'il y a plus simple, quel module js je pourrais utiliser

slim anvil
surreal sparrow
#

@cyan iron Tu sais pourquoi, en local sa fonctionne bien mais sur un hébergeur de bot j'ai cette error qui pop

node:events:368
      throw er; // Unhandled 'error' event
      ^

TypeError: Cannot read properties of undefined (reading 'send')
    at Job.job (/home/container/index.js:36:54)
    at Job.invoke (/home/container/node_modules/node-schedule/lib/Job.js:168:15)
    at /home/container/node_modules/node-schedule/lib/Invocation.js:268:28
    at Timeout._onTimeout (/home/container/node_modules/node-schedule/lib/Invocation.js:228:7)
    at listOnTimeout (node:internal/timers:557:17)
    at processTimers (node:internal/timers:500:7)
Emitted 'error' event on Job instance at:
    at /home/container/node_modules/node-schedule/lib/Invocation.js:277:13
    at Timeout._onTimeout (/home/container/node_modules/node-schedule/lib/Invocation.js:228:7)
    at listOnTimeout (node:internal/timers:557:17)
    at processTimers (node:internal/timers:500:7)
neat lintel
#

Envois le code correspondant stp

spiral cave
sudden cipher
#

Salut , je recherche un systeme de ticket discord.js version 12.5.1 mais pas en module.export car je n'ai jamais rien compris a ça

#

Merci d'avance

neat lintel
flat sandal
#

Tu as des module NPM pour ça aussi

sudden cipher
neat lintel
#

Après tu peux le faire toi même aussi. Il y a rien de bien compliqué en une cinquantaine de lignes ça doit être réglé

#

Faut juste bien visualiser les différentes étapes

pulsar fiber
#

salut , vous savez si il ya moyen d'envoyer un message apres une / commande ?

#

car jai actuellement ca

#
const { SlashCommandBuilder } = require('@discordjs/builders');
const { CommandInteraction, Message } = require('discord.js');

module.exports = {
    data: new SlashCommandBuilder()
        .setName('send')
        .setDescription('send a message')
        .addStringOption((option) =>
            option
                .setName("message")
                .setDescription("si vous voulez send un message")
        ),

    /**
     * 
     * @param {CommandInteraction} interaction 
     */
    async execute(interaction) {
        const messageToSend = interaction.options.getString('message');
        await interaction.reply('Fais !');
        channel.send({ content: messageToSend});

    },
}
#

mais le message ce send pas et il me drop ca en erreur

sharp grail
#

hey c'est interaction.channel, ensuite ça voudrait dire que tu aurais déjà reply à l'interacion, tu le fais pas dans ton interactionCreate ? Sinon c'est juste le debugger 🤔

pulsar fiber
sharp grail
#

bah interaction.channel.send

pulsar fiber
#

ah bas c'est good c'est bien interaction.channel.send merci beaucoup 👍

pulsar fiber
#

re mdr jai encore un petit soucis avec les / jarrive pas a deploy ma commande

#
const { SlashCommandBuilder } = require('@discordjs/builders');
const { CommandInteraction, Message,MessageEmbed } = require('discord.js');

module.exports = {
    data: new SlashCommandBuilder()
        .setName('embded')
        .setDescription('aembed')
        .addStringOption((option) =>
            option
                .setName("title")
                .setDescription("titre en haut de l'embed")
        )
        .addStringOption((option1) =>
            option1
                .setName("link")
                .setDescription("lien de l'image")
        ),
    /**
     * 
     * @param {CommandInteraction} interaction 
     */
    async execute(interaction) {
        const NameToEmbed = interaction.options.getString('message1');
        const LinkInEmbed = interaction.options1.getString('message2');

        const exampleEmbed = new MessageEmbed()
        .setColor('black')
        .setTitle(NameToEmbed)
        .setImage(LinkInEmbed)
        await interaction.reply('Fais !');
        interaction.channel.send({ embeds: [exampleEmbed] });
    },
}
neat lintel
#

tu as quel code pour déployer les commandes ?

pulsar fiber
#

celui de pentimax je tenvoie ca

#
const fs = require('fs');
const { REST } = require('@discordjs/rest');
const { Routes } = require('discord-api-types/v9');
const { clientId, guildId, token } = require('./config.json');

const commands = [];
const commandFiles = fs.readdirSync('./commands').filter(file => file.endsWith('.js'));

for (const file of commandFiles) {
    const command = require(`./commands/${file}`);
    commands.push(command.data.toJSON());
}

const rest = new REST({ version: '9' }).setToken(token);

(async () => {
    try {
        await rest.put(Routes.applicationGuildCommands(clientId, guildId), { body: commands });
        console.log('Les commandes ont étés enregistrées !')
    } catch (error) {
        console.error(error);
    }
})();
neat lintel
#

et sur discord tu ne vois pas la commande quand tu fais / ?

pulsar fiber
#

jai une erreur quand je fais node deploy-commands

cyan iron
#

Regarde ici si tu as tes / cmds

neat lintel
pulsar fiber
#

ah

cyan iron
#

y'avais un lien

pulsar fiber
#

DiscordAPIError[50035]: Invalid Form Body
4[APPLICATION_COMMANDS_DUPLICATE_NAME]: Application command names are unique
at SequentialHandler.runRequest (C:\Users\tytym\Desktop\TyTyBase\node_modules@discordjs\rest\dist\lib\handlers\SequentialHandler.js:198:23)
at processTicksAndRejections (node:internal/process/task_queues:96:5)
at async SequentialHandler.queueRequest (C:\Users\tytym\Desktop\TyTyBase\node_modules@discordjs\rest\dist\lib\handlers\SequentialHandler.js:99:20)
at async C:\Users\tytym\Desktop\TyTyBase\deploy-commands.js:18:9 {
rawError: {
code: 50035,
errors: { '4': [Object] },
message: 'Invalid Form Body'
},
code: 50035,
status: 400,
method: 'put',
url: ''
}

neat lintel
#

du coup tu as 2 commandes avec le meme nom

pulsar fiber
#

jai verifier et pourtant non

cyan iron
#

Je suis un fantôme ? ghost2

neat lintel
#

Log ta variabel commands

pulsar fiber
#

enfaite c'est good

#

je vien de relancer visual

#

je pense quil prenais pas en compte mes changement ce tdc

#

merci beaucoup tout le monde

neat lintel
#

peut etre un fichier pas enregistré qui posait problème alors

pulsar fiber
#

ya pas un moye pour que c'est case s'auto remplisse par rapport au serveur ?

neat lintel
#

tu pourras utiliser des commandes globales disponibles sur tous les serveurs

pulsar fiber
#

c'est a dire ?

neat lintel
#

on s'en sert juste pas quand on dev le bot car il y a une mise en cache de 1h par discord. En gros quand tu crée /met a jour/supprime une commande ca peut prendre jusqu'a 1h pour s'afficher sur ton serveur

pulsar fiber
#

ah

neat lintel
pulsar fiber
#

donc pour le moment vaut mieux que je finisse le dev en local et apres les rendre global

neat lintel
#

oui

pulsar fiber
#

okay thanks

supple cairn
#

Bonjour j'ai trouver un script pour afficher la valeur d'un input et d'un textarea et j'ai mis la fonction sur un bouton mais le probleme c'est que a chaque fois qu'on appuyer ca rajoute le texte en une deuxieme fois ainsi de suite.

function GetValue() {
           var input  = document.getElementById('in').value;
           var input1 = document.getElementById('in1').value;
           var input2 = document.getElementById('in2').value;
           var div = document.getElementById('print')
           div.innerHTML += input
           div.innerHTML += input1
           div.innerHTML += input2
       }

est ce que vous savez comment faire pour que quand par exemple on met du texte dans le input il s'affiche et que si apres on met du texte dans le textarea et qu'on appuie, sa rajoute l'affichage du textarea mais pas une deuxieme fois le input.

burnt perch
#

Enfaite la tu utilises += donc tu concaténe utilise plutôt juste =

pulsar fiber
#

re mdr petit soucis je cherche a envoyer un message en mp a quelqun via le bot . donc j'utilise interaction.user.send({ content: messageToSend});

burnt perch
#

Enfin si j'ai bien compris @supple cairn

hidden cypress
#

@oak turret salut dsl de la mention mais es que tu a le discord de luthly stp

pulsar fiber
#

en definisant bien que ``` const user = interaction.options.getUser('target');

#

mais le bot me mp moi ce debile

supple cairn
cyan iron
#

variable += 5 ça revient en gros à faire variable = variable + 5

neat lintel
#

du coup le bot récupère la personne qui a fait l'intéraction pas ta variable

cyan iron
pulsar fiber
#

ah oui daccord mdr

supple cairn
#

ah mais apres quand on appuie sur le boutton en rajoutant du text dans un autre input sa rajoute pas l'autre text

cyan iron
#

Bah Smaug a été plus fast que moi

pulsar fiber
#

je vien de comprendre le fonctionnement des / mdrrr

cyan iron
pulsar fiber
#

merci beaucoup

cyan iron
#

Donc ton const user c'est ça que tu recherches

pulsar fiber
#

okay merci beaucoup

#

donc interraction.x cest celui qui utilise la command

cyan iron
#

.user

#

interaction c'est ta commande

#

En gros

pulsar fiber
#

okay merci beaucoup

#

compliqué cette nouvelle maj mdr

burnt perch
cyan iron
keen narwhal
#

Bonjour, j'ai cette erreur dès que j'appuie sur le bouton supprimer

C:\Users\Administrateur\Desktop\SLMD DEV TICKET\node_modules\discord.js\src\rest\RequestHandler.js:349
      throw new DiscordAPIError(data, res.status, request);
            ^

DiscordAPIError: Cannot send messages to this user
    at RequestHandler.execute (C:\Users\Administrateur\Desktop\SLMD DEV TICKET\node_modules\discord.js\src\rest\RequestHandler.js:349:13)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async RequestHandler.push (C:\Users\Administrateur\Desktop\SLMD DEV TICKET\node_modules\discord.js\src\rest\RequestHandler.js:50:14)
    at async DMChannel.send (C:\Users\Administrateur\Desktop\SLMD DEV TICKET\node_modules\discord.js\src\structures\interfaces\TextBasedChannel.js:172:15) {
  method: 'post',
  path: '/channels/909460679243739136/messages',
  code: 50007,
  httpStatus: 403,
  requestData: {
    json: {
      content: undefined,
      tts: false,
      nonce: undefined,
      embeds: [
        {
          title: null,
          type: 'rich',
          description: '**📰 Logs de votre ticket `909462375936188476`: [**Cliquez ici pour voir les logs**](https://hastebin.com/buvexecova)**',
          url: null,
          timestamp: 2021-11-14T15:19:11.302Z,
          color: 3092790,
          fields: [],
          thumbnail: null,
          image: null,
          author: {
            name: 'Logs Ticket',
            url: undefined,
            icon_url: 'https://media.discordapp.net/attachments/904875791890923571/906959858450980955/88.png?width=468&height=468'
          },
          footer: null
        }
      ],
      components: undefined,
      username: undefined,
      avatar_url: undefined,
      allowed_mentions: undefined,
      flags: undefined,
      message_reference: undefined,
      attachments: undefined,
      sticker_ids: undefined
    },
    files: []
  }
}
pulsar fiber
#

normalement mdr

cyan iron
keen narwhal
neat lintel
cyan iron
#

Oui

burnt perch
#

Erwin texte aera input

cyan iron
#

Ou ses mps sont fermés

#

@keen narwhal met un .catch() sur ton .send()

keen narwhal
pulsar fiber
#

ah mdr gg

#

moi toujours pas reussi a recup le faite que quelqun appuie dessus

keen narwhal
keen narwhal
#

et dans quel dossier ?

cyan iron
# keen narwhal je met .catch() avant le send ou après ?

La méthode catch() renvoie un objet Promise et ne traite que des cas où la promesse initiale est rejetée. Elle a le même effet qu'un appel à Promise.prototype.then(undefined, siRejetée) (c'est en fait ce qui se passe dans le moteur, obj.catch(onRejected) est traduit en obj.then(undefined, onRejected)). Cela signifie qu'il est nécessaire de fourn...

#

Tient

#

Tu sais ce qu'est une promise et comment ça fonctionne ?

keen narwhal
#

pas vraiment non

cyan iron
#

Ok, bon je vais essayer de trouver un bon truc pour t'expliquer

keen narwhal
#

car de se que vous venez de me dire genre de de mettre .catch() sur mon .send() rien que sa je ne sais pas ou le mettre ni comment

cyan iron
#

Lorsque tu send un message, ça te retourne une promise

#

Tu vois c'est écrit en bas

#

Cette promise contient ton Message, mais ici tu t'en fiches

#

Toi ce que tu veux, c'est savoir si tout se passe bien quand tu exécutes ta ligne de code

cyan iron
#

Et sur une promise tu as le .catch(). En gros, si ton .send() à un problème, ça va passer dans le .catch(), et ça va donc t'éviter l'erreur étant donné que tu la gère

keen narwhal
#

ok donc je le met après mon .send()

cyan iron
#

Tu comprends ? Ou tu veux que je réexplique ?

cyan iron
keen narwhal
#

ha ok je vois

cyan iron
#

Après tu peux ne rien mettre dans ton catch, et ça va juste ne pas afficher l'erreur et l'éviter

#

'Fin l'éviter non

#

Mais tu n'as pas le choix de toute manière, je te conseille de mettre dans ton .catch un message qui dit " Désolé mais je ne peux pas envoyer de message à cet utilisateur "

keen narwhal
#

ok beh je vais essayer sa je vous tient au courant merci

scarlet wharf
#

Bonjour

#

Je cherche quelqu’un qui sait comment éviter que les gens utilise la commande sauf les modos et le staff

cyan iron
#

T'as un début de code ?

neat lintel
#

tu as GuildMember.permissions.has() qui devrait t'etre utilie

scarlet wharf
#

@keen narwhal mon vrai compte @scarlet wharf et celui ci mon compte test

cyan iron
#

Smaug t'as donné la réponse 🙂

scarlet wharf
#

Merci Smaug

#

Pop smaug

neat lintel
#

Après si tu voulais vérifier que ce soit que le staff (et donc peut etre un certain role) tu as la meme chose que permissions mais avec roles.has

scarlet wharf
#

Ok

#

Merci bcp

keen narwhal
#

juste j'ai pleins de .send je le place ou donc ?

cyan iron
#

Sur celui qui envoie un message après le clic sur le bouton 🙂

keen narwhal
#

ha oui je suis vraiment pas intelligent mdr

cyan iron
#

Tu peux le mettre sur tous ceux qui envoient un message à un utilisateur

cyan iron
keen narwhal
#
           .then(async () => {
              const embed = new client.discord.MessageEmbed()
                .setColor('6d6ee8')
                .setAuthor('Ticket', 'https://media.discordapp.net/attachments/904875791890923571/906959858450980955/88.png?width=468&height=468')
                .setDescription('\*\*```Contrôle des tickets```\*\*')
                .setFooter('SLMD・Développement', 'https://media.discordapp.net/attachments/904875791890923571/906959858450980955/88.png?width=468&height=468')
                .setTimestamp();

              const row = new client.discord.MessageActionRow()
                .addComponents(
                  new client.discord.MessageButton()
                  .setCustomId('delete-ticket')
                  .setLabel('Supprimer le ticket')
                  .setEmoji('🗑️')
                  .setStyle('DANGER'),
                );

              chan.send({
                embeds: [embed],
                components: [row]
              });
            });
#

je le met a la ligne 14 ?

#

@cyan iron

cyan iron
#

Quel est le problème ?

keen narwhal
#

je le met à la ligne 14 ?

charred lake
#

Hello, quelqu'un aurait une idée de comment envoyer un même message à tous les serveurs ou un bot est présent ?

cyan iron
#

Si c'est un bot de raid que tu fais on t'aide pas kapp

cyan iron
cyan iron
charred lake
#

Haha non pas du tout rassure toi, c'est juste que pour mon projet j'ai deux serveurs discord pour différents services, et je n'arrive pas à gérer deux serveurs en même temps

cyan iron
#

Ah d'accord je vois

surreal sparrow
#

Salut, j'ai mon 2ème addField qui marche pas c'est le message.channel qui le fait bug je n'ai pas pourquoi

client.on("messageDelete", async message => {
    const embedLogsMessageDelete = new MessageEmbed()
        .setColor(config.colorbot)
        .setAuthor(message.author.username, message.author.displayAvatarURL({dynamic: true}))
        .addField('Message supprimé', message.content)
        .addField('Salon', message.channel)
    client.guilds.cache.get(config.idserver).channels.cache.get(config.channellogs).send({ embeds: [embedLogsMessageDelete] });
});

charred lake
surreal sparrow
#

Uncaught RangeError [EMBED_FIELD_VALUE]: MessageEmbed field values must be non-empty strings.

cyan iron
surreal sparrow
#

Il ne le capte pas

burnt perch
# charred lake Dans un salon précis sur chaque serveur

client.on('message', () => {
if (message.content === "!sendguildmessages") {
var guildList = client.guilds.array();
try {
guildList.forEach(guild => guild.defaultChannel.send("messageToSend"));
} catch (err) {
console.log("Could not send message to " + guild.name);
}
}
});

#

Désolé jsuis sur téléphone

charred lake
#

Je crois que client.guilds.array, n'existe plus dans discord.js

cyan iron
#

Non

#

Tu fais toi même l'array

charred lake
#

Okay, faut juste que j'arrive à trouver comment préciser dans channels.find l'id du channel

pulsar fiber
#

pourquoi pas utiliser un forEach ?

cyan iron
#
let array = ["617677968474636298", "781299002695483442"]
for (const element of array) {
    client.channels.cache.get(element)?.send(tonmsg)
} 
#

Dans son cas il veut envoyer un message dans des channels précis

pulsar fiber
#

ah okay

charred lake
#

Yep, okay, alors je vais essayer en y intégrant un embeed

pulsar fiber
#

pour une fois que javais des connaisance mdrr

cyan iron
surreal sparrow
#

Oui c'est le message.channel

#

Mais je comprend pas pourquoi

burnt perch
#

Mais tu peux get tour les servers normalement

#

Sans faire un array comme ça

cyan iron
burnt perch
#

Ça me paraît bizarre

charred lake
#

Y'a fetch, qui me retourne une promise

cyan iron
#
client.guilds
burnt perch
#

Bah client.guilds.array()

#

Ouai comme dans l'exemple en haut que j'ai send normalement ça marche

cyan iron
#

Non mais en fait on s'éloigne

#

Il a pas besoin de gérer les serveurs

#

S'il a des salons précis, il récupère les identifiants des salons, et il boucle dessus c'est tout

charred lake
surreal sparrow
cyan iron
charred lake
#

Oui, mais dans la boucle il doit y avoir moyen de récupérer le nom du channel, et ensuite de faire une comparaison pour récupérer l'id du channel

#

pour l'instant un console.log de bot.guilds.array ne retourne rien donc bon

burnt perch
#

Pck ducoup la tu dois retoucher le code pour ajouter un server et les channel bah il a qu'à récup un Channel en commun dans tout les serveur

surreal sparrow
sharp grail
charred lake
burnt perch
#

Ah m'y Bad alors

#

Jsuis pas la page

sharp grail
#

en fait si tu veux pas retoucher le code, soit tu prends le default channel, soit tu stockes une id de chan dans une db

sharp grail
cyan iron
#

Tu veux que je fasse quoi de tout ça ?

#

Si t'as pas compris comment fonctionnait le catch, dit le

#

Car il me semble que c'est le cas

keen narwhal
#

bah c'est pas sa c'est que je trouve pas le bon .send()

cyan iron
#

C'est toi qui a dev le bot je saurais pas te le dire bg

keen narwhal
#

je m'en doute

cyan iron
#

@charred lake Du coup si on reprend, tes messages tu veux l'envoyer dans un channel précis qui est fixe ?

keen narwhal
#

mais se que je comprend pas

#

regarde comment il est

#

:

charred lake
#

Je suis entrain depuis cache, de voir si je peux récupérer le nom des channels

keen narwhal
#
\*\*')
                .setFooter('SLMD・Développement', 'https://media.discordapp.net/attachments/904875791890923571/906959858450980955/88.png?width=468&height=468')
                .setTimestamp();

              const row = new client.discord.MessageActionRow()
                .addComponents(
                  new client.discord.MessageButton()
                  .setCustomId('delete-ticket')
                  .setLabel('Supprimer le ticket')
                  .setEmoji('🗑️')
                  .setStyle('DANGER'),
                );

              chan.send({
                embeds: [embed],
                components: [row]
              });
            });

Y'a que sa comme .send() qui appartient a ce message

cyan iron
#

Alors si tu veux un conseil ne fonctionne jamais avec des choses qui sont modifiables comme le nom

#

C'est pas forcément bon, un ID ne changera jamais par exemple

#

Si tu changes le nom de ton salon c'est cuit

sharp grail
charred lake
#

J'avoue, je vais me baser sur l'id

keen narwhal
#

je sais pas bonne question mdr

ancient sonnetBOT
#
Citation du message de Wailrone™#0666 posté dans #javascript

QuoteS ```js
let array = ["617677968474636298", "781299002695483442"]
for (const element of array) {
client.channels.cache.get(element)?.send(tonmsg)
}


➜ [Voir le message original]([#javascript-typescript message](/guild/223070469148901376/channel/617677968474636298/))
cyan iron
#

C'est aussi con que ça

charred lake
#

Je vais faire des tests, bouge pas

cyan iron
#

Je te jure que ça va fonctionner, et si tu veux faire en sorte que ça soit dynamique dans le futur ça fonctionnera

charred lake
#

J'ai suivi ta méthode, pour l'instant on est sur un échec

#

J'essai de trouver pourquoi

cyan iron
#

T'as une erreur ?

charred lake
#

ça vient d'ici

#

Nop, aucune erreur

cyan iron
#

c'est le ?

#

Il trouve pas ton channel je pense

charred lake
#

C'est étonnant

cyan iron
#

Essayes d'enlever le ?

#

ça va te mettre une erreur

charred lake
#

J'ai enlenvé le ?, aucune erreur

cyan iron
sharp grail
#

tout les channels sont pas cache si ? 🤔

cyan iron
#

Normalement si

#

Ton array est vide ou quoi ?

sharp grail
charred lake
#

Je check dans le cache, je trouve bien mon channel

#

Mon array est bien rempli

#

Et oui mon code s'éxecute

cyan iron
#

Montre ton code en entier

charred lake
#
messageDatas = response['data']['message'];
      titleDatas = response['data']['title'];
      console.log(titleDatas);
      console.log(messageDatas);
      const exampleEmbed = new MessageEmbed()
        .setColor('#FF924D')
        .setTitle(titleDatas)
        .setURL('https://choose-app.com/')
        .setDescription(messageDatas)
        .setTimestamp()
        let array = ["909467661384179754", "780150862113800243"]
        for (const element of array) {
            bot.channels.cache.get(element).send('bonjour')
        } 
cyan iron
#

Met un console.log avant ton let array

#

et stp

charred lake
#

Un console.log de ?

cyan iron
#

N'importe quoi

#

" hey "

#

Pour savoir s'il passe par là quoi

#

et console.log(element) tant que t'y est dans ta boucle for

charred lake
#

Oui il s'affiche

#

Et dans element, j'ai bien mes deux ID

cyan iron
#

what

#

T'es sûr que ça envoie pas bonjour ?

charred lake
#

nop rien du tout 😦

cyan iron
#
for (const element of array) {
      let channel = bot.channels.cache.get(element)
      console.log(channel)
      channel.send('bonjour')
} 
#

Essaye ça

charred lake
#

Tous est bien listé, mais toujours pas de message envoyé

cyan iron
#

Bon 😂

sharp grail
#

ton bot a la perm d'écrire dans ces salons ? (si pas normalement tu aurais une erreur)

cyan iron
#

Oui

sharp grail
#

sinon c'est rate limit de discord ptet ?

cyan iron
#

On va faire un truc

#
for (const element of array) {
      bot.channels.cache.get(element).send('bonjour')
          .then(m=>console.log(m.url))
          .catch(err=>console.error(err))
} 
charred lake
#

perm ok aussi

cyan iron
#

Voilà

#

Fait ça

#

si ça te console log une URL clique dessus

#

depuis Discord

charred lake
#

Aucune url

cyan iron
#

undefined ?

charred lake
#

RIen du tout

cyan iron
#

bruh

sharp grail
#

le msg se send pas x)

cyan iron
#

Rate limit c'est pas possible

sharp grail
charred lake
#

c'est quoi ,

cyan iron
#

Ton bot est limité niveau action par Discord

#

Pendant un certain temps

#

2h je crois

charred lake
#

comment c'est possible

cyan iron
#

Je vois que ça, c'est impossible sinon !

#
for (const element of array) {
      bot.channels.cache.get(element).send('bonjour')
          .then(m=>console.log(m.url))
          .catch(err=>console.error(err))
} 
#

Essaye ça

#

Et si ça met rien rate limit 100%

#

Ta promise ne renvoie rien ça veut dire qu'elle est " coincée "

charred lake
#

ça renvoi rien

cyan iron
#

Bah voilà

#

maintenant fait ça :

for (const element of array) {
      console.log(bot.channels.cache.get(element).send('bonjour'))
} 
#

Et ça va te mettre un " Promise { < pending > }"

charred lake
#

exact

cyan iron
#

Voilà

#

Donc t'es rate limit :/

#

Si c'est un bot privé change de token

#

Tu recréé un autre bot je veux dire par là

fair surge
#

cc

j'ai un soucis avec mon bot et j'arrive pas à le régler depuis des heures ...

#

j'essaie de créer un salon avec create() et d'ajouter des permissions au salon

cyan iron
#

Montre ton code

fair surge
#

discord me renvoie : Missing Permission
Le role de mon bot a toutes les permissions, sauf adminisatrateur (quand je met admin, sa marche)

cyan iron
#

Bah tu as ta réponse. Ton bot n'a pas les permissions nécessaires

#

Et tu n'as pas besoin d'être admin pour le coup

fair surge
#
await interaction.guild.channels.create('test', {
            type: 'GUILD_VOICE',
            userLimit: 5,
            parent: 'channel_category',
            permissionOverwrites: [
                {
                    id: 'iddemonrole',
                    deny: [Permissions.FLAGS.CONNECT, Permissions.FLAGS.SPEAK],
                }
            ],
        });```
fair surge
cyan iron
#

Cette permission doit être cochée

fair surge
#

Elle est cochée

cyan iron
#

C'est très bizarre

fair surge
#

console.log(interaction.guild.me.permissions.has("MANAGE_CHANNELS")); renvoie true d'ailleurs

cyan iron
#

Attends je me renseigne

fair surge
#

ca fait des heures que je suis dessus, je comprends rien

cyan iron
#

Je vais tester sur mon bot

fair surge
#

dès que je coche la perm admin, tout fonctionne

charred lake
#

Je viens d'essayer avec un nouveau bot, ça marche pas non plus

cyan iron
#

Il se passe quoi là vous avez des problèmes bizarres les gars 😂

sharp grail
charred lake
#

J'ai trouvé le fix

cyan iron
#

Ah bien vu ça

cyan iron
fair surge
cyan iron
#

T'as fait comment ?

charred lake
#

Tu peux me tuer, je t'autorise

cyan iron
#

BAHAHA

#

😂

charred lake
#

Merci pour votre aide héhé

cyan iron
#

Le mec se tirait une balle dans le pied depuis le début

sharp grail
cyan iron
#

@fair surge Essayes de créer un channel sans permissions overwrites pour voir

#

juste .create('test')

charred lake
#

Mais du coup, je vois pas trop comment faire pour après le send, lui dire d'envoyer un embeed

cyan iron
#

Sans permission admin

fair surge
#

si jenlève le permission overwrite, ça fonctionne

charred lake
#

Ouep, j'ai mis la const dans le send, mais j'ai une erreur

cyan iron
#

Ok attends je regarde de plus près

cyan iron
#
.send({
  embeds : [tonEmbed]
})
sharp grail
cyan iron
#

Bah non Hareng il a toutes les perms son bot

fair surge
sharp grail
#

même dans la catégorie ?

fair surge
#

Oui

#
console.log(interaction.guild.me.permissions.has("MANAGE_CHANNELS"));
console.log(interaction.guild.me.permissions.has("MANAGE_ROLES"));
#

Renvoie true

sharp grail
#

ça pour la guild

#

mais ça dit pas pour la catégorie

fair surge
#

pour la catégorie

cyan iron
#

J'ai une bonne et une mauvaise nouvelle, la bonne nouvelle c'est que la permission MANAGE_CHANNELS suffit

#

Et la mauvaise, c'est que j'ai rencontré aucun problème, donc j'ai aucune idée du pourquoi ça te fait ça

keen narwhal
#

bon y'a rien qui marche avec .cach() je suis trop deg

fair surge
#

impossible à trouver 😦

sharp grail
keen narwhal
#

j'ai sa comme erreur

keen narwhal
# sharp grail .catch 🤔

sa

C:\Users\Administrateur\Desktop\SLMD DEV TICKET\node_modules\discord.js\src\rest\RequestHandler.js:349
      throw new DiscordAPIError(data, res.status, request);
            ^

DiscordAPIError: Unknown interaction
    at RequestHandler.execute (C:\Users\Administrateur\Desktop\SLMD DEV TICKET\node_modules\discord.js\src\rest\RequestHandler.js:349:13)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async RequestHandler.push (C:\Users\Administrateur\Desktop\SLMD DEV TICKET\node_modules\discord.js\src\rest\RequestHandler.js:50:14)
    at async ButtonInteraction.reply (C:\Users\Administrateur\Desktop\SLMD DEV TICKET\node_modules\discord.js\src\structures\interfaces\InteractionResponses.js:98:5) {
  method: 'post',
  path: '/interactions/909500212593188904/aW50ZXJhY3Rpb246OTA5NTAwMjEyNTkzMTg4OTA0OmpVSVJZRGE3aGh3MjMzRzBKbUl4MFRZcjVRNGlWVW1iaHluTDlGaXVBeTFUVXo1elNDRFNYU0JibXE2dGJEMEJ6dmpNVGVPbW42SDdGR2RxemZYQm5sVnR1Y1BzcXNETkRid2djU01rT0RJWHBMRkZEN2txaHdCWGZVVGZ1S29v/callback',
  code: 10062,
  httpStatus: 404,
  requestData: {
    json: {
      type: 4,
      data: {
        content: '**Ticket créé! [#909500213813723167](/guild/223070469148901376/channel/909500213813723167/)**',
        tts: false,
        nonce: undefined,
        embeds: undefined,
        components: undefined,
        username: undefined,
        avatar_url: undefined,
        allowed_mentions: undefined,
        flags: 64,
        message_reference: undefined,
        attachments: undefined,
        sticker_ids: undefined
      }
    },
    files: []
  }
}
neat lintel
#

Tu as sûrement mis plus de 3 secondes à répondre à l'interaction

keen narwhal
neat lintel
#

Tu as deferReply pour avoir 15 minutes

mystic bison
#

bonjourn

mystic bison
#

je n'arrive pas a me connecter a mongo db

neat lintel
#

Une erreur ?

mystic bison
#
Failed to connect to MongoDB MongoServerError: bad auth : Authentication failed.
    at MessageStream.messageHandler (C:\Users\melvi\Desktop\f1-twitter\node_modules\mongodb\lib\cmap\connection.js:467:30)
    at MessageStream.emit (node:events:394:28)
    at processIncomingData (C:\Users\melvi\Desktop\f1-twitter\node_modules\mongodb\lib\cmap\message_stream.js:108:16)
    at MessageStream._write (C:\Users\melvi\Desktop\f1-twitter\node_modules\mongodb\lib\cmap\message_stream.js:28:9)
    at writeOrBuffer (node:internal/streams/writable:389:12)
    at _write (node:internal/streams/writable:330:10)
    at MessageStream.Writable.write (node:internal/streams/writable:334:10)
    at TLSSocket.ondata (node:internal/streams/readable:754:22)
    at TLSSocket.emit (node:events:394:28)
    at addChunk (node:internal/streams/readable:315:12) {
  ok: 0,
  code: 8000,
  codeName: 'AtlasError'
}
#

je ne dev pas un bot

neat lintel
#

Ton mot de passe doit pas être bon

#

Il faut pas mettre les chevrons (<>)

mystic bison
#

normalement si mais je vais encore le changer

neat lintel
#

Et faut escape les caractères spéciaux

mystic bison
#

oui oui

mystic bison
neat lintel
#

Non tu garde la même typo

mystic bison
#

ok

#

ça fonctionne toujours ça ?

#

pour mongo ?

neat lintel
#

Bah oui sûrement sinon ça s'afficherai pas

mystic bison
#

car sinon il veut bien

neat lintel
#

Ah oui faut enlever ces options

#

Ça a changé ça

mystic bison
#

ok

#

merci

twin bane
#

bonsoir, dans le statut de mon bot j'aimerai afficher le nombre de personne sur mon discord, je ne m'y connais pas énormément mais j'essaye d'apprendre ! merci d'avance, Mrfafidoo.

cyan iron
keen narwhal
#

Bonsoir bonsoir, je cherche depuis un moment pourquoi lorsque j'utilise un message.collector, les questions se dupliquent à chaque fois que j'y réponds ? (exemple: je rentre la commande une première fois, le collector envoie un seul message donc tout se passe bien, j'y réponds, etc.. ça se termine, je relance la commande pour tester une seconde fois et là, le collector envoie 2 messages, et donc duplique les réponses, etc..)

sharp grail
#

Ton autre collector doit encore être actif

keen narwhal
#

C’est ce que je me suis dis, dans mon ˋcollector.on('end', …)ˋ je return mais je ne sais pas si c’est la bonne manière de stopper le collector (le ˋcollector.stop()` n’a rien fait de spécial en plus)

neat lintel
#

Mets une option max: 1 par exemple. Le collector.on("end") ne fait que se déclencher quand le collector est fini, il ne permet pas d'y mettre fin.

keen narwhal
#

Je vois ça quand je finis le taff et je vous dis 👍

thorn briar
#

Hello, je cherche un moyen de reset la sélection d'un menu de sélection comme dans #créer-un-vocal mais je ne trouve pas comment faire :/

slim anvil
thorn briar
slim anvil
#

pas de souss

keen narwhal
cyan iron
#

Montre nous ton code @keen narwhal

keen narwhal
#

J’envoie ça

#
  let counter = 0
  const toAsk = [
    "Identifiant ?",
    "Raison ?",
    "Durée ?"
  ]

  const filter = (m) => {
  return m.author === user
  }
  const collector = new Discord.MessageCollector(message.channel, filter, {
  max: 3,
  time: 1000 * 45,
  })

  message.channel.send(toAsk[counter++])

  collector.on('collect', (m) => {
    if (counter < toAsk.length) {
        m.channel.send(toAsk[counter++])
    }
  })
  collector.on('end', (collected) => {
    if (collected.size < toAsk.length) {
      const embedAbsenceError1 = new Discord.MessageEmbed()
      .setColor('#36393f')
      .setDescription(`
      ${uncheck}・Erreur

      Tu as été trop lent dans le réponses aux questions posées !`)
      message.channel.bulkDelete(collected.size*2)
        message.channel.send(embedAbsenceError1).then(emb => {
          emb.delete({ timeout: 15000})
        })

      return;
    }
    const embedAbsenceError2 = new Discord.MessageEmbed()
    .setColor('#36393f')
    .setDescription(`
    ${uncheck}・Erreur

    La dernière donnée doit s'exprimer en chiffres.`)
    if (!parseInt(collected.map(m => m.content)[2], 10) && collected.map(m => m.content)[2]) {
      message.channel.bulkDelete(6)
      message.channel.send(embedAbsenceError2)
      return;
    }   
    const embedSanction = new Discord.MessageEmbed()
    .setColor('#36393f')
    .setFooter('Staff: ' + user.tag, user.displayAvatarURL())
    .setDescription(`${ban} Type de sanction • Bannissement ! 

    ${avatar} ID • ${collected.map(m => m.content)[0]} 

    ${reason} Raison • ${collected.map(m => m.content)[1]} 

    ${clock} Durée • ${collected.map(m => m.content)[2]}`)

      channelSanction.send(embedSanction)
  })

  return;
#

@cyan iron

cyan iron
#

il faut vraiment que tu indente ton code c'est pas très lisible

keen narwhal
#

Ah oui, petite erreur de copie, je change ça

#

@cyan iron c'est bon 👍

ashen rapids
spare trail
#

Merci, j'essaie de comprendre pourquoi ça me renvoie msg.startThread is not a function maintenant mmLul

#

Enfaite j'ai juste rien qui est à jour mmLul

slim anvil
#

Oui faut passer en v13 sinon foutu

spare trail
#

Bah là j'suis en galère sur l'update de Node 🤡

keen narwhal
#

pourquoi ?

spare trail
#

J'suis en v16.4.0 et il me faut la v16.6.0

keen narwhal
#

tu as juste à mettre tes package à jour

spare trail
#

C'est ce que j'essaie de faire depuis tout à l'heure mmLul

slim anvil
#

Le mieux c’est d’utiliser nvm pour gérer ces versions

#

Tu auras juste à faire nvm install 16.6 puis nvm use 16.6

iron elm
#

Hey , je suis entrain de confectionner un site avec le petit bijoux 'react' , je souhaite ajouter une photo avec 'react-boostrap' (code en dessous) mais cela ne fonctionne pas x) et je ne comprend pas pourquoi car le chemin devrait être bon (celons moi) . Merci de votre réponse .

#

<div>
<h2>A la une</h2>
<Row xs={1} md={2} className="g-4">
{Array.from({ length: 4 }).map((_, idx) => (
<Col>
<Card>
<Card.Img variant="top" src="./media-house/house-g4ec4c377a_640.jpg" />
<Card.Body>
<Card.Title>Card title</Card.Title>
<Card.Text>
This is a longer card with supporting text below as a natural
lead-in to additional content. This content is a little bit longer.
</Card.Text>
</Card.Body>
</Card>
</Col>
))}
</Row>
</div>

#

Au cas ou ...

keen narwhal
#

essaye avec ../

iron elm
keen narwhal
#

Salut j'ai se problème quand j'appuie sur le bouton supprimer le ticket comment faire

#
C:\Users\Administrateur\Desktop\SLMD DEV TICKET\node_modules\discord.js\src\rest\RequestHandler.js:349
      throw new DiscordAPIError(data, res.status, request);
            ^

DiscordAPIError: Unknown Channel
    at RequestHandler.execute (C:\Users\Administrateur\Desktop\SLMD DEV TICKET\node_modules\discord.js\src\rest\RequestHandler.js:349:13)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async RequestHandler.push (C:\Users\Administrateur\Desktop\SLMD DEV TICKET\node_modules\discord.js\src\rest\RequestHandler.js:50:14)
    at async TextChannel.delete (C:\Users\Administrateur\Desktop\SLMD DEV TICKET\node_modules\discord.js\src\structures\GuildChannel.js:542:5) {
  method: 'delete',
  path: '/channels/909906005243088896',
  code: 10003,
  httpStatus: 404,
  requestData: { json: undefined, files: [] }
}
slim anvil
#

test pour voir

iron elm
#

et pas de message d'erreurs

sharp grail
#

tu comprends le principe de catch // try catch ?

ancient sonnetBOT
#
Résultats de la recherche: try

IDBIndex.multiEntry
La propriété multiEntry, rattachée à l'interface IDBIndex, est un booléen qui indique le comportement de l'index lorsque le résultat de l'évaluation d'un chemin de clé renvoie un tableau.

Example:

var monIndex = objectStore.index('index');
console.log(monIndex.multiEntry);

runtime.getPackageDirectoryEntry()
Renvoie un objet DirectoryEntry représentant le répertoire du package.

Example:

var gettingEntry = browser.runtime.getPackageDirectoryEntry()

try...catch
L'instruction try...catch regroupe des instructions à exécuter et définit une réponse si l'une de ces instructions provoque une exception.

Example:

try {
   instructions_try
}
[catch (exception_var_1 if condition_1) { // non-standard
   instructions_catch_1
}]
...
[catch (exception_var_2) {
   instructions_catch_2
}]
[finally {
   instructions_finally
}]
iron elm
#

J'ai réussi a résoudre mon bug sauvage en faisant :
'' import house from 'url' " puis
" <Card.Img src={house} />"

keen narwhal
sharp grail
#

c'est .catch déjà x)

keen narwhal
#

faute de frappe

sharp grail
#

bref tu tentes de supprimer un channel qui est déjà delete manifestement

#

donc

keen narwhal
#

oui c'est sa

sharp grail
#

tu peux par ex ajouter

channel.delete().catch(error => console.error(error))
keen narwhal
#

@sharp grail Merci beaucoup sa à marcher ⭐ ⭐ ⭐ ⭐ ⭐

ancient sonnetBOT
#
Citation du message de Stanislas ☂#0001 posté dans #javascript

QuoteS Bonsoir bonsoir, je cherche depuis un moment pourquoi lorsque j'utilise un message.collector, les questions se dupliquent à chaque fois que j'y réponds ? (exemple: je rentre la commande une première fois, le collector envoie un seul message donc tout se passe bien, j'y réponds, etc.. ça se termine, je relance la commande pour tester une seconde fois et là, le collector envoie 2 messages, et donc duplique les réponses, etc..) QuoteE

➜ [Voir le message original](#javascript-typescript message)

keen narwhal
#

Petit up

idle ice
keen narwhal
# iron elm Au cas ou ...

Pour ma part, je crée un dossier par rapport à ton component dans le dossier public ex:(public/Card) et après je l'appel et l'ajoute comme ça <img src={process.env.PUBLIC_URL + '/Card/TonIMG.png'} alt={'Ton alt'} className={'ton-css'}/>

iron elm
iron elm
keen narwhal
#

Tien moi au jus si ça fonctionne ou non, mais normalement y'aura pas de problème

iron elm
keen narwhal
idle ice
iron elm
idle ice
#

Ouaip 😄

iron elm
#

Et admettons je souhaite mettre un background avec une image dans le 'scss' c'est le meme procéder ?

idle ice
#

Yup

#

le dossier Public, c'est tout ce qui sera amené à être accessible par l'utilisateur, en dehors de tes pages

#

Musique, image, quoique ce soit 🙂

iron elm
#

Mais dans le scss j'ai mon 'background: url('Mon url')' j'ai voulut le faire {process.env.PUBLIC_URL+'/'} mais ca n'a pas fonctionner x)

idle ice
#

Ah non, dans le SCSS tu pourras pas x)

iron elm
#

Eclaire moi donc ^^

idle ice
#

Faut te dire que tes pages, composants, etc, ce n'est pas destiné à être lu "de manière brute", dans ton cas tu build ton site avant tout
Alors que tes images, elle reste normales, et doivent être accessible

Tes pages, composants, tout ce qui va être build est ta boîte noire
Tes images, faut qu'on puisse les lire de PARTOUT 🙂

#

Dans ton cas, au lieu de faire process.env.PUBLIC_URL, tu dois juste faire url() avec l'adresse après public
Donc si ton image est public/background/monmagnifiquebg.png tu mettras url('/background/monmagnifiquebg.png')

iron elm
#

Okey je vais tester sa , mais ducoup pourquoi ne pas mettre le dossier 'style' dans public ?

#

Vue que c'est directement vue par l'utilisateur (celons moi )

idle ice
#

car dans ton cas, les framework style React et compagnie incluent le style dans leur build, minifié et tout ce qui va avec

iron elm
#

Ca marche okey , merci beaucoup ! Je vien d'essayer ce que tu ma dit plus haut mais cela ne fonctionne pas x)

#

mon url : background: url('./media/fondDecrans.jpg');

idle ice
#

Met pas le point ahah

#

Tu dois te dire que tu met exactement le lien après ton nom de domaine dans une méthode url()

#

Par exemple

iron elm
#

Je comprend pas ... Lol

idle ice
#

juste, met pas le . 😛

#

tu met url('/media/fondDecrans.jpg')

iron elm
#

Oui c'est fait : background: url('/media/fondDecrans.jpg');

idle ice
#

Et là tu n'arrives pas à l'afficher ?

iron elm
#

Nop ...

idle ice
#

Tu me confirmes qu'elle est dans /public/media/fonDecrans.jpg ?

iron elm
#

yes !

#

J'ai une erreur

idle ice
#

Tu sais me dire ?

iron elm
#

./src/styles/styles.scss (./node_modules/css-loader/dist/cjs.js??ref--5-oneOf-6-1!./node_modules/postcss-loader/src??postcss!./node_modules/resolve-url-loader??ref--5-oneOf-6-3!./node_modules/sass-loader/dist/cjs.js??ref--5-oneOf-6-4!./src/styles/styles.scss)
Error: Can't resolve '../media/fondDecrans.jpg' in 'D:\Programmation\PROJET\immosite\src\styles'

#

Soorry x)

idle ice
#

Can't resolve '../media/fondDecrans.jpg'
Je te frappe quand? xD

iron elm
#

background: url('/media/fondDecrans.jpg');

#

J'ai mit sa hein

idle ice
#

S'il te dit que tu as mis ../ c'est que quelque part tu l'as mis, c'pas possible autrement x)

#

Ou bien vide le cache de ton framework, ca peut provenir de ça

iron elm
#

Oui ya que un lien et c'est dans mon fichier _home.scss

#

j'essaie de vider le cache

#

'npm start -- --reset-cache '

#

Nan ca me fais la meme chose x)

idle ice
#

La même erreur?

iron elm
#

Si ca peut t'aider

#

et oui

#

    .recherche-home{
        background: url('/media/fondDecrans.jpg');
        padding: 15px;
        padding-bottom: 25%;
        background-repeat: no-repeat;
        text-align: center;
        width: 100%;
       
    }
    i{
        left: 10px;
    }
    .recherche-home-items{  
        padding-bottom: 10%;
        padding: 50px;      
        background-color: rgba(84, 84, 84, 0.85);
        border-radius: 10px;
        box-shadow: 10px 5px 15px ;    
              
    }
    hr{
        color: white;

    }

}
#

Mon fichier scss ou il contient le lien

peak cedar
#

Yop


    exports.run = (client, message, args, warns) => {
    }

        var Discord = require("discord.js");

        const permisjebota = new Discord.MessageEmbed()
            .setTitle("⛔ je n'ai aucune autorité! :O")
            .setColor('RANDOM')
            .setDescription("je n'ai aucune autorité  à cette commande ! Donnez-moi des autorisations ou consultez l'administrateur du serveur")
            .setTimestamp()
            // Embed na permisje dla użytkownika
        const permisje = new Discord.MessageEmbed()
            .setTitle("Vous n'êtes pas autorisé à cette commande! :O")
            .setColor('RANDOM')
            .setDescription("Vous n'êtes pas autorisé à exécuter cette commande ! Si vous pensez qu'il s'agit d'un bug, veuillez consulter l'administrateur du serveur! ou @peak cedar")

        if (!message.member.guild.me.hasPermission("ADMINISTRATOR"))
            return message.channel.send(permisjebota)
        if (!message.member.hasPermission("MANAGE_MESSAGES")) return message.channel.send(permisje)

        if (!args[0, 1]) {
            const bananekbot = new Discord.MessageEmbed()
                .setTitle("Vous n'avez pas fourni d'arguments !")
                .setColor('RANDOM')
                .setDescription("Utilisation correcte : `!warn <@...> <raison>`")
            return message.channel.send(bananekbot)
        }

        var warnUser = message.guild.member(message.mentions.users.first() || message.guild.members.get(args[0]))

        var reason = args.slice(1).join(" ")

        if (!warnUser) return message.channel.send("Pas d'argument. Utilisation correcte : !warn <@...> <raison>")

        if (!warns[warnUser.id]) warns[warnUser.id] = {
            warns: 0,
        }

        warns[warnUser.id].warns++

            fs.writeFile("./data/warnings.json", JSON.stringify(warns), (err) => {
                if (err) console.log(err)
            })

        const warnembed = new Discord.MessageEmbed()
            .setTitle("✅ Parfait Warn admis")
            .setColor('RANDOM')
            .setTimestamp()
            .setDescription(`Utilisateur: ${warnUser} (${warnUser.id})
    Warn Mit par: ${message.author}
    Raison: ${reason}`)
        return message.channel.send(warnembed)


#

j'ai un ptit prob

#

quand je @ qq'un apres et jmet la raison ça me dit


Uncaught TypeError: Cannot read property '275973540639932418' of undefined


full scaffold
#

Quelle ligne l'erreur ?

peak cedar
#

        var warnUser = message.guild.member(message.mentions.users.first() || message.guild.members.get(args[0]))


#

28

full scaffold
#

Déjà tu peux remplacer tout tes var par let

#

ça change rien à ton erreur mais c'est une bonne pratique

peak cedar
#

Oe c par habitude le var c une habitude de con js js 😂

#

mais parcontre jcomprend pas l'erreur

#

😭

#

genre jsais pas jvois que cette ligne qui beug

neat lintel
#

Peut être que ton paramètre warns est undefined

peak cedar
#

bas il et defined dans le index

neat lintel
#

Oui mais tu l'as mis au bon endroit ? Si tu le log il a bien la bonne valeur ?

neat lintel
#

Même en V12

peak cedar
#

jtavoue que jpense pas que jlai bien fait genre jlai defined dans index et jlai direct Mit a la First ligne

neat lintel
neat lintel
peak cedar
#

console.log("test")

neat lintel
#

Non fais un console.log(warns) dans la commande

peak cedar
#

okey

#

undefined

#

ahanahahhahaha 😭

neat lintel
#

Voilà le problème

#

Regardes maintenant quand tu appel la fonction pour comprendre le problème à ce niveau

peak cedar
neat lintel
#

Tu ne l'a pas mis en paramètre de la fonction cette variable warns

#

quand tu as la ligne avec run(client, message, args) faut ajouter un paramètre args warns

peak cedar
#

bas il y et dja le args

#

nan ?

neat lintel
#

Args oui

#

warns non

peak cedar
neat lintel
#

Ah oui excuses je me suis trompé dans mon message

neat lintel
# peak cedar 3

Ça c'est bon maintenant faut regarder quand tu appel la fonction

#

Ça c'est la déclaration

#

Normalement ça doit être à la fin de l'évent "message"

peak cedar
#

a la fin ?

#

genre juste apres ?

neat lintel
#

Vers la fin en général après ça dépend de ton code

peak cedar
#

mon warns pk y marche pas dcp

#

il et mit

neat lintel
#

Fais voir

peak cedar
#

bas dcp il et mit

neat lintel
#

Ça c'est toujours la déclaration de la fonction

#

Il est pas mit dans l'appel

peak cedar
neat lintel
#

Et probablement même pas définis dans le fichier en question

peak cedar
neat lintel
#

Vas dans le dossier events

#

Et envois moi la fin de l'évent message

peak cedar
neat lintel
#

Voila

#

Il y a pas warns

peak cedar
#

au cmd.run

#

?

neat lintel
#

Oui

#

Mets warns

peak cedar
#

okey jte met

#

ça

neat lintel
#

Et du coup déclare la variable dans le fichier aussi

peak cedar
#

oe mais genre comment je fait parce que y recherche de event le fichier data

neat lintel
#

Tu prends celle que tu as dans le index.js et tu la met dans ce fichier

peak cedar
#

c bon

#

jlai mit

#

et la jtest

neat lintel
#

D'ac

peak cedar
#

Uncaught Error: Cannot find module './data/warnings.json'

#

ça recherche du fichier

#

event

#

le fichier data

#

et nn pas de la racine

#

jfait comment ?

neat lintel
#

Du coup faut faire ../data/etc

peak cedar
#

donc deux .

neat lintel
#

Oui

peak cedar
#

k jlai fait jtry

#

@neat lintelC Bon Merci bgggggggggggggggggggggggggggggggggg 💌

neat lintel
#

De rien 😉

peak cedar
#

devwithyourhead Merci vrm

#

❤️

peak cedar
#

@neat lintelre bsoin de toi

#

😂

#

comment jfait pour retirer les undefined

oak turret
#

fais voir ton code

#

@peak cedar

peak cedar
#

fait pas gaffe au code en dssous

#

@oak turret

oak turret
#

c'est normal

#
.addField(title, value, inline)
#

le dernier argument étant facultatif

#

il te manque la value donc, c'est pour ça

peak cedar
#

@oak turret oe j'ai trouver

#

j'ai un clavier invisible

#

donc comme ça sa marche

#

mais j'ai un prob de find et guild etc;?...

#

Uncaught TypeError: Cannot read property 'find' of undefined

#

exports.run = (client, message, args) => {

    message.delete()

    var Discord = require("discord.js");

    const embed = new Discord.MessageEmbed()

    .setTitle("Acceptez le règlement de Ouessant Life France ?")
        .setColor('RANDOM')
        .addField(`📌 - ʀᴇɢʟᴇᴍᴇɴᴛ`, `
        Si vous acceptez le règlement, vous acceptez d'obtenir des avertissements lorsque les membres du staff l'estiment.
        `)
        .addField(`ㅤ `, `1 ➡️ Une identité RolePlay est obligatoire sur le discord. Vous devez avoir un nom et prénom RolePlay en guise de votre pseudo sur Discord.`)
        .addField(`ㅤ `, `2 ➡️ Il est interdit d'insulter ou de harceler les autres membres. Le respect des autres est un prérequis.`)
        .addField(`ㅤ `, `3 ➡️ Il est interdit de partager du contenu pornographique, gênant et/ou en rapport avec la religion et/ou la politique.`)
        .addField(`ㅤ `, `4 ➡️ La publicité n'est autorisée que sur demande et avec approbation.`)
        .addField(`ㅤ `, `5 ➡️ Il est interdit de porter un nom pouvant choquer quelqu'un. L'usurpation d'identité est interdite sur le serveur.`)
        .addField(`ㅤ `, `7 ➡️ Vous devez respecter les sujets des salons et suivre ce qu'il est indiqué.`)
        .addField(`ㅤ `, `8 ➡️ Essayer de contourner une sanction résultera à un bannissement définitif.`)
        .addField(`ㅤ `, `9 ➡️ Évitez les pseudos incluant des caractères spécifiques.`)
        .addField(`ㅤ `, `⚠️ Si vous n’avez pas vu que nous sommes passés de la règle 5 à 7, c'est que vous avez mal lu le règlement.`)
        .setFooter(`Pour accepter le règlement du serveur veuillez interagir avec la réaction ci-dessous !`)
        .setTimestamp();
    message.channel.send(embed).then(function(message) {
        message.react('✅')
        client.on('messageReactionAdd', (reaction, user) => {
            if (reaction.emoji.name === "✅" && user.id !== client.user.id) {

                const guild = reaction.message.guild.members.cache.get(user.id)


                let role = message.guild.role.find(r => r.name === "Staff");

                const memberWhoReacted = guild.members.find(member => member.id === user.id);

                memberWhoReacted.addRole(role);

                console.log("Règlement Accepter Welcome !")
            };
        });
    });

}


#

dans le check de la react

#

y'a un prob pour add un role ça beug

#

jsais pas pk

#

@oak turret

oak turret
#

relis toi

let role = reaction.message.guild.roles.find(r => r.name === "Staff");
peak cedar
#

le s ?

oak turret
#

et le reaction

#

d'ailleurs, chance ton const guild, renomme le ça va sûrement faire des conflits quelque part

peak cedar
#

Uncaught TypeError: reaction.message.guild.roles.find is not a function

#

le .cache?

oak turret
#

.cache.find alors

peak cedar
#

yep j'y ai penser

#

Uncaught TypeError: Cannot read property 'find' of undefined

#

bon pas Find 😂

oak turret
#

un peu useless le .find, si t'as l'id c'est mieux de faire un .get

peak cedar
#

let role = reaction.message.guild.roles.cache.get(r => r.id=== "idici ? ");

oak turret
#

non juste l'id

peak cedar
#

let role = reaction.message.guild.roles.get("id");

oak turret
#

oui

peak cedar
#

Uncaught TypeError: reaction.message.guild.roles.get is not a function

oak turret
#

t'as changé ton const guild ?

#

.cache.get aussi

peak cedar
oak turret
#

mais attend t'es en v12 ou v13?

peak cedar
#

12 jcrois

pulsar fiber
#

Hey dans un embed on m'est comment une image qui est lié à un lien ? En gros j'ai des lien Amazon mais si je m'est juste le lien l'image apparaît pas dedans comparée à un message normal vous avez une idée ?

keen narwhal
peak cedar
#

oe mais faudrais tout refaire 😭

oak turret
#

ou .setThumbnail()

pulsar fiber
#

Okay je vais essayer merci

ancient sonnetBOT
#
Citation du message de Stanislas ☂#0001 posté dans #javascript

QuoteS Bonsoir bonsoir, je cherche depuis un moment pourquoi lorsque j'utilise un message.collector, les questions se dupliquent à chaque fois que j'y réponds ? (exemple: je rentre la commande une première fois, le collector envoie un seul message donc tout se passe bien, j'y réponds, etc.. ça se termine, je relance la commande pour tester une seconde fois et là, le collector envoie 2 messages, et donc duplique les réponses, etc..) QuoteE

➜ [Voir le message original](#javascript-typescript message)

keen narwhal
#

Je n'ai malheureusement toujours rien trouvé

mystic bison
#
node:events:371
      throw er; // Unhandled 'error' event
      ^

Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
    at new NodeError (node:internal/errors:371:5)
      ^

Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
    at new NodeError (node:internal/errors:371:5)
    at ServerResponse.setHeader (node:_http_outgoing:573:11)
    at ServerResponse.header (C:\Users\melvi\Desktop\f1-twitter\node_modules\express\lib\response.js:771:10)
    at ServerResponse.send (C:\Users\melvi\Desktop\f1-twitter\node_modules\express\lib\response.js:170:12)
    at ServerResponse.json (C:\Users\melvi\Desktop\f1-twitter\node_modules\express\lib\response.js:267:15)
    at ServerResponse.send (C:\Users\melvi\Desktop\f1-twitter\node_modules\express\lib\response.js:158:21)
    at C:\Users\melvi\Desktop\f1-twitter\controllers\user.controller.js:33:30
    at C:\Users\melvi\Desktop\f1-twitter\node_modules\mongoose\lib\model.js:4931:18
    at processTicksAndRejections (node:internal/process/task_queues:78:11)
Emitted 'error' event on Function instance at:
    at C:\Users\melvi\Desktop\f1-twitter\node_modules\mongoose\lib\model.js:4933:15
    at processTicksAndRejections (node:internal/process/task_queues:78:11) {
  code: 'ERR_HTTP_HEADERS_SENT'
}
PS C:\Users\melvi\Desktop\f1-twitter>```*
#
const UserModel = require("../models/user.model");
const ObjectID = require("mongoose").Types.ObjectId;

module.exports.getAllUsers = async (req, res) => {
  const users = await UserModel.find().select("-password");
  res.status(200).json(users);
};

module.exports.userInfo = (req, res) => {
  if (!ObjectID.isValid(req.params.id))
    return res.status(400).send("ID unknown : " + req.params.id);

  UserModel.findById(req.params.id, (err, docs) => {
    if (!err) res.send(docs);
    else console.log("ID unknown : " + err);
  }).select("-password");
};

module.exports.updateUser = async (req, res) => {
  if (!ObjectID.isValid(req.params.id))
    return res.status(400).send("ID unknown : " + req.params.id);

  try {
    await UserModel.findOneAndUpdate(
      { _id: req.params.id },
      {
        $set: {
          bio: req.body.bio
        }
      },
      { new: true, upsert: true, setDefaultsOnInsert: true },
      (err, docs) => {
        if (!err) return res.send(docs);
        if (err) return res.status(500).send({ message: err });
      }
    );
  } catch (err) {
    return res.status(500).json({ message: err });
  }
};
#

je suis en train de dev un reseaux social

ocean grail
#

Hey
J'aurais besoin d'aide svp 😅
Je fais un bot discord et j'aimerais que quand l utilisateur coche la réaction du bot, que le bot affiche un message. J'ai réussi à faire en sorte que le bot ai la reaction mais quand on coche la réaction rien ne se passe
Voici la Code

#
        if (message.content.startsWith(`Mon age est `)) {
            if (message.author.bot) return;
                const SayMessage = message.content.slice(4).trim();
                const reactionMessage = await message.channel.send(`Ton ` + SayMessage)
                  .then(message => {
            message.react("✅")
        })

                switch (reaction.emoji.name) {
                    case "✅":

                    message.channel.send(`bv`)


                }
            }
            age == 1;
        }
    );
cyan iron
#

Hey, il faut que tu utilises un reaction collector

ocean grail
#

hmmm

#

merci 🙂

surreal sparrow
#

Salut ! Je suis bloqué là, comment je peux envoyé un message dans un channel que je viens de crée j'ai tente avec une var mais je pense que je me trompe dans le send

#
            var formachannel = message.guild.channels
                .create(`Formation ${message.mentions.members.first().nickname}`, {
                    type: `text`,
                    parent: config.formationcategory,
                    permissionOverwrites: [
                        {
                        id: mentionsfirst.id,
                        deny: [``],
                        allow: [`VIEW_CHANNEL`]
                        },
                        {
                        id: config.gradesuperadmin,
                        deny: [``],
                        allow: [`VIEW_CHANNEL`]
                        },
                        {
                        id: message.guild.id,
                        deny: [`VIEW_CHANNEL`],
                        allow: [``]
                        }
                    ],
                })
                formachannel.send({ embeds: [embedFormation] });

neat lintel
#

c'est presque bon mais il manque un await ou un .then pour attendre que le channel soit crée

surreal sparrow
#

Hum ok merci 😉

neat lintel
#

et utilises const a la place de var c'est mieux 😉

surreal sparrow
#

Pas de soucis, je n'avais pas bien compris le then 😉

surreal sparrow
# neat lintel et utilises const a la place de var c'est mieux 😉

Il me dit qu'il est undefined

            var formachannel = message.guild.channels
                .create(`Formation ${mentionsfirst.nickname}`, {
                    type: `text`,
                    parent: config.formationcategory,
                    permissionOverwrites: [
                        {
                        id: mentionsfirst.id,
                        deny: [``],
                        allow: [`VIEW_CHANNEL`]
                        },
                        {
                        id: config.gradesuperadmin,
                        deny: [``],
                        allow: [`VIEW_CHANNEL`]
                        },
                        {
                        id: message.guild.id,
                        deny: [`VIEW_CHANNEL`],
                        allow: [``]
                        }
                    ],
                })
                .then(formachannel.send({ embeds: [embedFormation] }));
#

J'aurais mal mis mon then ?

#

Ah non problème régtlé

#

Juste à mettre en const, merci

neat lintel
#

De rien

mystic bison
#

voila j'ai un problème dans mon fichier user.copontroller.js

#

le voila

#
Listening on port 5000
connected to MongoDB
node:events:371
      throw er; // Unhandled 'error' event
      ^

Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
    at new NodeError (node:internal/errors:371:5)
    at ServerResponse.setHeader (node:_http_outgoing:573:11)
    at ServerResponse.header (C:\Users\melvi\Desktop\f1-twitter\node_modules\express\lib\response.js:771:10)
    at ServerResponse.send (C:\Users\melvi\Desktop\f1-twitter\node_modules\express\lib\response.js:170:12)
    at ServerResponse.json (C:\Users\melvi\Desktop\f1-twitter\node_modules\express\lib\response.js:267:15)
    at C:\Users\melvi\Desktop\f1-twitter\controllers\user.controller.js:62:35
    at C:\Users\melvi\Desktop\f1-twitter\node_modules\mongoose\lib\model.js:4931:18
    at processTicksAndRejections (node:internal/process/task_queues:78:11)
Emitted 'error' event on Function instance at:
    at C:\Users\melvi\Desktop\f1-twitter\node_modules\mongoose\lib\model.js:4933:15
    at processTicksAndRejections (node:internal/process/task_queues:78:11) {
  code: 'ERR_HTTP_HEADERS_SENT'
}
PS C:\Users\melvi\Desktop\f1-twitter> ```
#

voila l'erreur dans mon terminal

#

et voila l'erreur dans postman

#
const UserModel = require("../models/user.model");
const ObjectID = require("mongoose").Types.ObjectId;

module.exports.getAllUsers = async (req, res) => {
  const users = await UserModel.find().select("-password");
  res.status(200).json(users);
};

module.exports.userInfo = (req, res) => {
  if (!ObjectID.isValid(req.params.id))
    return res.status(400).send("ID unknown : " + req.params.id);

  UserModel.findById(req.params.id, (err, docs) => {
    if (!err) res.send(docs);
    else console.log("ID unknown : " + err);
  }).select("-password");
};

module.exports.updateUser=async (req,res) => {
  if (!ObjectID.isValid(req.params.id))
      return res.status(400).send("Id unknown "+ req.params.id)
  try {
      await UserModel.findOneAndUpdate(
          {_id:req.params.id},
          {
              $set:{
                  bio:req.body.bio
              }
          },
          {new:true,upsert:true,setDefaultsOnInsert:true}
      )
          .then((docs) => {return res.send(docs)})
          .catch((err) => {return res.status(500).send({message: err})})
  }
  catch (err) {
      return res.status(500).send({message:err})
  }
}```
#

module.exports.follow = async (req, res) => {
  if (!ObjectID.isValid(req.params.id) || !ObjectID.isValid(req.params.id))
  return res.status(400).send("Id unknown "+ req.params.id)

  try {
    await UserModel.findByIdAndUpdate(
      req.params.id, 
      { $addToSet: { following: req.body.idToFollow}},
      { new: true, upsert: true },
      (err,docs) => {
        if (!err) res.status(201).json(docs);
        else return res.status(400).json(err);
      }
    );

    await UserModel.findByIdAndUpdate(
      req.body.idToFollow,
      { $addToSet: { followers: req.params.id}},
      { new: true, upsert: true },
      (err,docs) => {
        if (!err) res.status(201).json(docs);
        else return res.status(400).json(err);
      }
    )

  } catch (err) {
    return res.status(500).send({message:err})
  }
}
module.exports.unfollow = async (req, res) => {
  if (!ObjectID.isValid(req.params.id))
  return res.status(400).send("Id unknown "+ req.params.id)

  try {

  } catch (err) {
    return res.status(500).send({message:err})
  }
}```
charred scroll
#

"...at C:\Users\melvi\Desktop\f1-twitter\controllers\user.controller.js:62:35"

mystic bison
#

oui ?

surreal sparrow
#

J'ai encore un petit problème sur ce code j'ai le bot qui me dit qu'il n'a pas accès au channel Uncaught ReferenceError: Cannot access 'formachannel' before initialization

const formachannel = message.guild.channels
                .create(`Formation ${mentionsfirst.nickname}`, {
                    tapez : « texte »,
                    parent : config.formationcategory,
                    permissionÉcrase : [
                        {
                        id : mentionsfirst.id,
                        refuser : [``],
                        autoriser : [`VIEW_CHANNEL`]
                        },
                        {
                        identifiant : config.gradesuperadmin,
                        refuser : [``],
                        autoriser : [`VIEW_CHANNEL`]
                        },
                        {
                        identifiant : message.guild.id,
                        refuser : [`VIEW_CHANNEL`],
                        autoriser : [``]
                        }
                    ],
                })
                .then(formachannel.send({ intègre : [embedFormation] }));
#

Je ne sais pas du tout pourquoi il n'a pas accès

charred scroll
#

la syntaxe est bizarre je trouve

mystic bison
#

oui

charred scroll
#

le .then prend une function callback en paramètre comme c'est une Promise

surreal sparrow
#

En français codage facile ? ^^

surreal sparrow
#

Cela veux dire que je dois faire quoi ? ^^

charred scroll
surreal sparrow
#

Bah c'est good non ?

charred scroll
#

gud

surreal sparrow
#

Comprend pas

slim anvil
# surreal sparrow J'ai encore un petit problème sur ce code j'ai le bot qui me dit qu'il n'a pas a...

Oui c'est normal, formaChannel n'est juste pas encore initialisé dans ton .then, tu mélanges la promise via async await et via un .then()
dans ton cas ça aurait fonctionné si tu avais fais

const formaChannel = await message.guild.channels.create(....)
if (!formatChannel) return // do something...
formaChannel.send({ embeds: [embedFormation] })

Et dans l'autre

message.guilds.channels.create(...)
.then((formaChannel) => formaChannel.send({ embeds: [embedFormation] }) );
sudden cipher
#

Salut , en ce moment je développe un bot discord et je cherche à crée un message.react mais qui setName le salon .

delicate field
#

Bonjour, je cherche comment faire ses menus là

slim anvil
#

SelectMenu

surreal sparrow
slim anvil
#

no prob

mystic bison
#

bonjours, je suis en train de faire du back end, et j'ai une erreur. pourriez vous m'aidé à la résoudre

#

voila mon code qui pose souci :

#
const UserModel = require("../models/user.model");
const ObjectID = require("mongoose").Types.ObjectId;

module.exports.getAllUsers = async (req, res) => {
  const users = await UserModel.find().select("-password");
  res.status(200).json(users);
};

module.exports.userInfo = (req, res) => {
  if (!ObjectID.isValid(req.params.id))
    return res.status(400).send("ID unknown : " + req.params.id);

  UserModel.findById(req.params.id, (err, docs) => {
    if (!err) res.send(docs);
    else console.log("ID unknown : " + err);
  }).select("-password");
};

module.exports.updateUser=async (req,res) => {
  if (!ObjectID.isValid(req.params.id))
      return res.status(400).send("Id unknown "+ req.params.id)
  try {
      await UserModel.findOneAndUpdate(
          {_id:req.params.id},
          {
              $set:{
                  bio:req.body.bio
              }
          },
          {new:true,upsert:true,setDefaultsOnInsert:true}
      )
          .then((docs) => {return res.send(docs)})
          .catch((err) => {return res.status(500).send({message: err})})
  }
  catch (err) {
      return res.status(500).send({message:err})
  }
}
#

module.exports.deleteUser = async (req, res) => {
  if (!ObjectID.isValid(req.params.id))
      return res.status(400).send("Id unknown "+ req.params.id)

      try {
        await UserModel.remove({ _id: req.params.id }).exec();
        res.status(200).json({ message: "Successfully deleted."});
      } catch (err) {
        return res.status(500).send({message:err})
      }
} 

module.exports.follow = async (req, res) => {
  if (!ObjectID.isValid(req.params.id) || !ObjectID.isValid(req.params.id))
  return res.status(400).send("Id unknown "+ req.params.id)

  try {
    await UserModel.findByIdAndUpdate(
      req.params.id, 
      { $addToSet: { following: req.body.idToFollow}},
      { new: true, upsert: true },
      (err,docs) => {
        if (!err) res.status(201).json(docs);
        else return res.status(400).json(err);
      }
    );

    await UserModel.findByIdAndUpdate(
      req.body.idToFollow,
      { $addToSet: { followers: req.params.id}},
      { new: true, upsert: true },
      (err,docs) => {
        if (!err) res.status(201).json(docs);
        else return res.status(400).json(err);
      }
    )

  } catch (err) {
    return res.status(500).send({message:err})
  }
}
module.exports.unfollow = async (req, res) => {
  if (!ObjectID.isValid(req.params.id))
  return res.status(400).send("Id unknown "+ req.params.id)

  try {

  } catch (err) {
    return res.status(500).send({message:err})
  }
}```
#

voila mon erreur dans le terminal

#
PS C:\Users\melvi\Desktop\f1-twitter> node server
Listening on port 5000
connected to MongoDB
node:events:371
      throw er; // Unhandled 'error' event
      ^

Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
    at new NodeError (node:internal/errors:371:5)
    at ServerResponse.setHeader (node:_http_outgoing:573:11)
    at ServerResponse.header (C:\Users\melvi\Desktop\f1-twitter\node_modules\express\lib\response.js:771:10)
    at ServerResponse.send (C:\Users\melvi\Desktop\f1-twitter\node_modules\express\lib\response.js:170:12)
    at ServerResponse.json (C:\Users\melvi\Desktop\f1-twitter\node_modules\express\lib\response.js:267:15)
    at C:\Users\melvi\Desktop\f1-twitter\controllers\user.controller.js:62:35
    at C:\Users\melvi\Desktop\f1-twitter\node_modules\mongoose\lib\model.js:4931:18
    at processTicksAndRejections (node:internal/process/task_queues:78:11)
Emitted 'error' event on Function instance at:
    at C:\Users\melvi\Desktop\f1-twitter\node_modules\mongoose\lib\model.js:4933:15
    at processTicksAndRejections (node:internal/process/task_queues:78:11) {
  code: 'ERR_HTTP_HEADERS_SENT'
}```
#

merci par avance

neat lintel
#

Il y a quoi dans user.controller.js vers la ligne 62 ?

mystic bison
#
 try {
    await UserModel.findByIdAndUpdate(
      req.params.id, 
      { $addToSet: { following: req.body.idToFollow}},
      { new: true, upsert: true },
      (err,docs) => {
        if (!err) res.status(201).json(docs);
        else return res.status(400).json(err);
      }
    );```
#

la ligne 62 c'est if (!err)

neat lintel
#

visiblement tu as déja renvoyer ta réponse avant cette ligne alors.

#

Avec un res.json ou res.send ou res.end par exemple

#

Tu peux envoyer plus de code peut etre ?

mystic bison
#

c'est a dire envoyer mon fichier ?

neat lintel
#

ce qu'il y a au dessus dans cette fonction

mystic bison
#

j'ai plusieurs fois ces ligne js if (!err) res.status(201).json(docs); else return res.status(400).json(err);

neat lintel
#

voila le problème

copper pagoda
#

Il a fait un res.status.send avant ça vient peut être de la

neat lintel
#

Tu réponds déja a la requete au dessus

mystic bison
#

du coup il faut que je l'ai supprime ?

neat lintel
#

Tu dois répondre a la requete que quand tous est finis

neat lintel
mystic bison
#

en gros il faut que dans tout mon fichier j'ai uniquement une fois js if (!err) res.status(201).json(docs); else return res.status(400).json(err);

neat lintel
#

oui

mystic bison
#

ok

#

je vais tester

neat lintel
#

ou alors tu en mets plusieurs mais tu te débrouille avec des returns pour que la fonction continue pas quand une réponse a déja été envoyée

neat lintel
#

et bien si tu estimes que il y a une erreur par exemple avec la db et que tu réponds avec un code 500 alors tu mets un return car il y a eu un problème et le code ne doit pas continuer

mystic bison
#

        else return res.status(400).json(err);```
#

je l'ai pas deja ?

neat lintel
#

si tu es dans une sous-fonction le return n'aura pas d'effet sur la fonction principale. Et ensuite c'est las le else qui pose problème mais c'est que tu as 2 if (!err) res.status(201).json(docs);

mystic bison
#

du coup au pire je mais juste (202).json ?

#

?

neat lintel
#

C'est pas changer le code de réponse qui va te permettre de réponde plusieurs fois a une requete. Si tu veux envoyer des infos au client a différents moments sans action de sa part faut mettre en place un websocket

mystic bison
#

j'ai pas compris un mots

neat lintel
#

Bah réponds 1 seul fois a ta requete pour faire simple

#

Tu organise ton code comme tu veux mais tu y répond 1 fois

mystic bison
#

ok

mystic bison
#

j'avoue que je sais pas comment faire

#

mais pas du tout

#

@neat lintel tu pourrais me réexplique

#

désolé

neat lintel
#

Plutot que de mettre plusieurs lignes res.status(201).json(docs); tu en mets que une seul a la fin de la requete

mystic bison
#

les requêtes c'est module.exports

#

?

neat lintel
#

non

#

c'est les requetes http

mystic bison
#

c'est return res.status ?

neat lintel
#

la requete c'est ce qui part du client (un navigateur par exemple) et que ton backend va traiter

mystic bison
#

je suis perdu ptdr

neat lintel
#

Faudrait te renseigner un peu sur comment ca fonctionne un serveur web et comment ca interagit avec le client. Pas besoins d'y passer 5h mais juste aller voir pour savoir ce que tu es en train de coder ca peut etre bien

#

comme ca tu seras pas perdu

mystic bison
#

ok je me suis un peut renseigner

mystic bison
#

si j'ai bien compris

neat lintel
#

oui

mystic bison
#

du coup ici je peux enlever celui à la ligne 62 ?

neat lintel
#

tu enlèves celui que tu veux

mystic bison
#

ok

#

c'est correcte comme ça ?

neat lintel
#

oui ca peut. test

mystic bison
#

j'ai plus de message d'erreur dans vs code, mais dans post man j'ai la même qu'avant

neat lintel
#

logique

#

maintenant faut mettre ca a la fin avec toutes les données

mystic bison
#

a quelle fin ?

neat lintel
#

de ton code

mystic bison
#

mon code se finit pas ```js
(err,docs) => {
if (!err) res.status(201).json(docs);
else return res.status(400).json(err);
}
)

} catch (err) {
return res.status(500).send({message:err})
}
}```

#

donc je dois le mettre après catch ?

neat lintel
#

non

#

avant

mystic bison
#

mon code se finit pas js } ) (err,docs) => { if (!err) res.status(201).json(docs); else return res.status(400).json(err); } catch (err) { return res.status(500).send({message:err}) } }

#

comme ça ?

neat lintel
#

si le callback sort pas de nulle part, oui

mystic bison
surreal sparrow
#

Salut, comment récup l'id seulement avec un argument en mentionnant la personne donc enleve le <@...>

#

Voilà ce que j'ai fait
const args = message.content.slice(config.prefix.length).slice(test.lenght).trim().split(/ +/g);

#

Je suppose qu'il faut faire un slice, mais j'ai tente des trucs sa n'a pas fonctionné

dire latch
#

Ta ligne quand tu mentionnes quelqu'un @surreal sparrow ?

#

Car après avoir mentionné la personne, tu fais tonargs.id

surreal sparrow
#

Enfaite j'ai une commande le but et donc de récup la première mention et deuxième donc je le fais avec des arguments

#

sauf que dans tongars.id marche pas avec les <@...> qui sont présent

#

@dire latch

dire latch
#

🤔

#

Tu veut bien l'id de la personne nan ? @surreal sparrow

surreal sparrow
#

Mais le <@...> casse la tête donc il faut retiré le <, @ et >

#

Pour garder que l'id

dire latch
#

Ba nan 🤔

surreal sparrow
#

Sinon sa ne fonctionne pas

dire latch
#

C'est quoi ta ligne quand tu mention la personne ?

surreal sparrow
#

if(command === "formation"){

dire latch
#

Tu récupère rien là 😦

#

C'est ta commande sa

surreal sparrow
#

sI

dire latch
#

Quand tu fais ta commande formation, tu mentionne bien quelqu'un après nan ?

surreal sparrow
#

Je récup sa

#

let newstaff = args[0];
let formastaff = args[1];

dire latch
#

newstaff, c'est la mention de la personne ?

surreal sparrow
#

Les 2

dire latch
#

message.mentions.users.first();

surreal sparrow
#

newstaff = 1 mention

#

Et forma la deuxieme

dire latch
#

Tu remplaces par ça au lieu de ton args[0]

surreal sparrow
#

Sa marche pas

#

J'ai 2 mentions

#

!formation @surreal sparrow @surreal sparrow

#

En gros il faut que je recup les 2 mentions @dire latch

dire latch
#

Ba si sa fonctionne 😂

surreal sparrow
#

Sa récup que le first

dire latch
#

Faut que tu changes message par msg si tu utilises ça

surreal sparrow
#

et pas le deuxième

dire latch
#

Oui normal 🙂 Faut que tu modif pour le deuxième 🙂

surreal sparrow
#

Bah oui mais c'est bien sa le problème

#

Comme je récup le deuxième

dire latch
#

.second ?

surreal sparrow
#

Non sa existe pas sa

dire latch
#

Faut faire des recherches 🙂

#

En quelques secondes, on trouve des solutions

surreal sparrow
#

Tkt pas que j'en est fait des recherches comme tu dit, mais pas trouvé thx, après à voir si sa fonctionne que sa ne soit pas pour les anciennes versions

surreal sparrow
#

Cela ne fonctionne pas, pourtant le code à l'aire correct

sharp grail
#

en fit

surreal sparrow
sharp grail
#

est ce que tu as besoin des membres ?

#

je veux dire, juste du user, ou tu souhaites utiliser des propriétés / méthodes d'un GuildMember 🤔

surreal sparrow
surreal sparrow
sharp grail
#

oui

#

tu as besoin de l'id ou de plus de choses

#

fin

surreal sparrow
#

Juste ID

sharp grail
#

ah

#

bah du coup

#

@dire latch faut faire des recherches sur les méthodes actuelles ;)

#
const [firstId, secondId] = message.mentions.users.keys();

if (message.mentions.users.size < 2) {
  return;
}

#

par ex

#

pour t'expliquer

#

message.mentions.users renvoie une collection de valeur

#

c'est une sorte de map amélioré

#

en gros chaque valeur est associé à une key

#

et avec cette clé tu pourras obtenir ta valeur

dire latch
#

@sharp grailJ'ai proposé une solution, j'ai jamais dis pour quel version c'était 🤷‍♀️

#

Donc c'est pas à moi qu'il faut dire ça hein 😂

surreal sparrow
#

Hum ok, merci beaucoup tu gère 😉 Je capte pas trop le if juste

sharp grail
surreal sparrow
#

Ah fuck je t'ai dit de la merde je crois, pour récup le role d'un mec ou même lui add sa ne se fait pas par l'id du coup ^^

sharp grail
surreal sparrow
#

Exact 😉

surreal sparrow
# sharp grail ah

Il n'y a pas une façon de retrouver la ligne ou il y a un error, comme j'ai donc cette error mais pas la ligne Uncaught TypeError: Cannot read properties of undefined (reading 'cache')

sharp grail
surreal sparrow
#

Euh no

#

Il faut que je add un .catch(console.error) ? un truc du genre

sharp grail
#

ouh je t'avoue que la console de déboguage très peu pour moi x)

surreal sparrow
#

Je peux le mettre sur un pterodactyl sinon histoire d'avoir la ligne

dire latch
#

Tes en V12 ou V13 ?

sharp grail
dire latch
#

Sinon, tu démarres ton bot direct

sharp grail
dire latch
#

Au lieu de passer par le débug

sharp grail
#

c'est plus pratique que de devoir tout mettre sur un ptéro

surreal sparrow
#

V16

sharp grail
sharp grail
surreal sparrow
#

Ah ^^

#

Oui surement v 13

#

Exact c'est la v13

sharp grail
#

aaaah x)

#

sinon

#

tu peux également cherchant dans ton code où tu aurais placé un .cache

#

ou juste lancer ton bot et voir où est l'erreur

surreal sparrow
#

Je veux bien mais j'ai pas d'error

sharp grail
#

tente d'effectue des actions 🤔

surreal sparrow
#

Attend je vais mettre sa sur ptero je l'ai déjà mis juste le mettre à jour

#

Sa me fait ce que je t'ai envoyé

sharp grail
#

sinon tu t'en fous et tu règleras cette erreur quand tu l'auras PepeClown

surreal sparrow
#

Justement

sharp grail
#

là normalement

surreal sparrow
#

C'est quand j'effectue ma commande

sharp grail
#

tu as des les endroits précis où l'erreur est

surreal sparrow
#

x) Il me la donne jamais

sharp grail
#

je te demande pas la console de déboguage

sharp grail
surreal sparrow
#

Je n'ai pas ce genre de chose

dire latch
#

Lance ton bot

#

Mais en mode node.

#

Et non pas le débug

sharp grail
#

si c'est sur ton ptéro qui te sort l'erreur quand tu effectues une commande si x)

surreal sparrow
sharp grail
surreal sparrow
#

Yes

sharp grail
#

et si ton fichier principal (de départ) c'est index.js par exemple; tu fais node index.js

dire latch
#

Ou node .

surreal sparrow
#

Ok c'est good

sharp grail
#

(de base index.js je suis d'accord)

surreal sparrow
#

Donc oui c'est directement le premier cache

#

else if(first.roles.cache.has(config.gradeformation)) {

sharp grail
#

attends

sharp grail
#

donc vérifie ça dans ta collection

surreal sparrow
#

Je test

surreal sparrow
sharp grail
keen narwhal
#

Bonsoir, pouvez m'aider a faire une ligne pour que le bot détecte que l'utilisateur a eu un certain rôle ?

#

enfaite je souhaite faire en sorte quand le bot détecte que le personne à eu un rôle il envoi un msg dans un salon, mais je ne sais pas comment il peut détecter

dire latch
#

Dans un guildmemberupdate 🤔

#

@keen narwhal

keen narwhal
#

Je ne sais pas comment le formuler