#javascript-typescript

1 messages · Page 102 of 1

dire latch
#

Ba alors, fallait mettre de l'encre !

#

Sa t'amuses à me ghostping ?

unborn knot
#

je croyais que j'avais était blacklist du channel je pouvais plus écrire

dire latch
#

Okok

sharp grail
#

T'as des retours en console ?

unborn knot
#

juste les console.log

#

sinon rien

sharp grail
#

🤔

past nimbus
#

T'es sur de ton path ?

unborn knot
# past nimbus T'es sur de ton path ?

Yep c'est le même path que mon fichier config (juste le nom qui change) et pour le coup pour récupérer des infos de ma config ça fonctionne, donc techniquement ça devrait aussi marché

fading glacier
#

Vérifies bien tes conditions

unborn knot
#

enfaite il écrit bien dans le fichier warn.json

#

mais il en recrée un

#

en dehors du dossier de mon bot..

fading glacier
#

Ah, bah ton chemin est juste pas le bon alors

unborn knot
#

édit : j'ai trouvé, c'était un problème de chemin

red torrent
#

message.member.permissions.has('ADMINISTRATOR')

unborn knot
#

Quelqu'un sais pourquoi mon fichier json n'est pas bon niveau syntaxe svp ? json {"warnedMember":"877379324968316938","sourceWarn":"791401737993977866","reason":"Troll"}, {"warnedMember":"877379324968316938","sourceWarn":"791401737993977866","reason":"Autre"}

oak turret
#

tu ne peux pas faire {}, {}

#

tout doit être dans un seul {} qui ouvre en gros le json

#

je vais te rectifier ton json en le changeant

#

10 minutes

oak turret
sharp grail
#

soit un array soit un object

wraith wren
#

Bonsoir, en gros j'ai fais une API qui me récupère des données, et en gros j'aimerais les récupéré pour les mettres sur ma page HTML et je connais pas du tout, je sais pas si c'est possible de récuperer directement depuis le localhost ou si je dois heberger l'API pcq elle se lance depuis mon script sur mon ordi, j'ai comme erreur:

Access to XMLHttpRequest at 'http://localhost:1010/' from origin 'null' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

Je connais vraiment pas comment ça marche les requête niveau serveur si une âme charitable pourrait m'éclairer ce serait le top merci !

fading glacier
wraith wren
past nimbus
#

C'est pas dans la requête, c'est le serveur qui doit autorisé le cross origin

#

Sinon ça n'a pas de sens

wraith wren
cyan iron
#

Si tu utilises express tu dois faire avec le modules cors

wraith wren
#

ouai j'utilise express

cyan iron
#
#

Voilà

past nimbus
#

Sur ton serveur API, comme 'la dit wailrone, tu peux utiliser un module ou simplement ajouter l'en-tête à la main

cyan iron
#
var cors = require('cors')
app.use(cors())

Finito pépito

past nimbus
#

Je pense que dans son cas, c'est mieux qu'il comprenne à la main pour commencer, mais dans l'idée oui

cyan iron
#

Comment tu le ferais à la main ?

past nimbus
#

Simplement ajouter l'header

#

Qui va autorisé le pre-flight

#

Et donc le cors

wraith wren
wraith wren
past nimbus
#

res.header

#

Si tu es sous express

cyan iron
#

Ouais mais faut l'ajouter partout

#

pas très pratique

past nimbus
#

En deux lignes il se fait un middleware custom, et au moins il comprendra ce que fait le cors x)
Dans un cas de prod, bien sur le module est mieux, il gère plus de trucs, mais dans son cas, je pense que comprendre c'est jamais mauvais

wraith wren
cyan iron
past nimbus
# wraith wren j'ai juste a mettre ça dans mon code ?
   'Access-Control-Allow-Origin': '*',
        'Access-Control-Allow-Methods': 'OPTIONS',

Par exemple, je te laisse faire le reste des recherches (la seconde ligne permet d'autoriser la methode OPTIONS qui est utilisé pour le préflight)

past nimbus
cyan iron
#

Ok 👍

past nimbus
#

J'insiste bien sur le fait, que si tu as les notions de cors, le faire à la main n'a aucun intérêt à ma connaissance

wraith wren
#

c'est ça que je comprend pas

#

pcq ce code la je l'ai vu plusieurs fois

#

mais je comprend pas ou le mettre

past nimbus
#

res.header() permet de définir un champ header de ta réponse

wraith wren
#

ah donc je met ça dans le res.header

past nimbus
#

d'ailleurs c'est res.setHeader plutôt

#

je crois

wraith wren
#

daccord je vais essayer apres

#

merci

#

et donc cors permet de faire ça automatiquement ?

past nimbus
#

Oui, il va autoriser le cors sur toute ton API (ou bien sur une partie en fonction de où tu l'appelle)

wraith wren
#

et c'est pas risqué, niveau sécurité ?

past nimbus
#

Après c'est un choix en fonction des besoins
Si ton API doit être public, t'as pas trop le choix
Si elle est destiné à être utilisé que sur une liste de domaine, alors au lieu de *, tu précise les origines

wraith wren
#

daccord, parcontre j'ai mis
res.setHeader( 'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': 'OPTIONS')

et ça me met les : en erreur

#

ah non c'est bon

#

parcontre le res correspond a quoi

past nimbus
#

res = response

#

C'est l'objet de réponse

wraith wren
#

ah faut que je mette l'autre truc aussi alors

#

mmh j'ai toujours l'erreur

#

ah bah c'est header et pas setheader

#

parcontre depuis que ça marche mon localhost ne fonctionne plus

#

je peux pas aller sur la page

wraith wren
#

je comprend vraiment rien aux requête je lis pas mal de truc je comprends pas comment je peux recuperer une des valeurs qui sont de mon API dans mon code

#

j'ai utilisé httpRequest je sais pas si c'est bien

coarse trench
#

Bonjour, savez vous comment reset la selection d'un select menu, j'ai essayé la fonction deferUpdate() mais toute seule elle ne marche pas

sharp grail
coarse trench
#

Comme quoi il arrive pas à fetch reply

#
                   ^
TypeError: Cannot read properties of undefined (reading 'fetchReply')
    at SelectMenuInteraction.update (/home/container/node_modules/discord.js/src/structures/interfaces/InteractionResponses.js:224:20)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async /home/container/src/events/interactions/interactionCreate.js:86:11```
#

Mais le problème c'est que si je lui met un reply au dessus

#

Il met dit que l'intéraction a déjà été reply

#

L'idéal c'est d'avoir le message ephemeral et le reset du selectmenu

sharp grail
#

ha

#

alors essaye interaction.message.edit()

coarse trench
#

Non

#

Surtout pas

#

Il va m'edit l'embed ^^

#

Je veux pas ça

sharp grail
#

bah il va rien t'édit du tout si tu mets juste {} dans les parenthèses

#

mais le fait que tu vois encore le truc du sélect c'est uniquement côté client, ça influence en rien le système de fonctionnement, mais si tu tiens vraiment à ce que ça disparaisse, interaction.message.edit({}); devrait résoudre ton problème

coarse trench
sharp grail
#

je ne connais aucun autre moyen à part celui-ci, désolé, j'espère que quelqu'un a une autre méthode, mais j'en doute 🤔

dire latch
#

Tu ne peut pas autrement 🤔

coarse trench
#

Si

#

defer().catch(()=>{})

#

Ça se fait pas trop mais ça marche

lone flax
lone flax
#

Malheureusement c'est Discord qui est fait comme ça (et tant mieux en quelques sortes pour la sécurité de l'utilisateur)

#

Je pense pas que tu puisses faire autrement qu'en modifiant le message si tu veux modifier le contenu

oak turret
#

Je vois pas en quoi c’est embêtant

coarse trench
night plank
#

Hi !
Je souhaite inclure un emoji que j'ai ajouté à mon serveur sur mon bot afin qu'il puissent l'use, si quelqu'un aurais la solution merci

neat lintel
#

si c'est un emoji de discord, utilises le format unicode. Si c'est un emoji de serveur utilises la syntaxe discord.
Dans les 2 cas il faut mettre un \ <emoji> sur discord pour l'obtenir

#

Et si c'est un emoji animé et que tu as pas nitro

night plank
#

Au top !

#

Merci 😉

coarse trench
cyan iron
#

Go faire un gif !

neat lintel
#

Il a presque 1 an le record, je l'avais fais a l'epoque

night plank
sharp grail
cyan iron
rustic light
#

Bruh j’ai l’impression que ce salon est dédié que pour les bots discord

neat lintel
cyan iron
coarse trench
neat lintel
# sharp grail ?

surement car l'emoji existe sur le serveur non ? mais sur certains serveurs ca marche pas

cyan iron
neat lintel
#

Ah peut etre que j'avais pas check la perm dans mes tests alors

cyan iron
#

Je me suis mal exprimé désolé

#

C'est mal foutu oui

cyan iron
cyan iron
sharp grail
#

oui

cyan iron
#

Ils n'auraient pas ?

sharp grail
#

si mdr je pense que comme c'est une réponse à une slash ils ont du faire le nécessaire

neat lintel
#

Ah oui les webhooks c'est mal foutu car si la permission est en neutre (ni en vert ni en rouge) ca marche pas avec les slash-commands mais ca marche avec les commandes message

sharp grail
#

après là l'émoji est sur le serveur

cyan iron
sharp grail
#

donc jsp

cyan iron
#

Bah oui

#

Si l'émoji est sur le serveur kapp

cyan iron
#

je vais tenter quand même on ne sait jamais

sharp grail
#

c'est ptet la perm du bot qui override

#

vas y x)

cyan iron
#

Je confirme que non !

sharp grail
cyan iron
sharp grail
#

go faire un feedback à discord à propos de ça mdr

cyan iron
#

Je le fais si tu veux il faudrait le relayer

sharp grail
#

yep vas y 🤔

wraith wren
#

j'ai une question la balise script dans le html, faut la mettre dans le head ? pcq en gros quand je met dans le head bah dans mon script mon boutton par exemple est inconnu

#

je sais pas si c'est normal

#

du coup je dois mettre mon script apres mon body pour avoir tous mes éléments

fleet kayak
#

tu peux la mettre dans le head mais pour ton cas met la dans le body

#

si tu la met dans le head le javascript se lancera avant le html

#

si tu le met dans le body il se lancera après

#

donc je te recommande dans ton cas de le mettre a la fin du body

wraith wren
#

ouai c'est ce que je me disais mais je regarde une vidéos le mec a le script dans le head et ça marche pour lui

fleet kayak
#

hmm

#

Je sais pas alors mais dans ton cas je te conseil d'essayer de le mettre dans le body a la toute fin

wraith wren
#

ahh

#

il a mit defer

#

ça permet d'executer a la fin du chargement de l'html je crois

fleet kayak
#

oui normal alors

wraith wren
#

daccord merci !

fleet kayak
red torrent
#

si ton script utilises le DOM et que tu veux le mettre dans le head tu dois l'exécuter une fois que tu reçois l'évenement DOMContentLoaded

peak cedar
#

Pk ça marche pas jfait comment pour faire une action quand y select un truc precis dans le selec menu ?

frank sparrow
#

value sans s peut être

peak cedar
peak cedar
frank sparrow
#

interaction.commandName

peak cedar
#

Et je laisse la value a coter ?

frank sparrow
#

essaye

peak cedar
#

Azy

frank sparrow
peak cedar
#

Jsais mais ça fait que avec le custom id donc toute les options font le meme

#

Moi jveux1 options fait un truc

#

Separer

frank sparrow
#

bah else if non ?

peak cedar
#

OE mais sque jveux dire C'est que la je verif que si c'est nimporte la qu'elle de select

#

Mais jveux verif aussi l'options

#

Comment jfait ? ^^

#

Tsais juste que ça envoie un msg

#

Avec des instructions

cobalt pawn
#

Bonjour !
J’ai besoin de vos lumières :),
de quelle manière je peux intégrer un preloader sur les pages de mon site, en animant mon logo ?
Merci

cyan iron
#

Tu peux faire un élément que tu fais disparaître au chargement de ta page

cobalt pawn
keen narwhal
#

salut cherche une persone pour configue un serveur minecraft me mp

sharp grail
#

premièrement #java-jvm ensuite

ancient sonnetBOT
#
🔎 Les offres de GCA !

Tu es à la recherche d'un créateur de contenu ?
D'un super développeur pour te faire le nouveau site de l'année, ou encore d'un graphiste pour réaliser le logo de ton serveur ?

Clique ici et tu trouveras ton bonheur !
Il te suffit simplement de créer ton offre en détaillant précisemment ce que tu recherches 👌

keen narwhal
#

Quelqun peut maider pour definir une condition svp

#
const Discord = require('discord.js')

module.exports.run = async (bot,message,guild,args) => {
    
   
    message.channel.send(`Voici la pp de = __**${message.guild.name}**__`)
    message.channel.send(message.guild.iconURL ({ format: 'png', dynamic: true, size: 1024 }));
       
 

   
};

module.exports.config = {
    name: "pp-server"
};
#

J'aimerai faire une condition : si message.guild.iconURL est vide, on envoi un message le serveur na pas de pp mais si il y en a un, on execute

  message.channel.send(`Voici la pp de = __**${message.guild.name}**__`)
    message.channel.send(message.guild.iconURL ({ format: 'png', dynamic: true, size: 1024 }));
       ```
meager hinge
#

Tutoriel pour faire des if

sharp grail
#

or apprendre les bases du javascript

coarse trench
#

Mais dans tout les cas le serveur à une pp

#

Si je ne m'abuse

bold sparrow
floral tendon
#

Je n'ai aucune base de Js et je voudrais faire une commande pour mon bot discord pour que lorsque "LaeDé" est écris, cela donne un nombre aléatoire entre 1 et 20, comment je m'y prend ?

fading glacier
#

Apprends le JS, et après apprends à utiliser l’API discord (avec discord.js ou #sheweny-js)

floral tendon
#

ok, pour l'instant mes seules bases de js ont été le tuto pour faire son bot de GCA

floral tendon
#

Tu me conseille quel youtubeur ?

coarse trench
floral bolt
#

Salut ! je suis sous nextjs et j'ai un petit soucis :/

#

en gros j''essaye de faire ca : ```js
export const ProtectRoute = ({ children }) => {
const router = useRouter();
const { pathname } = useRouter();
const { isAuthenticated } = useAuth();
if (
!isAuthenticated &&
pathname !== "/auth/login" &&
pathname !== "/auth/register" &&
pathname !== "/auth/forgot-password" &&
pathname !== "/"
) {
console.log("Not authenticated, redirecting to login");
router.push({
pathname: "/auth/login",
});
}

return children;

};```

#

mon _app.js :```js
<AuthProvider>
<ProtectRoute>
<Layout>
<Component {...pageProps} />
</Layout>
</ProtectRoute>
</AuthProvider>

floral bolt
#

C’est bon enfaite

dire latch
floral tendon
#

Merci

dire latch
#

Dr

red torrent
peak cedar
#

Thx j'ai fait un collector ça ma souler 😂

keen narwhal
#

Bonsoir, après un grand nombre d'essais, je n'ai pas réussi à trouver et comprendre où est l'erreur, si quelqu'un peut m'eclaircir

#

Voici l'erreur

#

et voici le code

oak turret
#

UPTADE => "UPDATE"

#

@keen narwhal

keen narwhal
#

😅

#

Merci

#

mais maintenant

#

c'est cette erreur qui apparaît

cyan iron
#

Tu as oublié un =

dire latch
#

Ta oublié un = à la fin

cyan iron
dire latch
cyan iron
#

En même temps !

dire latch
#

🙂

keen narwhal
#

Des boss, c'est ça que vous êtes

dire latch
#

Ouais je sais

keen narwhal
#

x)

coarse trench
#

Aberrant

keen narwhal
#

Voici mon erreur, désolé de vous spam :c

#
const mysql = require("mysql")
const fs = require("fs")
const intents = new Discord.Intents(32767)
const Command = require("./Command")
const Database = require("./Database")
const Event = require("./Event")

class Client extends Discord.Client {

    constructor(options) {

        super({ intents });

        /**
         * @type {Discord.Collection<string, Command>}
        */

        this.commands = new Discord.Collection()
        this.db = Database;
        this.color = "#757575";
    }

    async start(token) {

        fs.readdirSync("./Commandes").filter(file => file.endsWith(".js")).forEach(async f => {

                /**
                 * @type {Command}
                 */

            let props = require(`../Commandes/${f}`)
            console.log(`${f} commandes chargés avec succès`)
            this.commands.set(props.name, props)
        })

        fs.readdirSync("./Events/").forEach(dirs => {
    
            fs.readdirSync(`./Events/${dirs}/`).filter(files => files.endsWith(".js")).forEach(async evt => {

                /**
                 * @type {Event}
                */

                const event = require(`../Events/${dirs}/${evt}`);
                console.log(`${event.event}.js événement chargé avec succès !`)
                this.on(event.event, event.run.bind(null, this));
            })
        });

        await SlashCommand(this); 

        this.login(token)
    }
}

module.exports = Client;```
#

Voici le code

dire latch
#

Enlève le .run @keen narwhal

keen narwhal
dire latch
#

this.on(event, event.bind(null, this)); jpense 🤔

#

Si sa fonctionne pas, je ne sais pas, je ne fais pas comme ça

#

😦

keen narwhal
#

Nope toujours pas même erreur

pearl flax
#

quel est le dernier nom d'event dans la console ? 🤔

dire latch
#

this.on(evt, evt.bind(null, this));

#

🤷‍♀️

keen narwhal
pearl flax
keen narwhal
pearl flax
#

avant celui ci

#

aucun ?

keen narwhal
#

c'est toute la console entier

#

rien d'autres

#

@pearl flax

pearl flax
#

ahah

#

tu peux me screen le fichier ready.js stp

#

mmmmmmh

keen narwhal
#

Me dis pas que c'est tout con stp

pearl flax
#

je peux voir tous tes events (screen de ton dossier) ?

keen narwhal
#

tu veux un screen de chaque script ?

#

@pearl flax

pearl flax
#

interactionCreate stp

keen narwhal
#

@pearl flax ?

pearl flax
#

mmh

pearl flax
keen narwhal
#

@pearl flax

keen narwhal
#

Personne pour me help, j'ai pas trouvé depuis hier soir :c

cyan iron
#

Montre ton fichier structure/event stp @keen narwhal

#

Déjà c'était bien event.run.bind, si seulement run existait dans ton event

keen narwhal
cyan iron
#

Bizarre

#

Attends je vais regarder ton code

keen narwhal
#

un const Event = require qui manque ?

cyan iron
#

Avant le " chargé avec succès ", tu peux faire un console.log(event) ?

cyan iron
#

???

#

Tu l'as mis où ?

keen narwhal
cyan iron
#

😐

warm bear
#

Ton évent est pas défini

#

De plus tu l’as mis dans commandes

cyan iron
#

Réfléchis bien à ce que tu viens de faire 😄

keen narwhal
#

C'est bon c'est corrigé

cyan iron
#

Et ça te met quoi dans la console ?

keen narwhal
cyan iron
#

Ah mais attends, y'a juste un event qui n'a pas de run

#

Vérifies si run existe, si ce n'est pas le cas, alors ne fait pas le bind ;)

cyan iron
#

Montre ce que tu as fait

keen narwhal
cyan iron
#

Ok, mais tu fais une vérification ?

#
if (!event?.run) return console.log(`Il y a eu une erreur lors du chargement de l'event ${event?.event}`)
#

Met ça au dessus, ça devrait régler ton problème ;)

keen narwhal
#

je crois pas avoir fait d'erreurs en ce qui concerne la syntaxe, ça doit être quelque chose de non défini qui devrait l'être

#

J'ai réussi à avancer mais un nouveau problème se met en place :

keen narwhal
#

Personne ?

past nimbus
#

De toute évidence bot est null

#

A partir de là c'ets pas compliqué à fix normalement

peak cedar
#

On recup comment une interaction de buttons svp ?

full scaffold
autumn glacier
peak cedar
#

❤️

autumn glacier
peak cedar
#

Yop

#

await interaction.channels.cache.get(OPENTICKET).send({ embeds: [ticketgmodembed_option1], components:[] });

cyan iron
#

interaction.channels ?

#

Ça n'existe pas

peak cedar
#

Guild ?

cyan iron
#

client.channels et guild.channels oui

#

interaction.guild.channels

peak cedar
#

Azy je test

#

Mais Whattt att j'ai un prob la

#

Ça marche mais ça envoie dans un channel que jveux pas

#

Ah nan

#

Ok

#

J'ai compris

#

C'est avec quoi que l'on creer un channel ? ^^

desert riverBOT
peak cedar
#

Thx ❤️

#

Parcontre ptite question comme ça mais

#

C'est GUILD_.... pour un chann Ecrit C'est quoi ? ^^

cyan iron
#

?

peak cedar
#

La c'est GUILD_VOICE

#

Et pour un chann ecrit C'est ?

dire latch
#

GUILD_TEXT

peak cedar
#

Ok j'ai juste mit un E en trop a la fin

#

Merciii

dire latch
#

Dr

keen narwhal
#

Je cherche toujours

#

Un développeur Minecraft en .jar

red kelp
#

C'est pas du Javascript, c'est du #java-jvm

keen narwhal
keen narwhal
#

Holà, vous savez pourquoi il fait sa ?
Merci de vos futur réponse

#

Le succes doit être défini via la bdd qui modifie quand une personne exécute la cmd

limber sparrow
#

Ta variable success elle est jamais définie dans ton code

#

Ou comme je suis sur tel je la vois pas @keen narwhal 🤷🏻‍♂️

keen narwhal
#

Mais j’ai enlever succes et sa fonctionne c’est chelou

limber sparrow
#

Normal que sa fonctionne

keen narwhal
#

J’avoue que je suis perdu la x)

limber sparrow
#

Tu peux m’envoyer ton tuto ?

#

Je regarderais dans la journée

keen narwhal
#

Je l’ai perdu malheureusement

#

J’en n’ai tellement regarder

limber sparrow
#

Il a du forcément la définir quelque part de toute façon

#

C’était une variable pour un emoji ?

keen narwhal
#

Nan un salon

#

Mais si sa fonctionne, je regarderai plus tard x)
Faut que je me mette sur le sujet

limber sparrow
#

Ah oui ok je vois ce que tu veux faire

#

Je dois partir dehors je t’aiderais plus tard si personne la fait

keen narwhal
#

Ha ptn non

#

Enfaite après que tu me l’a dit c’est un émogi perso

#

Mais j’ai abonné le sujet des émogie car j’avais dès erreur partout, et j’ai oublier la catégorie admin

#

X) jsuis bête ptn

limber sparrow
#

Emoji perso sa donne sa : const sucess = <:nom_emoji:id_emoji>

#

@keen narwhal

keen narwhal
keen narwhal
limber sparrow
keen narwhal
#

D’accord merci beaucoup

keen narwhal
#

Bonjour, voici l'erreur, dites moi si le script est nécessaire

#

L'erreur complète

dire latch
#

@keen narwhalCode 🤔

keen narwhal
dire latch
#

messageCreate, là ou est l'erreur quoi

keen narwhal
#

le problème étant que j'ai maintenant cette erreur

dire latch
#

Hmm

timid loom
#

bah log interaction pour voir si c'est bien non null

timid loom
#

nan mais c'est quoi du coup interaction

#

null ou pas

keen narwhal
#

Non

#

J'ai réussi à trouver pour la précédente mais voici ce que j'ai mtn :

#

@timid loom

timid loom
#

je comprends pas comment tu peux bloquer sur les problèmes que tu as

#

ligne 52 de ton client définit le terme SlashCommand et c'est bon

#

je veux dire le truc est ultra détaillé

keen narwhal
#

Je demande comment, on a pas tous 5 ans d'expérience :c

oak turret
#

utilise Sheweny et problème tu n'auras plus :p

#

je fais ta pub @neat lintel :p

neat lintel
#

thx myman

oak turret
slim anvil
#

Comment on peut vouloir faire des bots ou autre si on ne sait pas déclarer un import

#

Arrêtez de vouloir courir avant de marcher c’est pas une bonne idée

oak turret
azure blaze
#

Hey, des gens font du discord.js v13 ici ?

dire latch
keen narwhal
#

moi du discord.js v3

azure blaze
#

Ça me semble logique

#

Donc du coup, je souhaite faire un bot qui, dés qu'il est allumé, se connecte dans un vocal et joue une musique.

#

Voici le code actuel :

#
const Discord = require("discord.js");
const Client = new Discord.Client({
    intents: [
        Discord.Intents.FLAGS.GUILDS,
        Discord.Intents.FLAGS.GUILD_MESSAGES
    ]});

Client.login("mon token lol");

const { joinVoiceChannel } = require('@discordjs/voice');

Client.on("ready", async () => {
    console.log("Pret")
    const guild = await Client.guilds.fetch("565599771872722944");
    var connection = joinVoiceChannel({
            channelId: "950804559146672168",
            guildId: "565599771872722944",
            adapterCreator: guild.voiceAdapterCreator, 
})
    const { createAudioPlayer } = require('@discordjs/voice');
    const player = createAudioPlayer();
    const subscription = connection.subscribe(player);
    const { VoiceConnectionStatus } = require('@discordjs/voice');

    connection.on(VoiceConnectionStatus.Ready, () => {
    console.log('The connection has entered the Ready state - ready to play audio!');
    const resource = createAudioResource('opbajvpc.mp3');
    player.play(resource);
})});
#

Là, mon bot se lance, mais il ne joue pas la musique.

#

j'avais eu le même problème pour la connexion en vocal, il se lançait mais il ne se connectait pas, et enfait il manquait des variables.

#

Peut être est-ce la même chose ici ?

dire latch
#

@azure blazeIl te manque des intents 🙂

azure blaze
#

ah

dire latch
#

Et ceci:

const { joinVoiceChannel } = require('@discordjs/voice');
const { createAudioPlayer } = require('@discordjs/voice');
const { VoiceConnectionStatus } = require('@discordjs/voice');

Tu peut tout mettre dans la même ligne:

const { joinVoiceChannel, createAudioPlayer, VoiceConnectionStatus } = require('@discordjs/voice');

azure blaze
#

Ah, oui, ça optimisera ahah merci

#

Il y a un endroit où sont répértoriés tous les intents disponibles ? Je ne trouve pas...

dire latch
#
FLAGS.GUILDS,
FLAGS.GUILD_MEMBERS,
FLAGS.GUILD_BANS,
FLAGS.GUILD_EMOJIS_AND_STICKERS,
FLAGS.GUILD_INTEGRATIONS,
FLAGS.GUILD_WEBHOOKS,
FLAGS.GUILD_INVITES,
FLAGS.GUILD_VOICE_STATES,
FLAGS.GUILD_PRESENCES,
FLAGS.GUILD_MESSAGES,
FLAGS.GUILD_MESSAGE_REACTIONS,
FLAGS.GUILD_MESSAGE_TYPING,
FLAGS.DIRECT_MESSAGES,
FLAGS.DIRECT_MESSAGE_REACTIONS,
FLAGS.DIRECT_MESSAGE_TYPING,
azure blaze
#

J'imagine que c'est celui-ci FLAGS.GUILD_VOICE_STATES qu'il me faut ?

dire latch
#

Yes

azure blaze
#

Hmm, il faut bien le taper comme ça ?

#

Pour les paramètres vocaux c'est autre chose ?

dire latch
#

Ta oublié une ,

azure blaze
#

L'importance des symboles quand on code, c'est vrai

past nimbus
#

L'intérêt d'utiliser un bon IDE coupler à un linter+prettier

#

T'as le combo gagnant

azure blaze
#

Je suis trop d'accord avec toi mec

#

^^"""

#

Nan sérieusement merci beaucoup

#

En fait je pense que j'ai copier des lignes qui ne sont pas a jour

dire latch
#

Faut le définir en haut

misty parcel
#

Salut est ce que ça marche si on met comme value un number ou un boolean ?

#

à un select menu

timid loom
#

Donc non

#

Cela dit tu peux y associer une valeur boolean ou numérique que tu convertis en string et la récupérer ensuite, tant que ça fait moins de 100 caractères

misty parcel
#

dommage

timid loom
#

Bah en vrai les nombres il peut y avoir des soucis donc je peux comprendre, c'est les boolean où effectivement c'est dommage mais bon c'est pas très utile

hidden cypress
#

Bonjour j'aimerais avoir un peut d'aider pour crée mon bot twitch s'il vous plaît ^^

#

Sa je doit le m'être ou 😅

cyan iron
hidden cypress
cyan iron
#

Oui je me suis tompé à la fin

hidden cypress
#

Ok

#

Ensuite ? 😭

cyan iron
#

Les fichiers sont là

hidden cypress
#

Je dois tout installer ?

cyan iron
#

Tu as déjà fait du js ?

hidden cypress
#

Oui

#

Un peut

cyan iron
#

Tu n'as jamais installé de node modules ?

hidden cypress
#

Si 😭

cyan iron
#

Bah voilà, il suffit de download les fichiers et de faire npm install ;)

hidden cypress
#

Mais sa me fait sa

cyan iron
#

C'est parce que tu n'as pas git d'installé

#

Mais ça revient à download les fichiers que je viens de t'envoyer

hidden cypress
#

La je les installer en zip du coup 😅

lapis onyx
#

Tu decompiles le dossier

#

Et avec ton invité de commande tu rentres dans le dossier

#

Et ensuite tu rentres la commande npm install

#

Ça va t’installer les dépendances du projet

cyan iron
#

Bah voilà c'est bon

hidden cypress
#

Mais ses normale les "4vulnerabilities " ?

timid loom
#

oui

#

quand un projet date un peu les gens finissent par découvrir des vulnérabilités sur les dépendances

#

entre temps y a sûrement eu des patchs de sécurité donc je te conseille de faire npm audit pour voir les soucis et si tu estime que ces vulnérabilités sont dangereuses dans ton cas, tu mets à jour les dépendances sur des versions plus récentes

#

déjà faire un npm audit fix ça corrigera les trucs sur lesquels tu as pas besoin de faire ces vérifications

#

mais potentiellement tu dois te rappeler que les changements de versions c'est pas anodin -- si tu sais que tu utilise certaines fonctionnalités en voie de dépréciation sur des modules d'une certaine version il faut que tu te prépare à refactor ton projet pour prendre en compte la dépréciation des fonctionnalités

#

après si ça peut te rassurer un projet react par exemple le plus souvent démarre avec une dizaine de vulnérabilités

#

c'est pas dramatique, mais les vulnérabilités dites "critiques" sont appelées comme ça parce qu'elles mettent vraiment en danger les utilisateurs de projets dépendants d'une version vulnérable

wintry hamlet
#

hey, je ne sais pas ou mettre ma variable seriez vous m'aider ?

#
// recup le nombre de document dans cette collection
 db.collection('todo-items')
.get().then((snapshot) => {
    console.log(snapshot.docs);
})
#

j'aimerai console.log mavariable au lieu de snapshot

#

me ping

dire latch
#

Tu as aucune variable là 🤔

warm bear
#

Bonsoir, j’ai vu les bases du JavaScript et je souhaiterais faire une galerie de +300 images, seulement en html/css ce sera très long, donc je me demandais si c’était possible ou s’il existait une manière d’automatiser le travail en JavaScript, merci à vous.

oak turret
#

Salut oui tout à fait, après ça dépend comment tu vois ton système

warm bear
#

D’accord je te remercie, je vais faire mes recherches sur ça !

trim tree
# warm bear Bonsoir, j’ai vu les bases du JavaScript et je souhaiterais faire une galerie de...

+300 Images sur la même page je te conseil dans un premier temps d'optimiser tes images à coup de tinypng (un outil pour reduire le poids des images sinon ça va etre long). Apres si c'est une galerie que tu vas pas mettre à jour tout les 4 matins oui tu peux faire ça en javascript assez simplement avec le system de boucle (idéalement il faudrait que tes images ai un nom simple en mode "image_1" "image_2" ... )

Tu peux faire quelque chose du genre :

#

Apres si c'est voué a être souvent mis à jour, ce que j'ai fait pour un projet perso c'est de le rediger finalement en php comme ça quand j'ajoute une image dans le dossier, directement la boucle ne va plus boucler jusqu'a 300 mais jusqu'a 340 imagnions. Puisqu'en php il existe des fonctions pour connaitre le nombre de fichier dans un dossier. C'est bien pratique 😉

oak turret
#

php >> tout de façon mmLul

trim tree
#

pendant mes études on a étudié le php seulement pour faire des appels avec la base de données mais là , depuis que je suis vraiment en poste, je me rend compte que le php c'est tellement plus puissant que ça 😄

oak turret
#

C’est certain que quand tu commences à toucher au mvc, à la poo etc t’apprends bien mieux php

peak cedar
#

Wesh mes bgeyyy

#

Ptit prob

#
    collector.on("collect", async(collected)=>{
        const value = collected.values[0]

                    if(value === "first_option"){
                    collected.reply({content: "  ", ephemeral:true, embeds : [embed1], components:[] })

                       interaction.member.roles.add('952581402556252220')
                    }
                    if(value === "second_option"){
                        collected.reply({content: "  ", ephemeral:true, embeds : [embed2], components:[] })
                        interaction.member.roles.add('952581403491598366')

                    }


    })
#

Ça give que au gens qui on fait la commandes

#

Comment faire pour que sa give a tt le monde qui utilise ?

subtle jackal
#

hey j'ai recu mon bot et quand je fais NPM I sa met sa :

#

normal ?

dire latch
#

@peak cedarTu as mis un filter ?

peak cedar
#

Nan jcrois pas

dire latch
#

Envoi ton code

peak cedar
#

run: async (client, interaction) => {

    const row = new MessageActionRow()
        .addComponents(
            new MessageSelectMenu()
                .setCustomId('select')
                .setPlaceholder('Choisir une options')
                .setMinValues(1)
                .setMaxValues(1)
                .addOptions([
                    {
                        label: 'Post Apocalypse',
                        value: 'first_option',
                        emoji: {
                            name: '🌇',
                          },
                    },
                    {
                        label: 'Gta Rp',
                        value: 'second_option',
                        emoji: {
                            name: '🛩️',
                          },
                    },
                ]),
        );

    let embed = new MessageEmbed()
    .setTitle("Les Roles.")
    .setDescription("Choisir un role celon vos besoin.")
    .setColor("GREEN")


    let embed1 = new MessageEmbed()
    .setTitle("Roles admis !")
    .setDescription("Vous avez le role Garry's Mod.")
    .setColor("GREEN")

    let embed2 = new MessageEmbed()
    .setTitle("Les Roles.")
    .setDescription("Vous avez le role Fivem.")
    .setColor("GREEN")

    let sendmsg = await interaction.channel.send({ content: "  ", ephemeral:true, embeds : [embed], components:[row] })


const collector = interaction.channel.createMessageComponentCollector({
    componentType: "SELECT_MENU"
})
#

collector.on("collect", async(collected)=>{
const value = collected.values[0]

                if(value === "first_option"){
                collected.reply({content: "  ", ephemeral:true, embeds : [embed1], components:[] })

                   interaction.member.roles.add('952581402556252220')
                }
                if(value === "second_option"){
                    collected.reply({content: "  ", ephemeral:true, embeds : [embed2], components:[] })
                    interaction.member.roles.add('952581403491598366')

                }


})


}

}

sharp grail
#

Donc utilise collected.member

#

Néanmoins

#

Utiliser un collector ne sera pas durable

#

Si le bot crash ou le temps est dépassé, ton interaction ne marchera plus, mieux vaut donc utiliser l'event interactionCreate directement

#

Et sinon tu peux aussi faire quelque chose de statique comme ça plutôt qu'un appel de commande comme #hub-developpement

glass cargo
#

Si oui tu ignore. Si non, je sais pas x)

subtle jackal
#

non en fait je fais npm i ET SA MET SA

dire latch
#

Pourquoi tu fais npm i ? @subtle jackal

#

Tu peut screen ton dossier ?

subtle jackal
#

car la personne qui ma fait le bot na pas mit le dossier modules

dire latch
#

Ba là, start ton index.js 🤔

subtle jackal
#

justement sa met l'error que j'ai envoyer au dessus

dire latch
#

C'est l'erreur du npm i

#

Faut start ton bot 🤔

coarse trench
#

node index

#

Dans ce dossier la

subtle jackal
#

node:internal/modules/cjs/loader:936
throw err;
^

Error: Cannot find module 'quick.db'
Require stack:

  • C:\Users\maxim\OneDrive\Bureau\Maxime Verrückt\index.js
    at Function.Module._resolveFilename (node:internal/modules/cjs/loader:933:15)
    at Function.Module._load (node:internal/modules/cjs/loader:778:27)
    at Module.require (node:internal/modules/cjs/loader:999:19)
    at require (node:internal/modules/cjs/helpers:102:18)
    at Object.<anonymous> (C:\Users\maxim\OneDrive\Bureau\Maxime Verrückt\index.js:2:12)
    at Module._compile (node:internal/modules/cjs/loader:1097:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1149:10)
    at Module.load (node:internal/modules/cjs/loader:975:32)
    at Function.Module._load (node:internal/modules/cjs/loader:822:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12) {
    code: 'MODULE_NOT_FOUND',
    requireStack: [ 'C:\Users\maxim\OneDrive\Bureau\Maxime Verrückt\index.js' ]
    }

Node.js v17.1.0

sharp grail
#

et réexécute npm install

subtle jackal
#

pareil

coarse trench
#

npm i quick.db

#

@subtle jackal

sharp grail
#

bah du coup install les dernières de Visual Studio

subtle jackal
#

oui c'est installer sa mais sinon oui l'erreur et encore la

sharp grail
subtle jackal
#

j'ai desinstaller Visuel sutdio et installer la derniere maj

sharp grail
#

et c'est quoi ton erreur maintenant ?

subtle jackal
#

C:\Users\maxim\OneDrive\Bureau\Maxime Verrückt>node index
node:internal/modules/cjs/loader:936
throw err;
^

Error: Cannot find module 'quick.db'
Require stack:

  • C:\Users\maxim\OneDrive\Bureau\Maxime Verrückt\index.js
    at Function.Module._resolveFilename (node:internal/modules/cjs/loader:933:15)
    at Function.Module._load (node:internal/modules/cjs/loader:778:27)
    at Module.require (node:internal/modules/cjs/loader:999:19)
    at require (node:internal/modules/cjs/helpers:102:18)
    at Object.<anonymous> (C:\Users\maxim\OneDrive\Bureau\Maxime Verrückt\index.js:2:12)
    at Module._compile (node:internal/modules/cjs/loader:1097:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1149:10)
    at Module.load (node:internal/modules/cjs/loader:975:32)
    at Function.Module._load (node:internal/modules/cjs/loader:822:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12) {
    code: 'MODULE_NOT_FOUND',
    requireStack: [ 'C:\Users\maxim\OneDrive\Bureau\Maxime Verrückt\index.js' ]
    }

Node.js v17.1.0

sharp grail
#

lmais t'as réinstall les modules ?

#

avec npm install ?

subtle jackal
#

att je reessaye

sharp grail
#

t'avais supprime le fichier node module ?

subtle jackal
#

oui

keen narwhal
#

Quelqu'un peut m'aiguiller sur la commande ticket pour un bot ?

sharp grail
subtle jackal
#

normalement oui

sharp grail
#

mmmmh

#

y a quoi dans ton fichier package.json ?

subtle jackal
#

{
"name": "slash-bot-template",
"version": "1.0.0",
"description": "A discord bot with slash commands",
"main": "index.js",
"scripts": {
"start": "node index.js",
"test": "echo "Error: no test specified" && exit 1"
},
"repository": {
"type": "git",
"url": "git+https://github.com/gurizenit/slash-bot-template.git"
},
"author": "GuriZenit",
"license": "MIT",
"bugs": {
"url": "https://github.com/gurizenit/slash-bot-template/issues"
},
"homepage": "https://github.com/gurizenit/slash-bot-template#readme",
"dependencies": {
"@androz2091/discord-invites-tracker": "^1.1.0",
"@discordjs/builders": "^0.10.0",
"@discordjs/rest": "^0.2.0-canary.0",
"canvacord": "^5.2.3",
"canvas": "^2.8.0",
"discord-anti-spam": "^2.6.1",
"discord-giveaways": "^5.1.1",
"discord-slash-commands-client": "^1.2.2",
"discord-xp": "^1.1.16",
"discord.js": "^13.6.0",
"dotenv": "^10.0.0",
"fs-temp": "^2.0.1",
"node-twitch": "^0.4.5",
"quick.db": "^7.1.3",
"replace-ext": "^2.0.0",
"temp": "^0.9.4"
}
}

GitHub

A discord bot with slash commands. Contribute to GuriZenit/Slash-bot-template development by creating an account on GitHub.

sharp grail
#

wow

#

c'est pas une template ça

#

😂

subtle jackal
#

comment sa ?

sharp grail
#

bah vu toutes les dépendances

#

c'est plus un modèle x)

#

t'as node-gyp d'installer sur ton pc manifestement, ça pose des soucis

subtle jackal
#

faut queje le desinstalle ?

sharp grail
#

Non si il tu l'utilise

real ledge
#

wallah je comprend que dal ;-;

sharp grail
#

mais normalement avec vs build tools et en installant avec le Desktop c++ ça aurait du déjà régler ce problème 🤔

subtle jackal
#

pff sa me soule

sharp grail
#

et là y a quoi dans ton fichier node module ?

subtle jackal
#

un fichier marquer canvas

sharp grail
#

supprime le

keen narwhal
#

Bonsoir, quelqu'un pourrait m'aider à me dire ce qui ne va pas dans mon code :

coarse trench
#

J'utilise le même pour tous mes projets

#

J'ai eu aucun soucis

#

Jusque là

keen narwhal
coarse trench
#

Et il se passe quoi ?

keen narwhal
#

rien justement

coarse trench
#

Test l'évent en mettant un console.log

#

Et sinn vérifie que t'as bien les bon intents d'ajouté

#

Ou alors que ta variable prefix a pas le bon prefix

sharp grail
keen narwhal
#

c'était un LINK, là un PRIMARY

#

c'est ça qui bloque je crois

coarse trench
sharp grail
#

Seul problème x), c'est pour de la v12

sharp grail
coarse trench
#

Le boug il l'a adapté pour la v13

sharp grail
#

Ah 🤔

#

Lets go level6

coarse trench
#

Ha le no life

subtle jackal
#

du coup je fais comment si rien marche

coarse trench
#

Beerk le joueur lol

coarse trench
subtle jackal
#

déja essayer

coarse trench
#

Et ?

sharp grail
#

Parce que le readme indique que ça marche qu'avec la version v12 de eiscord.js

coarse trench
#

Prcq le template est fait pour la v13 comme tu peux voir

sharp grail
keen narwhal
sharp grail
#

Nan mais

#

T'es sur que tu reçois le msg ?

#

Fin

#

Comme Alexandre l'a dit

coarse trench
#

:/

#

Là le problème vient pas du bouton vu que y'a même pas de message

keen narwhal
#

Même comme ça rien ne se passe

coarse trench
#

Donc soit c'est l'évent soit la condition

keen narwhal
#

Mais pour celui là ça marche pourtant

#

Donc c'est ça que je comprends pas

coarse trench
#

Mais attend ?

#

T'as plusieurs event du même ?

keen narwhal
#

oui?

coarse trench
#

Mais

#

Wtf

#

Tu sais que tu peux tout mettre dedans

#

Tu mets les conditions à la suite

keen narwhal
#

Haha je suis pas venu pour qu'on se foute de moi :c

coarse trench
#

:( désolé

#

Bisous magique

sharp grail
keen narwhal
subtle jackal
# coarse trench Et ?

C:\Users\maxim\OneDrive\Bureau\Maxime Verrückt>npm i quick.db
npm ERR! code 1
npm ERR! path C:\Users\maxim\OneDrive\Bureau\Maxime Verrückt\node_modules\better-sqlite3
npm ERR! command failed
npm ERR! command C:\WINDOWS\system32\cmd.exe /d /s /c prebuild-install || npm run build-release
npm ERR! > better-sqlite3@7.4.5 build-release
npm ERR! > node-gyp rebuild --release
npm ERR! prebuild-install WARN install No prebuilt binaries found (target=17.1.0 runtime=node arch=x64 libc= platform=win32)
npm ERR! gyp info it worked if it ends with ok
npm ERR! gyp info using node-gyp@8.3.0
npm ERR! gyp info using node@17.1.0 | win32 | x64
npm ERR! gyp info find Python using Python version 3.10.2 found at "C:\Users\maxim\AppData\Local\Programs\Python\Python310\python.exe"
npm ERR! gyp ERR! find VS
npm ERR! gyp ERR! find VS msvs_version not set from command line or npm config
npm ERR! gyp ERR! find VS VCINSTALLDIR not set, not running in VS Command Prompt
npm ERR! gyp ERR! find VS checking VS2019 (16.11.31727.386) found at:
npm ERR! gyp ERR! find VS "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community"
npm ERR! gyp ERR! find VS - "Visual Studio C++ core features" missing
npm ERR! gyp ERR! find VS could not find a version of Visual Studio 2017 or newer to use
npm ERR! gyp ERR! find VS looking for Visual Studio 2015
npm ERR! gyp ERR! find VS - not found
npm ERR! gyp ERR! find VS not looking for VS2013 as it is only supported up to Node.js 8
npm ERR! gyp ERR! find VS
npm ERR! gyp ERR! find VS **************************************************************
npm ERR! gyp ERR! find VS You need to install the latest version of Visual Studio
npm ERR! gyp ERR! find VS including the "Desktop development with C++" workload.
npm ERR! gyp ERR! find VS For more information consult the documentation at:
npm ERR! gyp ERR! find VS https://github.com/nodejs/node-gyp#on-windows
npm ERR! gyp ERR! find VS **************************************************************
npm ERR! gyp ERR! find VS
npm ERR! gyp ERR! configure error
npm ERR! gyp ERR! stack Error: Could not find any Visual Studio installation to use
npm ERR! gyp ERR! stack at VisualStudioFinder.fail (C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\find-visualstudio.js:121:47)
npm ERR! gyp ERR! stack at C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\find-visualstudio.js:74:16
npm ERR! gyp ERR! stack at VisualStudioFinder.findVisualStudio2013 (C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\find-visualstudio.js:351:14)
npm ERR! gyp ERR! stack at C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\find-visualstudio.js:70:14
npm ERR! gyp ERR! stack at C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\find-visualstudio.js:372:16
npm ERR! gyp ERR! stack at C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\util.js:54:7
npm ERR! gyp ERR! stack at C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\util.js:33:16
npm ERR! gyp ERR! stack at ChildProcess.exithandler (node:child_process:404:5)
npm ERR! gyp ERR! stack at ChildProcess.emit (node:events:390:28)
npm ERR! gyp ERR! stack at maybeClose (node:internal/child_process:1062:16)
npm ERR! gyp ERR! System Windows_NT 10.0.19044
npm ERR! gyp ERR! command "C:\Program Files\nodejs\node.exe" "C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\bin\node-gyp.js" "rebuild" "--release"
npm ERR! gyp ERR! cwd C:\Users\maxim\OneDrive\Bureau\Maxime Verrückt\node_modules\better-sqlite3
npm ERR! gyp ERR! node -v v17.1.0
npm ERR! gyp ERR! node-gyp -v v8.3.0
npm ERR! gyp ERR! not ok

npm ERR! A complete log of this run can be found in:
npm ERR! C:\Users\maxim\AppData\Local\npm-cache_logs\2022-03-13T21_14_34_840Z-debug.log

GitHub

Node.js native addon build tool. Contribute to nodejs/node-gyp development by creating an account on GitHub.

keen narwhal
coarse trench
#

Et que tu mettes la nouvelle

subtle jackal
#

et bas j'ai desinstaller Visuel studio code et j'ai installer la nouvelle

coarse trench
#

Supp node modules

#

Et refait npm i quick.db

subtle jackal
#

j'arrete pas de le fairesa

keen narwhal
#

@coarse trench @sharp grail J'ai réussi à réparer l'erreur, maintenant manque plus qu'à faire en sorte que quand on clique, ça crée un channel

coarse trench
keen narwhal
subtle jackal
sharp grail
coarse trench
keen narwhal
coarse trench
#

Il dit que tu dois installer la dernière version de visual code studio

subtle jackal
#

et bas c fais sa

sharp grail
coarse trench
keen narwhal
coarse trench
#

Tu dois utiliser l'évent interactionCreate

sharp grail
keen narwhal
# sharp grail T'as les bases du js ? 👀

ça dépend ce qui tu dis pas base, je code depuis un petit moment, j'ai fais le bot moi même, sans youtube je veux dire, mais je ne suis pas apte à créer des scripts encore

#

enfin, trouver des scripts seul

coarse trench
sharp grail
#

🤔 je vois

keen narwhal
#

Autrement dit, j'ai pas les bases ^^

sharp grail
#

ce que j'entends par base en javascript, c'est boucle conditions opérateurs fonction variable, et éventuellement les objets et les arrays

keen narwhal
#

variables je sais faire je dirais, conditions aussi mais le reste nope

sharp grail
#

ouh x)

#

bah t'en utilises

#

t'utilises des events, des callback, des classes sans même le savoir, est ce que c'est pas beau ? :0

keen narwhal
#

La condition je m'en doutais

sharp grail
#

condition c'est globalement if, opérateur c'est par exemple + = - / * >= <=

#

Mais du coup

#

avant de continuer ton bot je te conseille de te renseigner là dessus

#

et ensuite, tu peux regarder des tutos, explorer la doc de discord.js, et créer ton bot

#

mais faut que tu comprennes un minimum ce que tu fais 👀

subtle jackal
#

@coarse trench

cyan iron
#

Le meilleur moyen d'apprendre c'est en pratiquant 👌

keen narwhal
cyan iron
#

Et bah c'est parfait, c'est comme ça que tu vas apprendre.

#

Tu verras il y aura des tutos cools sur la mise à jour du site 👌

keen narwhal
#

🙂

loud harness
#

Salut j'aimerais savoir si il y a un module pour recupp les streams twitch et les vidéos ytb pout les poster auto ?

past nimbus
#

Check les API respectives
Si tu trouves pas ton bonheur, analyse le flux quand tu le fais à la main
Si trop complexes à reproduire, t'aura toujours la solution headless, bien que pas ouf

misty parcel
#

Salut à tous j'ai un probleme j'ai fais un bot et quand quelqu'un veut appuyer sur un bouton que j'ai mis ça répond ça

#

Est ce que quelqu'un sait pourquoi ça fait ça

neat lintel
#

tu as pas répondu à l'intéraction correctement avec interaction.reply ou tu as pas defer la reply. Autre possibilité : ton bouton est mal formé

honest maple
#

Bonsoir tout le monde 👋 ,

est-ce que quelqu'un aurait des tips pour commencer à étudier je Javascript svp ? Des tutoriels complets ou autre cours ^°^

Merci à tous !

halcyon solstice
honest maple
#

merci !

strong spruce
#

Les gars j'ai une question

#

savoir si vous pouvez m'aidez

queen ocean
#

@cyan iron c'est tout aussi con de juste envoyer le lien du site

strong spruce
#

Je voudrais que quand une personne clique sur un bouton, sa lui donne un role chuis bloqué a la

#

je pense être pas loin

cyan iron
#

member n'existe pas 🙂

#

Si je ne me trompes pas c'est interaction.member

#

Mais je vais vérifier je ne suis pas sûr

strong spruce
#

sa serait sa ?

cyan iron
#

Oui

strong spruce
#

même pas

cyan iron
#

Tu as une erreur ?

strong spruce
#

aucune

#

mais genre quand je clique sa ne fait rien

cyan iron
#

Tu es sûr du customId que tu as mis ?

strong spruce
#

oui

#

ah

#

euh

#

tkt

sharp grail
#

x)

strong spruce
#

merciii

cyan iron
queen ocean
hard iris
#

Bah pourquoi on parle de javascript ptdr ?

#

Et d'un tweet si on prends le cas général

hazy mirage
#

salon d’entraide la vous débattez de l’utilité du Tweet

past nimbus
#

Non non, à aucun moment j'ai dis que le twitte était inutile, vu le succès de celui-ci, se serait un peu stupide

hard iris
rustic mulch
#

Comment on fait une commande ban, kickbet warn ?

queen thorn
rustic mulch
desert riverBOT
fading glacier
#

@rustic mulch regarde ces deux liens

queen thorn
#

Ho c'est génial ce bot

keen narwhal
#

Bonjour, Bonsoir j'ai une petite question

#
if (!message.member.hasPermission("ADMINISTRATOR"))```
coarse trench
#

Oe ?

keen narwhal
#

Je voudrais faire en sort que sa ne soit pas un role

#

mais un ID User

#

en gros une commande bot owner

coarse trench
#
let owners = ["id", "id"]
if (!owners.includes(message.author.id)) return message.channel.send("Vous n'avez pas la permission")
#

C'est ça que tu veux ?

keen narwhal
#

Yep

#

Merci bien c:

coarse trench
#

(:

lone flax
#
let owners = {
  "id1": true,
  "id2": true
};

if (!owners[message.author.id])
  return message.channel.send("Vous n'avez pas la permission !");

Bon je fais un peu le chiant mais tu peux faire ceci c'est plus opti myman (si c'est pour 2/3 id on s'en fout mais voilà au moins tu sais)

coarse trench
#

Y'a quoi d'opti ?

lone flax
#

Dans ton cas, tu fais une array avec une liste comme valeurs, donc includes va aller check chaque valeur une par une pour vérifier si c'est égal à ce que tu veux

#

Dans mon cas, il va directement chercher l'ID voulu dans la table, si il existe, c'est == true, si il existe pas, c'est == null. Ca évite de boucler parmi tous les éléments de ta table pour rien

#

Après bon c'est de la micro-opti mais c'est toujours intéressant à savoir

coarse trench
#

L'ordinateur va tout de même dans ton cas check chaque valeur si elle est égale à ce que tu demandes ^^

lone flax
#

Nope

#

L'ordinateur va directement aller chercher la valeur de l'ID dans la table

#

Dans ton cas, elle va passer parmi toutes les valeurs de la table jusqu'à quand elle trouve la tienne

coarse trench
#

Si tu le dis

lone flax
#

C'est pas moi qui le dit c'est le langage

coarse trench
#

emoji_54 C'est bien toi qui parle

past nimbus
#

Max a raison, y a pas à discuter, en théorie c'est une opti, mais c'est très déconseillé de faire ça en JS étant donné que le moteur va remanier ton code au cours de sa vie

lone flax
#

Pour que tu comprennes la logique, .includes fonctionne un peu comme ceci en interne :

let owners = ["id1", "id2", "id3"];
let userId = "id3";

let found = false;
for (const v of owners) {
  if (v === userId) {
    found = true;
    break;
  }
}

return (found);
#

Donc si tu te retrouves avec une array de 100000 éléments par exemple

#

Et que l'élément que tu veux trouver est le dernier de ton array

#

Il va boucler 100000 fois, faire une condition 100000 fois pour pouvoir dire si il est dans l'array ou non

#

Alors qu'en utilisant l'index d'un object, il va directement chercher la valeur via l'index, peu importe combien d'éléments tu as dans ton objet 😉

lone flax
past nimbus
#

Tu sais comment fonctionne le moteur V8 de nodejs ?

#

Dans l'idée en tout cas ?

#

@lone flax

lone flax
#

Pour la compilation du code tu parles ?

past nimbus
#

Yes exactement

lone flax
#

Je sais brièvement qu'il est optimisé pendant la compilation

#

Mais pas plus que ça

past nimbus
#

Yes, mais en fait c'est même plus cool que ça
En réalité, le moteur démarre avant ton code et va compiler celui-ci avec une méthode un peu particulière (compilation JIT), ce qui va lui permettre de compiler à la volé (c'est le gros avantage de JIT) mais en plus de ça, vu qu'on compile le code au besoin, on va pouvoir lui passer des petites optimisations au passage
Contrairement à un langage en compilation standard ou là, le système de compilation (+ le dev) va devoir penser les opti à l'avance.
De ce fait, si tu lances une fonction à T et la même à T+10, il y des chances pour que le code compilé (ici du bytecode), soit différents. Bien sur la logique et le résultat restera le même

#

Je sais pas si c'est clair comme explication

#

(je parle bien de la compilation ici, pas du transpile du code)

lone flax
#

Oh okey je vois, c'est pas mal du tout! Et je vois encore des gens dire que javascript c'est le pire langage KappaRetard

past nimbus
#

Oui ^^ pourtant c'est la techno de base du V8 ça, on est d'accord que c'est dingue

#

Et du coup pour en revenir à ton opti, on va éviter ce genre d'opti car c'est impossible d'anticiper ce que le compiler va faire étant donné que lui il gère des centaines de millions (si ce n'est pas plus) de conditions pour opti de telle ou telle manière le code
Par contre à la place tu as tout à fait le droit d'utiliser une map/collection

ça peut paraitre un peu extrême mais dans certains langages propriétaires, la compilation JIT peut fusionner des objets pour faire des gains de place (je sais pas si le js peut en arriver là par contre). Donc c'est vraiment impossible à anticiper

lone flax
#

Ah ouais d'accord, c'est super intéressant en vrai

#

Il y a pas moyen de savoir ce qu'il fait j'imagine ?

#

Faudrait analyser du bytecode sue

past nimbus
#

J'imagine que les fou furieux qui ont fait ça ont déjà plongé dedans, mais bon c'est un niveau plutôt violent je pense ^^'
Je m'y risquerais pas perso x)

lone flax
#

Aha j'me doute, merci pour l'explication en tout cas

past nimbus
#

np

celest copper
#

Bonjour,
J'ai un petit problème de crash de mon bot discord, discord.js n'arrive pas lire la description d'un fichier (de temps en temps), et je n'arrive pas a intercepté l'erreur, savez-vous comment faire ?

#
try
        {
            message.channel.send({
                files: [faction1, map, faction2]
            });
        }
        catch (e)
        {
            console.log(e);
        }
past nimbus
#

L'erreur ?

celest copper
#

Uncaught TypeError TypeError: Cannot read properties of undefined (reading 'description')
at <anonymous> (c:\Users\Mathieu\Documents\BotDiscord\MMFR\node_modules\discord.js\src\structures\MessagePayload.js:183:25)

#

laissez tombé, j'ai juste dépassé l'index d'un tableau du coup ça vient de code plus tot 🙂

sharp grail
#

utilise .catch à la place

celest copper
#

ah merci 🙂

misty parcel
#

Salut salut! est ce que c'est possible de faire une commande qui ping qqn au hasrd dans le serveur ? 🙂

sharp grail
#

bien sur

#

tout est possible kapp

coarse trench
#

oui ^^

#

J'avais déjà fais ça

#

J'avais fais en sorte que quand on fasse @random ça réponde avec un utilisateur random

cyan iron
#

Y'a une méthode .random() sur les collections !

#

Merci discord.js B)

coarse trench
#

whut

#

Depuis quand

sharp grail
#

ui x)

coarse trench
#

la v13 ?

cyan iron
#

Oula non

#

Depuis toujours à ma connaissance

sharp grail
#

bon après c'est pas compliqué à faire

cyan iron
#

En v11 c'était présent !

coarse trench
#

Alors là j'étais aps au courant

cyan iron
wooden compass
#
Client.on("messageCreate", message => {
    if(message.content === "bouton"){
        const row = new Discord.MessageActionRow()
            .addComponents(new Discord.MessageButton()
                .setCustomId("bouton1")
                .setLabel("Dire Bonjour")
                .setStyle("SECONDARY")
                .setEmoji("![bongoTap](https://cdn.discordapp.com/emojis/651721630514544661.webp?size=128 "bongoTap")")
            );

        message.reply({ content: "Message avec Bouton", components: [row] });

    }
});

Client.on("interactionCreate", interaction => {
    if(interaction.isButton()){
        if(interaction.customId === "bouton1"){
            interaction.reply("Vous avez appuyé sur le bouton");
        }
    }
});

Client.on("guildMemberAdd", member => {
    
    Client.channels.cache.get("955027961352953946").send({"<@" + member.id + "> est arrivé !", components: [row]})
    member.roles.add("955096255594385498");
});

Hey, alors j'essaye que quand quelqu'un join mon serv, un message drop avec un bouton, sauf que il me met une erreur avec les deux + avec le member.id

coarse trench
#

l'erreur ?

#

{content:"ton contenu", components: [row]}

#

sinn .send("ton contenu", {components: [row]})

wooden compass
coarse trench
wooden compass
wooden compass
coarse trench
#

send("<@" + member.id + "> est arrivé !", {components: [row]})

#

hop la petite virgule que j'avais oublié

cyan iron
#

une parenthèse ou un truc comme ça

#

Y'a tout ton code en haut là ?

sharp grail
#

Client.channels.cache.get("955027961352953946").send({"<@" + member.id + "> est arrivé !", components: [row]}) manque une key pour ton obj là

coarse trench
cyan iron
#

Ah bien vu

cyan iron
#

Ouaip c'est ça

sharp grail
cyan iron
#

Je regardait dans messageCreate moi FM_03_Suicide

wooden compass
#

Haaa okay je viens de comprendre

#

Je vais test

coarse trench
#

"Hey, alors j'essaye que quand quelqu'un join mon serv, "

cyan iron
#

J'ai pas tout lu je dois l'avouer LUL

sharp grail
sharp grail
coarse trench
#

^^"

#

C'est plus simple oui

sharp grail
wooden compass
#

alors

#

Je suis paumé mdr

sharp grail
#

explique

wooden compass
#

J'ai ça mais il me met des erreur

coarse trench
#

Client.channels.cache.get("955027961352953946").send({content: member.toString()+ "est arrivé !", components: [row]})

sharp grail
cyan iron
#

Ne regarde pas là

#

Regarde ici

wooden compass
#

okay

cyan iron
#

Et surtout au dessus

#

Ton code pas les erreurs

sharp grail
coarse trench
#

oe fin

cyan iron
#

Non mais c'est pour qu'il regarde son code pas les erreurs

#

L'autre il l'aurait trouvé sinon

wooden compass
#

Ha c'est bon je crois

cyan iron
#

Voilà

sharp grail
#

ça pose juste problème si c'est le channel est pas en cache de faire ça

wooden compass
coarse trench
#

défini row ?

cyan iron
#

C'est normal ça

#

Attends

sharp grail
#

x))

cyan iron
#

Tient regarde

wooden compass
#

vous me parlez chinois la j'ai commencé ce matin moi D_kappa

#

okay

coarse trench
cyan iron
#

Tu vas avoir l'explication là dedans ;)
En gros tu met ta variable dans ton bloc mais elle ne peut pas en sortir, si tu veux qu'elle soit globale il faut que tu la mette en dehors des blocs, ou que tu utilises var ( mais bon pas très conseillé )

{ 
  ... 
  const tavar = ...
  ...

  // Accessible
}
// Pas accessible
wooden compass
#

haa okay

cyan iron
#

Mais si tu fais :

const tavar = ...

{ 
  ... 
  ...

  // Accessible
}
// Accessible aussi
wooden compass
#

Donc en gros faut que je mette mon bouton dans mon block

cyan iron
#

Ta variable row si tu l'utilises à deux endroits différents alors sort là de ton bloc

#

Vu que tu fais tout dans un seul fichier c'est pas problématique pour toi

wooden compass
#

Mais donc ca change rien dans ce cas si ?

cyan iron
#

Comment ça ?

wooden compass
#

Je comprend pas suefort

cyan iron
#

Bon je vais refaire

#

Tkt

wooden compass
coarse trench
cyan iron
#

Ce que tu as actuellement :

Client.on("messageCreate", message => {
    const row = "ta row";
    // ton code 
    // row est accessible 
});

Client.on("guildMemberAdd", member => {
    // ton code 
    // row n'est pas accessible
});

Ce que tu dois faire :

const row = "ta row";

Client.on("messageCreate", message => {
    // ton code 
    // row est accessible 
});

Client.on("guildMemberAdd", member => {
    // ton code 
  // row est accessible 
});
coarse trench
#

Voilà ce que j'ai fais ^^ et l'image en thumbnail est un png mais discord me le met en noir, possible de changer ça ?

coarse trench
cyan iron
#

#2f3136

wooden compass
#

Ca marche let's go

#

Maintenant faut pouvoir le faire une fois

#

aller adieu

#

et merci à tous aussi

cyan iron
#

Adios pépitos

keen narwhal
#

Holà, Holà

#
const activites = [
    { type: 'PLAYING',  message: '#1'  },
    { type: 'WATCHING', message: '#2' },
    { type: 'LISTENING', message: '#3' }
];

bot.on('ready', () => {
    setInterval(() => {
        const index = Math.floor(Math.random() * (activites.length - 1) + 1);

        bot.user.setActivity(activites[index].message, { type: activites[index].type });
    }, 10000);
});```
#

j'aimerais faire une 2èm boucle mais qui change le status : (online, dnd, offline...)

#

j'ai essayé des trucs, et j'ai cherché sur overstack mais rien 🤷‍♂️

#

la seule chose que j'ai réussi à faire c'est ça client.user.setStatus('dnd')

#

mais j'arrive pas à le randomize

sharp grail
#

une err ?

#

et sinon ton calcul d'index est pas bon x)

#

const index = Math.floor(Math.random() * activites.length);

#

en gros

#

tu multiplies un chiffre compris entre 0 et 1 par le nombre d'activité - 1 soit 2, puis tu ajoutes 1 et tu prends la valeur inférieure,

soit
0 < x < 1
0 < 2x < 2
1 < 2x + 1 < 3
et arrondi à l'entier inférieur
2x + 1 = { 1 ; 2 }

keen narwhal
#

mais j'aimerais le convertir avec le stauts

sharp grail
keen narwhal
#

ça

keen narwhal
sharp grail
#

donc ça pose problème non ?

keen narwhal
#

je m'en fiche un peu de ça,

sharp grail
#

bref sinon la doc 👀

keen narwhal
#

c'est pas dérangent

desert riverBOT
sharp grail
#

du coup sinon

#

pour réunir les deux

desert riverBOT
sharp grail
#

tu fais la même chose

#

||en prenant une méthode qui prend en compte tous les éléments de l'array||

#

ex

#
let status = [
  'dnd',
  'online',
  'invisible'
  'idle',
]

setInterval(() => {
    bot.user.setStatus(status[Math.floor(Math.random() * activites.length)]);
}, 10000);
keen narwhal
#

beh merci (:

keen narwhal
#

J'ai une error output

#
Uncaught ReferenceError ReferenceError: activites is not defined```
sharp grail
#

ah yep x)

#

remplace activities par status

keen narwhal
#
  bot.on('ready', () => {
  setInterval(() => {
      bot.user.setStatus(status[Math.floor(Math.random() * activites.length)]);
  }, 30000);
});```
#

heu, mais j'ai deja ça

sharp grail
#

;-;

keen narwhal
#

setActivities

sharp grail
#

je te parle pas de ça

keen narwhal
#

je met ça ?

sharp grail
#

t'as les bases du js ?

keen narwhal
#

ahhhhhhh

#

my bad

#

je suis débile x)

sharp grail
#

si t'as compris c'est l'essentiel x)

keen narwhal
#
if (!owners.includes(message.author.id)) return```
#

j'aimerai faire en sort que le return envoie un embed mais je n'y arrive pas

desert riverBOT
sharp grail
keen narwhal
#

mais je ne sais pas ou mettre le const embed et les infos

desert riverBOT
sharp grail
#

bah tu le mets juste au dessus par exemple 🤔

#

if (...) {

const embed = ..
message.channel.send({});
}

keen narwhal
#

like this ?

sharp grail
#

tu devrais passer en v13

keen narwhal
#

ah, c'est bon niquel ça marche

#

why ?

sharp grail
#

parce que décommissions de l'api v7, repoussé certes, mais ça va pas durer éternellement, et que c'est plus compliqué et moins pratique d'avoir les nouvelles fonctionnalitésb

keen narwhal
#

après comment dire que j'ai un piti peut la flemme d'update mon code actuel :/

#

y'a beaucoup de chose à changer ?

sharp grail
#

plus t'attends plus y aura de chose à changer sue

#

non c'est correct, y a même le guide qui t'explique ce qui change

keen narwhal
#

tu pourrais m'envoyer ce guide ?

desert riverBOT
sharp grail
keen narwhal
#

heuuuuuuuuu

#

mais sa change quand même pas mal

#

c'est de la difficulté en plus mdr

#

deja que j'ai du mal

sharp grail
#

boarf

keen narwhal
#

j'ai pas un niveau EXTRORDINNAIRE

sharp grail
#

dans ce cas là ptet te tourner vers l'apprentissage du js pur avant de continuer x)

keen narwhal
honest maple
#

yo

#

je suis en train de test un modèle next

#

et pour la carte spotify

#

il faut un .env.local

#

mais je ne sais pas ou le placer

#

et quoi mettre dedans

#
SPOTIFY_CLIENT_ID=blablabla
SPOTIFY_CLIENT_SECRET=blablabla
SPOTIFY_REFRESH_TOKEN=blablabla```
#

ou bien

SPOTIFY_CLIENT_ID="blablabla"
SPOTIFY_CLIENT_SECRET="blablabla"
SPOTIFY_REFRESH_TOKEN="blablabla"```
#

et mon spotify.ts est comme ceci :

const client_id = process.env.SPOTIFY_CLIENT_ID;
const client_secret = process.env.SPOTIFY_CLIENT_SECRET;
const refresh_token = process.env.SPOTIFY_REFRESH_TOKEN;

const basic = Buffer.from(`${client_id}:${client_secret}`).toString("base64");
const NOW_PLAYING_ENDPOINT = `https://api.spotify.com/v1/me/player/currently-playing`;
const TOP_TRACKS_ENDPOINT = `https://api.spotify.com/v1/me/top/tracks`;
const TOKEN_ENDPOINT = `https://accounts.spotify.com/api/token`;

const getAccessToken = async () => {
  const response = await fetch(TOKEN_ENDPOINT, {
    method: "POST",
    headers: {
      Authorization: `Basic ${basic}`,
      "Content-Type": "application/x-www-form-urlencoded",
    },
    body: new URLSearchParams({
      grant_type: "refresh_token",
      refresh_token,
    }),
  });

  return response.json();
};

export const getNowPlaying = async () => {
  const { access_token } = await getAccessToken();

  return fetch(NOW_PLAYING_ENDPOINT, {
    headers: {
      Authorization: `Bearer ${access_token}`,
    },
  });
};

export const getTopTracks = async () => {
  const { access_token } = await getAccessToken();

  return fetch(TOP_TRACKS_ENDPOINT, {
    headers: {
      Authorization: `Bearer ${access_token}`,
    },
  });
};```
#

Regardes au début

honest maple
dire latch
#

Erreur ?

honest maple
#

non

#

mno env.local est là :

dire latch
#

C'est juste .env aussi @honest maple

honest maple
#

ah ok

dire latch
#

Et essaye avec " et sans

honest maple
#
ready - started server on 0.0.0.0:3000, url: http://lo
 npm run dev

> anurag@0.2.1 dev
> next dev

ready - started server on 0.0.0.0:3000, url: http://localhost:3000
info  - Loaded env from /home/runner/Portfolio/.env.local
event - compiled client and server successfully in 5.5s (175 modules)
wait  - compiling / (client and server)...
event - compiled client and server successfully in 3.7s (272 modules)
undefined```
#

ok