#javascript-typescript
1 messages · Page 6 of 1
oui
Je repose la question d'une autre manière si quelqu'un a une idée ça serait génial. En tappant une / commande dans un channel, les options n'apparaissent pas, pourtant j'ai bien ces lignes et je ne vois pas l'erreur qui les empêchent de s'afficher :
bot.commands.forEach(async command => {
let slashcommand = new Discord.SlashCommandBuilder()
.setName(command.name)
.setDescription(command.description)
.setDMPermission(command.dm)
.setDefaultMemberPermissions(command.permission === "" ? null : command.permission)
if(command.options?.lenght >= 1){
for(let i = 0; i < command.options.lenght; i++) {
slashcommand[`add${command.options[i].type.slice(0,1).toLowerCase() + command.options[i].type.slice(1, command.options[i].type.lenght)}Option`](option => option.setName(command.options[i].name).setDescription(command.options[i].description).setRequired(command.options[i].required))
}
}
await commands.push(slashcommand)
});
Merci !
Déjà y a un souci t'as écris lenght au lieu de length (normalement NodeJS aurait dû te faire une erreur)
Et puis t'en fais quoi de ton array commands là dans lequel tu push tes commandes
Salut, j'ai un petit soucis en gros je veux recharger du contenu sans actualiser avec jquery, mais quand je clic sur mon bouton et que ça se recharge le deuxieme clic ne fonctionne pas
$(document).ready(function(){
$('#arrow-right').on('click', function(){
console.log('tet');
//mettre la valeur de updateEpisode sur lastarticle fournis par le controller
let episodes = $('#lastepisode').html();
episodes = JSON.parse(episodes);
console.log(episodes)
// Recuperer pour chaque episode tout les éléments
let updateEpisode = [];
for (let i = 0; i < episodes.length; i++) {
let newEp = {};
//changer le anime_name de newEp
newEp.anime_id = episodes[i].anime_id;
//changer le anime_poster de newEp
newEp.posters = episodes[i].posters;
// Recupere tmdb id
newEp.tmdb_id = episodes[i].anime_tmdb_id;
newEp.id = episodes[i].id;
// revupere titre
newEp.title = episodes[i].title;
newEp.created_at = episodes[i].created_at;
newEp.season_number = episodes[i].season_number;
//changer le episode_number de newEp
newEp.episode_number = episodes[i].episode_number;
console.log(newEp.episode_number);
updateEpisode.push(newEp);
}
console.log(updateEpisode);
// fetch_customer_data(JSON.stringify(updateEpisode));
//Requete ajax pour envoyer les donner
$.ajax({
url:"{{ route('indexanime') }}",
method:'GET',
data:{updateEpisode:updateEpisode},
dataType:'json',
success:function(data)
{
$('#animebox').html(data.table_data);
console.log(data.last10episodes);
$('#lastepisode').html(data.last10episodes);
}
})
});
});```
je l'utilise dans mon main.js : bot.commands = new Discord.Collection()
nan mais comment tu push tes commandes sur discord?
Bonjour, j'ai une question a poser concernant l'API de Spotify, je souhaitais déjà savoir si il ya des devs qui ont eu l'occasion de taffer dessus
Salut @worldly flicker regarde l'Api Interaction Observer , c'est exactement ca !
https://developer.mozilla.org/fr/docs/Web/API/Intersection_Observer_API
dans mon LoadSlashCommands.js : await commands.push(slashcommand)
Hello j'ai cette erreur Error: ENOENT: no such file or directory, scandir '../../events'
avec ceci javascript const eventFolders = fs.readdirSync("../../events");
le fichier dans lequel j'ai executé le code ce trouve dans functions/handlers, et j'aimerais accéder à events/client mais pour une raison spécifique cela ne marche pas pourtant ../ permet de revenir d'un dossier en arrière nan?
@unborn knotC'est const eventFolders = require("../../events");
j'ai ça Error: Cannot find module '../../events'
Car c'est pas bon chemin d'accès ?
Sinon, aide toi de l'autocomplétions
c'est ce que j'ai fait :/
Utilise path.resolve() et __dirname
bonsoir, est ce que quelqu'un aurait 2 minutes pour passer m'aider dans mon vocal, j'avais demandé hier mais je me dis que plus j'ai d'avis plus j'ai de chances de le résoudre. Merci !
Okk merci j'essaye ça !
Salut, j'ai un petit soucis
J'utilise un .on('click' en jquery
mais la function que je passe après
je peux l'utiliser que une seule fois
si je re clic bah y'a rien qui se passe
Hello, on peut voir le code ?
Montre le code
```js
$(document).ready(function(){
$('#arrow-right').on('click', function(){
console.log('tet');
//mettre la valeur de updateEpisode sur lastarticle fournis par le controller
let episodes = $('#lastepisode').html();
episodes = JSON.parse(episodes);
console.log(episodes)
// Recuperer pour chaque episode tout les éléments
let updateEpisode = [];
for (let i = 0; i < episodes.length; i++) {
let newEp = {};
//changer le anime_name de newEp
newEp.anime_id = episodes[i].anime_id;
//changer le anime_poster de newEp
newEp.posters = episodes[i].posters;
// Recupere tmdb id
newEp.tmdb_id = episodes[i].anime_tmdb_id;
newEp.id = episodes[i].id;
// revupere titre
newEp.title = episodes[i].title;
newEp.created_at = episodes[i].created_at;
newEp.season_number = episodes[i].season_number;
//changer le episode_number de newEp
newEp.episode_number = episodes[i].episode_number;
console.log(newEp.episode_number);
updateEpisode.push(newEp);
}
console.log(updateEpisode);
// fetch_customer_data(JSON.stringify(updateEpisode));
//Requete ajax pour envoyer les donner
$.ajax({
url:"{{ route('indexanime') }}",
method:'GET',
data:{updateEpisode:updateEpisode},
dataType:'json',
success:function(data)
{
$('#animebox').html(data.table_data);
console.log(data.last10episodes);
$('#lastepisode').html(data.last10episodes);
}
})
});
});``` 
➜ [Voir le message original](#javascript-typescript message)
Ton arrow-right est il contenu dans le html que tu remplaces ?
ouai
faut pas ?
Alors remplace "$('#arrow-right').on('click', function(){"
Par :
$('body').on('click', '#arrow-right", function(){```
L'événement de ton #arrow-right disparaît avec l'élément, le nouveau n'a pas d'événement
Mais le body ne disparaît jamais
oh niquel merci beaucoup
ça parrait logique en plus mais j'y ai pas pensé
parcontre j'ai un autre petit soucis la je sais pas du tout d'ou ça vient
quand je clic ça me séléctionne le contenu tout seul
celui qui apparait
Capture ?
quand je clic sur la fleche de droite
ça me change le contenu et j'ai le text séléctionné
En fait tes arrows ne devraient pas être remplacées
J'pense que c'est à cause de ça que ça fait ça
dacc, je vais essayer de les sortir
rah ouai c'est niquel merci beaucoup
^^
Salut, j'utilise discord js v14 et je rencontre un problème, j'essaye d'utiliser l'event interactionCreate sauf que rien ne ce passe, voici mes intents:
GatewayIntentBits.DirectMessages,
GatewayIntentBits.Guilds,
GatewayIntentBits.GuildBans,
GatewayIntentBits.GuildMessages,
GatewayIntentBits.MessageContent,
client.on('interactionCreate', (interaction) => {
console.log(interaction)
})
Tu as une erreur ?
aucune erreur
J'suis pas sur que d'avoir les intents vont aider.
@weak groveIl faut créer des interactions pour ça ducoups
Si tu n'as rien créer, c'est normal qui ne se passe rien
c'est à dire ?
Si tu as mis que ce code, c'est normal que sa ne fonctionne pas
j'ai suivis la doc de discord il m'indique un exemple
client.on('interactionCreate', async interaction => {
if (!interaction.isChatInputCommand()) return;
if (interaction.commandName === 'ping') {
await interaction.reply({ content: 'Pong!', ephemeral: true });
}
});
sauf que ça ne marche pas non plus
Jsp alors
Ok c'est good je viens de trouver j'avais oublier de créer mon intéraction avec rest
C'est la commande que tu avais oublié de créer
Une interaction c'est le résultat d'une action qu'effectue l'utilisateur avec un composant
Que ce soit un menu, un bouton, un modal ou bien une commande
Bonjour ! je n'arrive pas à faire envoyer un message en éphémère, qqun pourrait m'aider ?
les messages éphémères ne peuvent être envoyés que lors d'une réponse à une interaction
interaction comprenant les commands built-in discord (user, message, slashl), messages components : button, select menu et modal
Hello. J'ai une calculette en overlay de ma page. Ya un eventListener keydown sur le bloc de cette calculette permettant la saisie au clavier. Comment faire pour que quand on clique sur le bloc de la calculette (pas un bouton), cela délcenche la réception de la saisie ?
Après un peu de recherche (https://developer.mozilla.org/en-US/docs/Web/API/Element/keydown_event) j'ai trouvé la solution. Il suffisait d'ajouter l'attribut 'tabindex="-1"' au bloc de la calculette
merci beaucoup ! je ne savais pas
Salut, en gros j'ai fais une api pour voir si quelqu'un a vu un episode, donc quand on charge la page d'un épisode on fait la requête mais c'est plutôt long je sais pas comment regler le soucis si quelqu'un a une idée
Salut. La requête pour un seul épisode est longue ?
bah enfaite ça va scrap du contenue sur un site et je crois que c'est ça qui est long
Tu lis direct des pages html ?
Une seul pour un épisode ou plusieurs ?
pour un episode
Tu lis cette url juste pour avoir l'info que la personne a vu ou non l'épisode ?
ouai
mais apre
genre je peux avoir
tout les episodes de la saison
non
j'ai compris lol
Donc,
Tu affiches dans ta page l'épisode, dont tu as toutes les infos sauf l'info de s'il a été vu ?
bah en gros
ya une appli c'est TV time
c'est pour suivre son avancé sur des séries
et on veut faire que sur la page de l'épisode
on puisse mettre vu depuis le site sur l'appli
mais du coup
pour le bouton je veux verifier qu'il soit deja vu ou pas pour changer la couleur ou agir différement
Oui mais ce qui ralentit ton chargement en fait, c'est juste ton besoin d'avoir cette info de vu ou non ?
Je vois deux pistes
Afficher la page sans l'info, et charger l'info après le chargement de la page,
ouai j'y ai pensé
Voir si c'est long à cause du chargement de l'url ou si c'est ton traitement derrière pour récup l'info
bah en gros, dans la requête
il faut les identifants
et la serie et l'épisode
si on met pas les identifiant
la requete se fait en 0.2s
mais retourne forcement false pcq y'a pas de compte qui est lié
parcontre quand on a le compte on est a 1.5s de requête
donc la c'est problèmatique
Ah donc c'est la requete elle-même qui est si longue arf
La requête vers TV time on est d'accord ?
Pas ton api
ouai c'est ça
pcq
pour chaque requête
ça se redirige vers /login
se connecte
va sur la page
recupere le text d'une div
et renvoie
attend je peux t'envoyer l'api que j'ai récupéré de base
et j'ai refais une api par dessus pcq fallait un backend et tout c'est compliqué
ok, je peux voir ton code pour l'affichage de l'épisode et tout le tralala ?
Voir si j'pourrais optimiser
si tu veux je peux t'ajouter au repos git il est en privé pour l'instant
ou alors je t'envoie un screen
Screen ça devrait aller
mais le code pour scrap il est dans le src et episode dans le git que j'ai envoyé plus haut
Ah mais c'est c'est pour afficher une liste d'épisodes non ?
Un truc que je suis pas sûr de comprendre. Tu as une BDD avec les données des séries/épisodes, ou tout est chargé à chaque fois depuis le site ?
ouai sur le site on a une BDD avec toutes les infos de chaque série, mais c'est pas relié a tvtime et ensuite on relie pour voir si ça a été vu
oki
Faudrait séparer requêtes vers le site et traitement derrière
En fait faire afficher juste le temps des requêtes vers le site pour voir si c'est long
Dans ta console serveur
Sinon tu te connectes à chaque fois, j'pense pas que ce soit nécessaire
bah le truc c'est que ça sera des utilisateurs différents sur l'api
donc je peux pas laisser connecté
Tu peux faire un truc
Tu laisses connecté
Et tu déco que si l'utilisateur de la nouvelle requête est différent
ouai pas bête
Et en même temps tu es sûr que via ton serveur tu peux pas avoir plusieurs sessions à la fois ?
bah je sais pas trop je sais pas comment ça marche
A part ça, comme je disais, charger l'info qui te manque uniquement après avoir affiché la page
ouai je vais essayer les deux merci !
c'est le module
const tvtime = require('tvtime')
let tvtime = require('tvtime-api');
mais apres
le problème c'est que ça stock les cookie du compte dans un fichier quoi...
ça doit pas être très lourd si ?
Ah ais faudrait pouvoir avoir des fichiers différents par utilisateur
Salut, j'aimerais pouvoir savoir si une valeur récupérer dans ma bdd existe bien pour pouvoir ensuite effectué une action dessus, j'ai donc fait ceci
connection.query('SELECT firstname, lastname FROM `users` WHERE `identifier` = ? LIMIT 1', [identifiant], function(error, results, fields) {
console.log(!typeof results[0] === "undefined");
if (!typeof results[0] === "undefined") {
return interaction.reply({content: ":error_1: L'identifiant n'existe pas", ephemeral: true});
} else {
const firstname = results[0].firstname;
const lastname = results[0].lastname;
connection.query("DELETE FROM `users` WHERE `identifier` = ?", [identifiant], function(error, _) { // Need to make one query to delete everything
if (error) throw error;
return interaction.reply({content: `:good_1: Vous venez de supprimer le personnage de ${firstname} ${lastname}`, ephemeral: true});
})
}
})```
mais j'ai cette erreur throw err; // Rethrow non-MySQL errors TypeError: Cannot read properties of undefined (reading 'firstname')
Tu peux faire le check if(results.length === 1) je pense
ou >0
à la place de
if (!typeof results[0] === "undefined") {
tu penses que des localStorage ça peut passer ?
J'pense pas, tu n'es pas dans un navigateur
ou alors je créer un fichier pour chaque utilisateurs, je renvoie un token et je le stock dans la BDD
bah on stock deja les identifiants dans la bdd mais le problème c'est que faut quand meme utiliser la focntion login
Déjà fais le test voir si ça t'avance à quelque chose de pas te reco à chaque fois
ouai
Pourquoi faut quand même utiliser la fonction login ?
bah faut se connecter au compte pour avoir accés au episodes et tout
sinon un utilisateurs aura les série de l'autre
Justement faut trouver un moyen de stocker des sessions indépendantes
Pour pas avoir besoin de relogger tout le temps
bah du coup
faudra que dans la fonction de l'api je regarder et je récupère les bon cookie pour executer la fonction au bon utilisateur
Tu pourrais par ex avoir un objet de connexions
Ou les clés seraient le nom de chaque utilisateur
ouai mais je sais pas du tout faire ça
Ouais dur faut comprendre l'api tvtime et la modifier
Déjà charger l'info "vu" après le chargement de la page
Et l'autre truc que j'avais proposé ^^
Ah ça tue
mais du coup je vois pas trop comment eviter ça quoi
De se co à chaque fois ?
fin je sais pas si je serais capable de tout modifier
ouai
je sais pas par ou comme,cer
Permettre à un utilisateur de garder sa connexion tant que personne d'autre se co, tu vois pas ?
OLui cette opti servira pas à grand chose
Un système de cache sinon
Ton serveur va tranquilou à fréquence régulière aller chercher l'info des épisodes vus et les stocker en BDD
ouai mais
on a penser a stocker ça mais imaginons
je regarde un episode
je le met comme vu
et je pars du site
entre temps je regarde un episode sur un autre site
et je met en vue sur l'appli
quand je reviens sur mon site, bah c'est pas a jour
pcq on aura stocker les épisodes vu avant
et il a changer après en passant par l'appli
Dans ce cas le site va chercher l'info, après chargement de la page
ouai je pense que c'est le mieux
Ton serveur commence par regarder s'il a l'info pour cet utilisateur et cet épisode, une info suffisamment à jour
après je pense qu'un système de fichier pour changer une fois qu'on a le nom de l'utilisateur c'est pas con aussi mais si y'a par exemple 1000 fichiers bah ça ve etre long quand mme
Je ne vois pas pkoi ça serait spécialement long 🤔
bah 1000 fichier c'est pas long a charger ?
Si t'as le login du gars dans son fichier, le fichier est trouvé instantanément
nan mais en mode
dans l'api ya un access.json
c'est la que c'est stocké
donc ça en créer plein pour tout le monde
et ensuite direct quand ya une requête on cherche le fichier correspondant
C'est très rapide ça
ah ok ok je savais
pas
mais parcontre
imaginons
on charge la page et ça se charge après
mais encore une fois si il y a 1000 personnes qui ouvre une page en même temp, l'api agi en meme temp pour les 1000 ou c'est en liste d'attente
Bonne question
Avcec le système chacun son fichier, il ne devrait pas y avoir de conflit, mais avec l'api tvtime actuelle, là je sais pas
ah si chacun a son fichier ça dérange pas ?
ouai mais faut que le code soit bien fait
je sais meme pas si je suis capable de le faire normalement :x
c'est cette fonction qu'il faudrait modifier du coup
ajouter un paramètre utilisateur sans doute
Ou peut-être englober le tout dans une classe instanciable par utilisateur
^^
alors mon pote viens de me dire
enfaite on est sous laravel
et ya des eventlistener
et en gros dés que la personne ou la page
on la charge
et ensuite on récupère les données
donc y'aura un délai mais du coup c'est unique a chaque personne et ça devrait marcher mais bon c'est spécial
je vais essayer un peu tout
Pourtant tu me montres un serveur nodejs depuis le début ^^
A ton api ?
oui
ok
avec les routes que j'ai faites
qui appelle les fonction de l'api tvtime
pcq sous laravel on peut pas utiliser le module tvtime direct c'est compliqué
oui mais enfaite ça change rien je viens de réfléchir
Ah si ptet
si l'api est surchargé bah voila quoi
Mais il a ptet raison, ya probablement pas de risque d'interaction de sessions
quoi que je suis pas sûr de moi là
bah enfaite
dans tous les cas
c'est des sessiion différentes mais l'api peut pas répondre a 2 requête en meme temp sans changer le délai si ?
c'est ça que je comprend pas trop
Les serveur php en principe peuvent répondre à plusieurs utilisateurs en même temps, mais pas à plusieurs requêtes de la même session utilisateur
Laravel oui
fin je sais pas du coup
J'pense pas que si un utilisateur doiv attendre 1,5 s pour avoir sa page, un autre devra attendre derrière
je vais essayer de m'informer sur ça
A mon avis ça colle pas que ta session tvtime soit globale à ton serveur
ouai mais j'y connais pas grand chose c'est pour ça que je me pose la question
j'essaie un truc
@wraith wren re, j'ai tenté de rendre instanciable l'api TvTime
J'ai pas testé vu que je n'ai pas de code utilisant l'api mais j'ai fait au mieux
ah cool merci je vais essayer ça
N'hésite pas si tu sais pas comment t'en servir
du coup j'ai plus besoin de me login ?
fin juste la première fois
Comme je disais taleur, il te faut un objet de sessions
const tvTimeSessions = {}
Après quand t'as une requete tu regardes si tvTimeSessions[user] existe. Si oui tu l'utilises, sinon tu instancies le constructeur que j'ai créé
user correspond au nom d'utilisateur ?
Oui j'ai dit "user" comme ça
Par contre je réalise qu'il faut pas permettre à n'importe qui d'utiliser le use de qqun d'autre
ouai mais du coup logiquement faudra toujours que j'envoie les identifiants en paramètre au cas ou si il existe pas pour le créer
comment ça ?
Tu peux utiliser un système de tokens
Le client te renvoie le token et s'il correspond à celui que tu as stocké c'est bon
Tu n'as pas besoin de renvoyer les identifiants à chaque fois, juste le token, sauf si ya déconnexion
ouai dacc je vois donc faudra qu'a la connexion sur le site je créer le token et je le stock
j'ai un petit soucis d'export
Mais le token tu peux le stocker dans la mémoire de ton serveur, pas besoin de bdd
(dans l'objet tvTimeSessions dont je parlais taleur)
if(!tvTimeSessions['username']){
new tvtime(req.body.username);
}```
Hm je ne vois pas ce qui cloche
if(!tvTimeSessions[req.body.username]){
ah oui merci, mais le soucis c'est l'export
Essaye ça à tout hasard :
const user = require('./user.js')
const shows = require('./shows')
const episode = require('./episode')
class TvTime{
constructor (nomUtilisateur) {
this.nomUtilisateur = nomUtilisateur
}
login = user.login
logout = () => user.signOut(this.nomUtilisateur)
shows = () => shows.getShows(this.nomUtilisateur)
show = (serieId = 0) => shows.getShow(serieId, this.nomUtilisateur)
followShow = (serieId = 0) => shows.followShow(serieId, this.nomUtilisateur)
unFollowShow = (serieId = 0) => shows.unfollowShow(serieId, this.nomUtilisateur)
episode = (serieId = 0, episodeId = 0) => episode.getEpisode(serieId, episodeId, this.nomUtilisateur)
episodeWatch = (episodeId = 0) => episode.episodeMark(episodeId, this.nomUtilisateur)
episodeEmotions = (episodeId = 0, emotionId = 0) => episode.episodeEmotion(episodeId, emotionId, this.nomUtilisateur)
}
export default TvTime```
class TvTime{
constructor (nomUtilisateur) {
this.nomUtilisateur = nomUtilisateur
}
login = user.login
logout = () => user.signOut(this.nomUtilisateur)
shows = () => shows.getShows(this.nomUtilisateur)
show = (serieId = 0) => shows.getShow(serieId, this.nomUtilisateur)
followShow = (serieId = 0) => shows.followShow(serieId, this.nomUtilisateur)
unFollowShow = (serieId = 0) => shows.unfollowShow(serieId, this.nomUtilisateur)
episode = (serieId = 0, episodeId = 0) => episode.getEpisode(serieId, episodeId, this.nomUtilisateur)
episodeWatch = (episodeId = 0) => episode.episodeMark(episodeId, this.nomUtilisateur)
episodeEmotions = (episodeId = 0, emotionId = 0) => episode.episodeEmotion(episodeId, emotionId, this.nomUtilisateur)
}
module.exports = {
TvTime: TvTime
}```
j'ai fias ça ça marche
fin j'ai pas l'erreur en tout cas
moi non plus j'ai juste copier le repo git de base x)
let tvtime = require('tvtime-api');
mais
ça marche pas
TypeError: tvtime is not a constructor
Mon écriture est prévue avec un import du style "import" il me semble
je vais essayer ta m"thide
ah
hmm je comprend pas ça me dit que c'est pas un constructor c'est vraiment bizarre
alors j'ai réussi a isntancier
mais pour utiliser les fonction je crois que je dois toutes les export
Yo, une idée si il existe une api pour gmod ?
franchement j'en sais pas grand chose c'est ce que j'ai trouvé sur internet
Non j'pense pas, ce sont des methodes de la classe
Le problème ça m'arrange pas, je ne vois que des récupération de vote a la limite
Aucune pour récupérer l'état du serveur ou autre
hmm ouai c'est ce que je pensais aussi mais ça me dis que episode n'est pas une fonction
C'est du mélange de ES et Common ?
🤷♂️
Montre ton code pour voir ?
c'est super bizarre pour instancier la classe
je penses pas que ce soit ça du coup
mais je vois pas comment faire
Ah non tu n'y es pas
const tvTime = new TvTime(username)
tvTime.episode...
Je ne connais pas trop les différentes normes js dsl
j'ai déja fais ça:
Montre moi comment tu obtiens "TvTime"
Tu n'es pas en train d'appeler ton module d'avant là ?
tvtime-api c'est le dossier qui contient les fichiers que je t'ai envoyés ?
ouaip
Fais module.exports = TvTime pour voir
C'est plutôt let { TvTime } = require('tvtime-api');
J'pense que nos deux propositions sont bonnes :p
Alors pour l'autre faudrait faire TvTime.TvTime
Mais là tu peux directement faire TvTime
alors ça me dit module not found
celui du module ?
Oep
Oui, le fichier index
La solution de Hecome doit marcher aussi bien
Mais faut pas faire les deux x)
{
"name": "tvtime-api",
"description": "Unofficial TvTime Api for node",
"main": "src/index.js",
"version": "0.3.0",
"keywords": [
"tvtime",
"api",
"shows",
"movies",
"series"
],
"author": "Edgar Valencia <isc.edgarvalencia@gmail.com>",
"repository": {
"type": "git",
"url": "https://github.com/EdgarVaguencia/tvtime-api.git"
},
"license": "MIT",
"scripts": {
"_postinstall": "husky install",
"prepublishOnly": "pinst --disable",
"postpublish": "pinst --enable"
},
"dependencies": {
"cheerio": "^1.0.0-rc.9",
"needle": "^2.6.0"
},
"devDependencies": {
"husky": "^7.0.2",
"pinst": "^2.1.6",
"standard": "^16.0.3"
}
}
bah la j'ai réussi a construire un objet TvTime
mais
J'pense que le souci c'est que le fichier json n'existe pas
Alors qu'avant access.json existait toujours 🤔
bah il est pourtant dans mes fichier
ah ouai
faut que je le créer ?
ah alors
j'ai mis _access.json
et j'ai une nouvelle erreur
atta
J'ai tenté un correctif
C'est utils.js à remplacer
Si le fichier n'existe pas, il prend les paramètres par défaut
Au fait c'est pas sain de mettre mon tvtime modifié dans nodes_modules
Si c'est dans node_modules c'est qu'à la base tu as fait npm install...
ouai mais ça change rien si ?
ça install juste le code depuis node
j'ai toujours la meme erreur
Le truc c'(est qu'une commande npm pourrait supprimer ma version et remettre la normale
ah ouai
après
la c'est un dossier de test
c'est juste pour voir je vais rien réinstaller
et si il faut je metterais dans un autre dossier
Ben c'est pas la même erreur ça
Ce message contient uniquement une image, visible à droite de l'embed.
➜ [Voir le message original](#javascript-typescript message)
Ah oui mais j'ai dû corriger la première erreur
Faudrait que tu supprimes le fichier pour vérifier ma correction
supprimer le quel ?
le json ?
oui
Il est pas encore créé
Mais j'ai trouvé l'erreur que tu dis
C'est une erreur de ma part en créant ma version
c'etait quoi le soucis ?
Donc c'est bon, il n'y a plus l'erreur due à l'absence du fichier
Ligne 13 de episode.js :
util.get(/en/show/${serieId}/episode/${episodeId}, undefined, nomUtilisateur)
Il manquait le paramètre "undefined", du coup le nom d'utilisateur se mettait dans le paramètre data
De la mêem façon qu'avant
Sauf avec le nom d'utilisateur en plus
Avec la fonction setCookie
Oui je sais
J'ai repris son contenu par défaut et je l'ai mis dans "defaultCookies" dans le fichier utils.js
mmh j'ai vraiment du mal a comprendre
si y'a qu'un fichier y'a que un utilisateur a chaque fois
et les valeurs du fichier ne change pas
heu j'ai utilisé la fonction login y'a rien qui se créer
Pas d'ereur ?
nop
ça n'affiche ni "User is login" ni "User no login" ?
Et au niveau des logs côté serveur ?
j'ai rien d'affiché dans la console la
Sinon, tu as fait "res.json(tvTime.username)"
Mais j'ai appelé le champ nomUtilisateur
Et si ça va dans ce else, et que res.json ferme le script, il n'y a aucune requête à l'api pour l'instant
Tu peux faire des console.log pour voir où arrive l'exécution
j'ai réussi a enregistrer ça
dans le tvTimeSessions
mais
il va pas dans le else
T'es sûr ?
alors
attend c'est super bizarre
en gros
c'est normal que le tableau Sessions se vide ?
genre la première fois ça s'execute j'ai rien dedans donc il ajoute au tableau le nom
et ensuite
si j'actualise
il passe dans le else et m'affiche le nom
mais si je réactualise
ça repasse dans le if
et recréer un nom
etc..
et j'ai ça quand ça affiche le nom
A mon avis c'est parce que tu fais deux fois res.json(
Montre comment tu déclares tvTimeSessions ?
hmm ça s'arrete au premier logiquement
Je sais pas, tu peux essayer un return après le premier
ça retourne un objet vide à la place du nom d'utilisateru ?
non je parle de _access.json
je comprend plus rien
tvTime != tvtime
Ah c'est super ça
c'est normal que user se met a 0 ?
Comment ça ?
Non j'pense pas, ça devrait être l'id utilisateur
Où tu as trouvé cette fonction ?
Ah ya deux fonctions getUser
Faut que tu t'intéresses à la fonction getUsers de user.js
C'est là qu'est récupéré l'id user
bah dans l'api de base y'a l'id
mais la je sais pas pourquoi ça se met pas je vais check
alors mon id s'est mit dans le access tout court, au moin il la eu je vais changer ça
mais je comprend pas pourquoi les fichiers se créer pas tout le temp
Avec des logins différents ?
ouai
Avec des connexions qui réussissent ?
ouai bah la ça a marché
mais
je fais un .then apres mon login
et meme avec des mauvais identifiant ça passe
comment ça se fait
mais le fichier lui est pas créer
ok en gros, le user se met dans le fichier access.json de base pcq quand on faire require il trouve pas
mais je comprends pas trop pourquoi il me met ça la
Merci bcp ça marche !
Cool 🙂
Bonjour ! Désolé pour le post de noob mais j'aurais besoin de la commande pour fire un pop up lors de la soumission d'un formulaire tout simple si possible. J'ai essayé de trouver sur le net mais je bug ...
Merci !
Pour fire un pop-up?
Le truc de base en js : la fonction alert
Salut, j'ai une petite question, alors j'ai réussi et la ça fonctionne j'arrive a avoir un fichier pour chaque personne etc, mais je me pose la question, si l'utilisateur change de pseudo sur l'appli comment je fais pour savoir que c'est le meme id ?
bah ouai pcq du coup son pseudo dans la bdd sera différent, donc l'appel a l'api aura un nomutilisateur différent aussi
je pense faire par email c'est plus simple
De base tu n'as pas besoin de gérer ça, si c'est un nouveau pseudo tu as juste à rediriger vers le formulaire de connexion
A moins qu'il y ait quelque chose de particulier par rapport à ta BDD ?
ah oui pour l'enregistrer a nouveau, c'est vrai j'y ai pas pensé
non non du coup merci !
😉
Pas mal
Donc merci beaucoup pour l'aide ! et désolé si j'ai posé beaucoup de question hier mais je comprenais pas grand chose
Salut la famille . je suis nouveau sur le canal.
je suis entrain de suivre le tuto du boss a propos du réseau social . Quand je fais res.cookie , je vois les cookies dans postman mais une fois que je le connecte avec react , je ne le vois pas dans cookie qui se trouve dans la partie appli. Merci de bien vouloir m'aider
Salut. A première vue tu es peut-être impacté par le fait qu'un cookie est propre à un nom de domaine ?
Hey ! Connaissez-vous un module ou bien un repos Github pour avoir une notification lorsqu'un nouveau jeu est gratuit ? Je vous remercie d'avance !
a l'aide je commencer a crée mon bote discord je le lance et :
Uncaught ReferenceError ReferenceError: log is not defined
Hello
Je suis entrain d'essayer de reverse proxy une app js en dev (qui utilise vite) et le probleme est que j ai une erreur de websocket qui ne peux pas ce connecter savez vous comment je peux faire ?
Tu utilises quoi pour reverse proxy?
Bonjour, j'aimerais faire un mix de ces deux codes https://www.youtube.com/watch?v=NWY89IO4w_0&t=1837s&ab_channel=YaoKevin et https://codepen.io/nfj525/pen/rVBaab
Je m'explique, j'aimerais le visuel du codepen avec les barres de couleurs en fonction de la musique mais avec le système de la vidéo youtube où quand on clic ça lance direct sans avoir à sélectionner un fichier. Si quelqu'un peut m'aider car je ne maitrise pas du tout le .js, Merci (Si je ne suis pas clair n'hésitez pas à me demander)
Nginx
merci
Salut, j'aimerai savoir si qlq connais en nodeJs car, j'ai essayer de faire fonctionner mon bot mais il veux pas se lancer voici le code que j'ai utiliser
const Discord = require('discord.js');
const client = new Discord.Client();
const config = require ('./config')
client.once('ready', () => {
console.log('Félicitations, votre bot Discord a été correctement initialisé !');
});
bot.login(config.token)```
@unkempt geyserVersion de discord.js ? Erreur ?
Jsuis en 14.0.3
et j'ai pas d'erreur
Il te manque donc des intents
Oui aussi
j'ai mis client.login(config.token)
mais je vois pas il manque quoi comme "intents"
Regarde des tutos etc 🙂
j'ai install "npm init"
et ensuite le discord.js
Mais justement je suis parti regarde mais j'ai rien trouver c'est pour cela que je viens ici
Il y a plein de tuto qui existe
C'est dans la configuration de ton client, tu dois ajouter les intents nécessaires. Mais effectivement je te conseille de regarder un tuto sur Youtube ou autre pour commencer, ce sera sûrement plus clair que nous à l'écrit 🙂
Bonjour, j'aimerais savoir comment modifier le code ci-dessous pour ajouter 3 boutons, un bouton play, un bouton pause et un bouon mute qui quand on appuie dessus change pour donner une autre image pour indiquer demute.
window.onload = function() {
button.onclick = function() {
audio.src = "onigiri_audio.mp3";
audio.load();
audio.play();
var context = new AudioContext();
var src = context.createMediaElementSource(audio);
var analyser = context.createAnalyser();
var canvas = document.getElementById("canvas");
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
var ctx = canvas.getContext("2d");
src.connect(analyser);
analyser.connect(context.destination);
analyser.fftSize = 256;
var bufferLength = analyser.frequencyBinCount;
console.log(bufferLength);
var dataArray = new Uint8Array(bufferLength);
var WIDTH = canvas.width;
var HEIGHT = canvas.height;
var barWidth = (WIDTH / bufferLength) * 2.5;
var barHeight;
var x = 0;
function renderFrame() {
requestAnimationFrame(renderFrame);
x = 0;
analyser.getByteFrequencyData(dataArray);
ctx.fillStyle = "#000";
ctx.fillRect(0, 0, WIDTH, HEIGHT);
for (var i = 0; i < bufferLength; i++) {
barHeight = dataArray[i];
var r = barHeight + (25 * (i/bufferLength));
var g = 250 * (i/bufferLength);
var b = 50;
ctx.fillStyle = "rgb(" + r + "," + g + "," + b + ")";
ctx.fillRect(x, HEIGHT - barHeight, barWidth, barHeight);
x += barWidth + 1;
}
}
audio.play();
renderFrame();
};
};
Et j'ai trouver un code pour les boutons mais je doute donc corrigez moi si besoins :
var button = document.getElementById("button");
var audio = document.getElementById("audio");
var playbtn = document.getElementById("play")
var stopbtn = document.getElementById("stop")
var volumepbtn = document.getElementById("volume")
playbtn.onclick = function(){
audio.playPause();
}
playbtn.onclick = function(){
audio.stop();
}
playbtn.onclick = function(){
audio.toggleMute()
}
Merci 🙂
(Pour que les boutons soient comme dans la vidéo)
https://www.youtube.com/watch?v=NWY89IO4w_0&t=1294s&ab_channel=YaoKevin
Comment Ajouter de la musique a site web avec du html ccs et JavaScript.
Vous pouvez a présent apprendre a ajouter de l'audio ou de la musique un site web peut importe votre niveau de connaissance en programmation. Nous vous expliquons tout étape par étape.
Nous utilisons HTML et CSS pour donner une structure et un style à la page Web quant...
Salut. Je trouve ta demande vague. Si tu as le code de quoi tu as besoin exactement ?
Salut, enfaîte j'ai réussi grâce a de l'aide à faire mon visualizer mais j'aimerais remplacer ça :
par ces boutons
c'est quand même plus beau
ça c'est l'apparence automatique de ta balise audio ?
Oui quand on ajoute "controls"
Si tu mets pas les controls tu as quoi ?
ok
Alors à priori, faudrait ne pas mettre les contrôles et créer à la main tes trois boutons en html/css
Oui c'est bien ce que je me disais mais j'ai voulus essayer en .js car je pense qu'il en faut pour faire ce système non ?
sauf que je suis une quiche en js
Ouais avec le js que t'as cité plus haut
Oui
Pour transformer le bouton du son faudra un peu plus de code, mais tu peux déjà commencer comme ça
Yes
Allez au boulot 😄
oui mais même pour le système quand je mute
C'est faire et placer les boutons le plus difficile
ah
parce que enfaîte
j'aimerais que quand j'appui sur le mute
il se change en ça
faut pas du js pour ça ?
Si
volumebtn.onclick = function(){
audio.toggleMute()
if(audio.muted){
image.src = 'srcImagedmuted'
}else{
image.src = 'srcImagePasMuted'
}
}```
Quelque chose comme ça
Ho okay merci beaucoup 🙂
Hey ! Comment je peux faire un compteur(channel vocal) de personne ayant un rôle ?
Hey comment je peut add un grade a quelqu'un via le nom du role
comment puis-je faire pour lancer une animation css à chaque fois que je clique sur un bouton comme à chaque fois que je clique sur un bouton ça fait une animation qui le fait sauter (un homme)
jumpButton.addEventListener("clic", fonction () {
stick.style.animationName = "vers le haut" ;
stick.style.animationDuration = "1s" ;
stick.style.animationIterationCount = "" ;
stick.style.animationTimingFunction = "" ;
})
J'ai essayé avec le code mais cela ne fonctionne que pour le premier clic
"click" ou "clic" ?
A la fin de ta fonction du click, tu ne devrais pas "annuler" l'animation après un setTimeout pour réinitialiser le truc ?
En remettant "stick.style.animationName" à chaîne vide par exemple
Crée tes animations en css et en js tu n’auras plus qu’à ajouter et retirer tes class
Après si ce que tu veux c’est déplacer un personnage c’est pas la meilleure façon de faire
Salut! Je voulais savoir si c'était possible d'ajouter un gif à un canvas
si tu utilise le cavas pour draw, oui surement. si tu l'utilise comme image passe directement par un img
Je crois que c’est possible mais il faut que ton image de sortie soit aussi en gif
Bonjour, j'ai rencontré un petit soucis avec le tuto pour faire un bot Twitch (https://g-ca.fr/tutoriels/tutoriel/faire-un-bot-twitch)
Yo!
@deep torrentEst-ce que tu saurais l'aider la dessus ? 
oauth:67ta522qnqpe52miXXXXXXXXXXXXXXXXXXXXXXXXx
C'est vraiment bizarre
Moi quand je le faisais tout se lancais
The host or ISP you are using blocks the IRC/Connection port you are using outbound
The username/password combination is invalid
Bad tmi.js version
Bad NodeJS version
Something else I’ve not thought of
J'ai trouvé ça
I’ve just started making Twitch bots, and I followed the tutorial on self-hosting the bot. I generated an oauth token and copied the files over from glitch. My code: const tmi = require("tmi.js"); // Define configuration options const opts = { identity: { username: process.env.BOT_USERNAME, password: process.env.OAUTH_TOKEN }, c...
J'ai refais la demande de token:
Sauf que je ne sais pas faire pour chacun d'entre eux
tmi.js?
C'est le module qu'on utilise pour se connecter à twitch
C'est bien la v16.15.1 qu'il faut?
Ca reste bloquer
Vous pouvez créer des commandes
Vous avez normalement déjà des commandes par défaut
Dans le dossier commande
ah ok
Et tu saurais ou c'est pour faire des messages répétitive
Hey ! J'aimerai que lorsqu'une personne ayant un compte créé il y'a moins de 3 mois sa ne lui donne pas le role lorsque il appui sur le bouton
const {Permissions, MessageEmbed, MessageActionRow, MessageButton }=require('discord.js')
module.exports = {
name: 'interactionCreate',
async execute(client, interaction) {
if (!interaction.isButton()) return;
if (interaction.customId == "get-premium") {
interaction.member.roles.add('1013243688576614412')
interaction.reply({content: "You have now access to DKW Gun Shop channel's", ephemeral: true})
}
}
}```
Je sais pourquoi j'ai l'impression que c'est du 
Raté c'est du c#
#c-sharp
@red torrent tu peux m’expliquer ces 2 fonctions ?
Déplace la question dans le bon salon du coup
hello j'ai une question à propos de node.js, est-ce que c'est le bon salon?
oui
@past nimbus alors j'avais fait une application en local avec un back node.js et un front react, pour déployer mon front j'ai compris qu'il fallait que je fasse un build pour ensuite l'héberger, jusque là tout va bien, mais pour mon back je ne sais pas comment le déployer
Tu le build et tu le lances sur le serveur d'host
@past nimbus je fais la meme chose pour le back que pour le front?
car voici en gros mon back, c'était un serveur
Bah ton serveur tu peux le build, et c'est ce build que tu vas lancer sur le serveur host
ah ok je vais essayer ça
je pensais qu'il fallait faire différemment
par contre mon fichier server.js commence comme ceci, je laisse port 3000 ? ou il faut que je change le port ?
car c'était mes paramètres en local
Il faut que ce soit un port différent que celui de ton front
@floral bolt d'acc, par contre je ne peux pas build mon back
build c'est pour mon front fait en react
tu n'as pas besoin de build ton back
@red torrent oui justement je ne sais pas comment faire pour le déployer sur mon hébergement
ton hébergement c'est un vps?
@red torrent non
c'est quoi comme hébergeur?
@red torrent je suis chez lws, j'ai pris cpanel
tu es sûr que l'hébergement que tu as prit chez lws supporte nodejs?
oui attends je te fais une capture
Cet article vous explique comment utiliser une application NodeJS dans cPanel.
par contre si ton application react et ton back en nodejs sont sur le même hébergement il va falloir déployer ton application react (build) via ton application nodejs, si tu utilises express tu vas devoir regarder du côté de express.static
et tu n'as qu'un seul hébergement pour ton front et ton back c'est ça ?
@red torrent oui
en fait dans public_html
je mets mon front
enfin je ne sais pas si c'est bien de faire comme ça ...
quand tu vas activer une application node sur cPanel il va changer la configuration nginx (ou apache) pour faire un reverse proxy vers ton application
ce qui fait que par défaut il ne va plus rendre le dossier public_html
tu vas avoir le choix :
- soit tu change la configuration nginx (ou apache) pour rendre ton dossier public_html en plus du reverse proxy
- soit tu vas rendre ton dossier public_html directement via express
pour que ton application react continue de fonctionner
@red torrent ah ok je ne maitrise pas tout ça mais en effet j'ai vu apparaitre nginx dans mon gestionnaire de fichiers une fois que j'avais créé mon application mode.js avec cpanel
Dans ton gestionnaire de fichier? C'est à dire?
oui j'avais compris pour le gestionnaire de fichiers, c'est quoi que tu as vu apparaître sous le nom de "nginx" dedans?
euh ça devait etre dans "my_app" puis dans un autre dossier
pas où mais quoi?
ok alors ça ne va pas t'aider à déployer tes deux applications sur ton hébergement
c'était juste des rapports
dans cpanel tu devrais avoir quelque-chose du type "paramètres de nginx" ou "paramètres d'hébergement"
et normalement tu devrais y trouver un champ qui te permet d'ajouter des règles à ta configuration nginx
j'ai gestionnaire apache, c'est la dedans?
essaie de déjà déployer ton api comme indiqué dans : https://aide.lws.fr/base/cPanel/Fonctions-supplementaires/Comment-utiliser-une-application-Nodejs-sur-un-hebergement-cPanel et ensuite on regardera pour déployer ton app react
Cet article vous explique comment utiliser une application NodeJS dans cPanel.
@red torrent d'acc merci pour l'aide en tout cas
@red torrent, par contre ce que je n'arrive pas trop à comprendre, c'est que dans mon server.js j'avais ça, et qu'une fois que je crée une application vierge, par défaut il me crée un fichier server.js contenant ma 2ieme capture, il faut que je mette mon server.js à la place de celui créé par cpanel ?
tu as uploadé le dossier de ton application node (sans le dossier node_modules) ?
oui j'avais fait cela hier, ensuite j'avais cliqué sur npm install, justement pour que ça installe les dépendances de mon projet
tu as rempli le champ "Application root" correctement?
application root, j'ai mis le nom de mon appli, dans appli url, j'ai mis backend, et dans application startup file j'ai mis server.js
ton application node doit-être dans le dossier correspondant à ce que tu as entré dans "Application root"
@red torrent oui il me semble avoir bien rempli ça
dans ce cas le fichier server.js qu'il a crée devrait remplacer celui que tu avais déjà
ah ok
s'il écrase ton fichier existant
sinon il devrait laisser ton fichier server.js comme il était
ah oui mais moi je ne faisais pas les choses dans cet ordre, je créais l'apllication node en renseignant les différents champs applaction root, application url, et application startup file, ensuite en validant ceci ça me créait dans mon gestionnaire de fichiers: plusieurs dossiers ... dont un avec le nom que j'avais donné a l'application root, et ça me créait un fichier server.js
puis ensuite j'uploadais mon backend (sans les node modules) dans ce dossier en remplaçant le server.js créé par le miens
et je faisais un npm install
je pense que tu peux le faire dans l'ordre que tu veux
et c'était a partir de cette étape que je ne savais plus quoi faire en fait lol
tout est expliqué dans le tuto que je t'ai envoyé
oui je vais voir la suite ^^
sinon dans cpanel tu connais un peu? là actuellement j'ai nombre de processus au maximum...
non je n'ai jamais utilisé cPanel
ah ok, tu utilises quoi ?
avant j'utilisais plesk pour gérer mes domaines mais maintenant je n'utilise plus rien
je fais des LXC avec proxmox pour déployer mes applications
bah en fait c'est comme si tu voulais héberger tes applications sur des vps
sauf que les vps tu les crées toi-même depuis un serveur dédié avec un outil de virtualisation (proxmox)
oui justement j'ai vu ça vps également c'est plus simple que ce que j'essaie de faire ?
tu n'as pas d'interface pour tout gérer avec un vps mais c'est plus simple car tu n'es pas sur du mutualisé
tu as accès à tout
par contre il faut repayer en plus tous les mois
sur ton vps tu installe nodejs, pm2 et nginx puis le tour est joué
c'est comme si j'étais en local apres ?
oui un vps c'est plus cher qu'un hébergement mutualisé
en quelque sortes oui
en plus ça me permettrait de mettre mon back dans un autre endroit que mon front
tu as docker qui est pas mal aussi mais je l'ai que très peu utilisé
c'est une alternative aux lxc
Bonjour j'ai appris javascript sur youtube , j'ai un niveau faible pour faire des algorithme avez vous des endroits ou pratiquer avec des exercises pour debutant
Codingame par exemple
@open python Merci je vais voir si le niveau est accessible pour moi
Salut !
C’est à dire bump, t’as un site ?
Mais tu veux le bump ou ducoup ?
Waw okay 😅
J’aurais voulu aider mais pour l’instant j’apprends aussi et je touche pas trop au php / SQL :/
A chaque bump sauvegarde la timestamp dans ta bdd, et après en php tu classes de la timestamp la plus grande à la plus faible
Bonjour, je cherche à faire une commande qui ban 1 personnes sur tout les discord ou est le bot directe
J'ai trouvé aucun tuto sur cela
salut, tu peux utiliser une méthode un peu crade qui consiste à générer un tableau contenant tous les identifiants des serveurs discord où se trouve le ban, puis tu parcours ton tableau en exécutant la commande de ban sur les serveurs en question un à un
je n'ai pas fait beaucoup de Discord.js, donc je ne peux pas te dire si cette technique va vraiment marcher
essaye pour voir 👍 @keen narwhal
Je vais essayer
Tu fais un truc qui ressemble à ça :
const ban = (client, user) => {
client.guilds.cache.forEach((g) => {
g.members.ban(user.id);
});
}
@keen narwhal tu as probablement ta réponse 🙂
mrc je vais tester
j'ai quoi a modifier dessus a part la commande ?
const { Client, Partials, Collection, InteractionType, GuildMember } = require("discord.js")
const ms = require("ms")
const mongoose = require("mongoose")
const config = require("./config")
const { Channel, Message, Reaction, ThreadMember, User, GuildScheduledEvent } = Partials
const client = new Client({
intents: 131071,
partials: [Channel, GuildMember, Message, Reaction, ThreadMember, User, GuildScheduledEvent],
allowedMentions: { parse: ["everyone", "roles", "users"]},
rest: { timeout: ms("1m")}
})
client.commands = new Collection()
client.events = new Collection()
const Handlers = ["Events", "Commands"]
Handlers.forEach(handler => {
require(`./Handlers/${handler}`)(client)
})
client.on("ready", () => {
console.log("Bot is Ready !")
})
module.exports = client
mongoose.connect("url de connection mongoose", { useNewUrlParser: true, useUnifiedTopology: true }).then(() => console.log("base de donnée connectée !")).catch((e) => console.error(e))
client.login(config.token)```
Utilise les blocs de code, non d'une pipe
Pour le mongoose connect je met quoi si je le fait avec mysql
🤔
[Discord JS] Heyyy j'ai un petit problème avec mon système de ticket utilisant un menu déroulant, le problème étant que je n'ai pas d'erreur dans le code mais aucun ticket ne se crée, quelqu'un pourrait m'éclairer svp ?
Sans ton code ce sera compliqué
Hey ! Quelqu'un saurait comment je peux faire pour que sa m'ouvre un posts a la place d'un channel
if (interaction.customId == "open-ticket") {
if (DejaUnChannel) return interaction.reply({content: `${interaction.user.username} vous avez déjà un ticket d'ouvert.`, ephemeral: true})
interaction.guild.channels.create(`${interaction.user.username} ticket`, {
type: 'GUILD_TEXT',
topic: `${interaction.user.id}`,
parent: `${catégorie}`,
permissionOverwrites: [
{
id: interaction.guild.id,
deny: [Permissions.FLAGS.VIEW_CHANNEL]
},
{
id: interaction.user.id,
allow: [Permissions.FLAGS.VIEW_CHANNEL]
},
{
id: roleStaff,
allow: [Permissions.FLAGS.VIEW_CHANNEL]
}
]
}).then((c)=>{
const partenariat = new MessageEmbed()
.setTitle(`Ticket de ${interaction.user.username}`)
.setDescription('Votre ticket a été ouvert. Décrivez votre demande et attendez qu\'un membre du Staff vous réponde.')
.setColor('#1488ff')
.setThumbnail('https://i.imgur.com/w6QdHcJ.png')
.setTimestamp()
c.send({embeds: [partenariat], content: `${roleStaff} | ${interaction.user}`, components: [row]})
interaction.reply({content: `${interaction.user.username} your ticket has been opened with success <#${c.id}>`, ephemeral: true})
})
Bonjour tout le Monde,
Je souhaite créer une application météo avec la géolocalisation. Mais en fond d'écran j'aimerais afficher des paysages de photo aléatoire relatif à la météo (exemple si il pleut une photo ou il est entrain de pleuvoir ,de même pour la neige ou autre) , est-ce que qu'un pourrais de donner une liste d'API ou éventuellement une façon de faire en utilisant javascript. ??
Hello, petite recherche préliminaire pour t'aider :
https://api.meteo-concept.com/
https://openweathermap.org/api
https://open-meteo.com/en
Pour la photo en fond d'écran, en fonction de la requête et du résultat, tu compares ça dans un script JS et tu changes en fonction. Attention il me semble que sur ces APIs les requêtes sont limités par jour (en version gratuite)
Simple and fast and free weather API from OpenWeatherMap you have access to current weather data, hourly, 5- and 16-day forecasts. Historical weather data for 40 years back for any coordinate. Weather maps, UV Index, air pollution
and historical data
Bonjour à tous, je viens tout juste d'arriver sur ce Discord.
Je suis actuellement en train de suivre une vidéo de FromScratch "[Javascript Full-stack] Projet MERN | Créer un réseau social | Partie Front-end" et j'ai un soucis de cookies et de token.
Suis-je au bon endroit ? Si oui, il y a-t-il des âmes charitables pour m'aider ?
Je vous remercie, bonne journée à tous 😉
Hello,
Yes tu es effectivement au bon endroit, ici tu peux poser tes questions ou exposer tes problèmes concernant JS ! Si c'est lié à du code n'hésite pas à envoyer les morceaux correspondants et les messages d'erreurs
ALT + 7 et tu appuie 2-3 fois
Pourquoi utiliser une librairie quand tu peux tout simplement faire Date.now() pour avoir la timestamp?
Merci beaucoup
C’est pas plus opti que d’utiliser les méthodes JS de base
Bah ;-;
Y a des méthodes natives pour formater la date
Je suis pas sur d'avoir tout compris; mais bon tant que ça marche
Mmh
Bah tu veux stocker quoi exactement j'ai pas compris
En gros tu veux exec une fonctions en fonction des param que tu as c'est ça ?
cb1 ? con.query(sql, format, function (err,result) {}) : con.query(sql, function (err,result) {})
Bonjojur, bonjour.
Quelqu'un calé ici avec Nuxt3 ?
J'ai un problème de duplication de layout, avec un navigateTo('')
Hey! J'avais besoin d'une aide précieuse. J'ai tenté de faire un menu de settings mais le soucis, c'est que j'avais oublié que les Selects Menu peuvent avoir uniquement 25 options donc ce que je souhaites faire c'est d'ajouter un second select menu si le guild contient +25 channels mais j'ai complètement oublié comment faire. Savez-vous comment m'aider ? Je n'ai trouvé aucun sujet parlant de cela autre part. Merci d'avance ! Voici mon code de base :
const componentForAddChannel = new Discord.ActionRowBuilder()
.addComponents(
new Discord.SelectMenuBuilder()
.setCustomId('DropDownMenuBuilderForSetChannelSlowmode')
.setPlaceholder('➜ Choisir un channel')
.addOptions(interaction.guild.channels.cache.filter(channel => channel.type === Discord.ChannelType.GuildText).map(channel => ({ label: channel.name, value: channel.id })).slice(0, 25))
)```
Hey ! Comment je fais pour que mon embed soit envoyer avant ? https://gyazo.com/a60001d092636b1cac432a1fbf5f3d06
Tu peux pas
Pas en un seul message
⤴️
bah du coup
Oui?
Bonjour je suis nouveau et j'aimerais savoir, comment on fait pour créer une "vrai commande" / (les commandes slash) ?
alors
un truc comme ça
const channels = interaction.guild.channels.cache.filter(channel => channel.type === Discord.ChannelType.GuildText).map(channel => ({ label: channel.name, value: channel.id }))
const rows = [];
for (let i = 0; i < channels.length; i+=25) {
rows.push(new ActionRowBuilder().addComponents(new SelectMenuBuilder().setCustomId('DropDownMenuBuilderForSetChannelSlowmode').setPlaceholder('➜ Choisir un channel').setOptions(array.slice(i, i + 25))));
};
enfin attends 🤔
Ok ! Merci énormément !
pas de problèmes, est ce que tu comprends le code ?
yop ! y a le guide de djs qui peut t'aider
Oui je te remercie infiniment !
Je vais tester!
Ohh merci beaucoup !
nickel, néanmoins
le problème de cette méthode est que si y a plus de 125 (text) channels
ça va poser problème ;-;
Ce n'est pas un problème mdr
bah du coup si ?
Pourquoi ça va poser un problème ?
tu peux pas avoir plus de 5 row par message
c'est channels pardon x)
si c'est juste un bot pour ton serveur, aucun problème, mais si tu l'ouvres au public, bah t'auras une erreur de djs et le message pourra pas s'envoyer
Non non, c'est du perso haha
Juste j'ai cette erreur
Je n'ai pas de ligne wtf
tu peux log componentForAddChannel ?
non ça ça veut dire que t'as plus de 25 channels
Oui, j'en ai 30
euh tu envoies comment le message?
Sous forme d'embed en ephemeral
Puis, je fais editReply()
tu peux envoyer le code ? 🤔
Il est très très long
nan mais juste le bout où tu envoies le message avec les components
L'endroit ou je send le Select Menu est ici
Zo row est arrivé 🥳 pardon
donc ce que tu peux faire par exemple c'est
{ components: [ channel, tools ].flat() };
fin en réécrivant les bons noms de variables mais voilà
Juste en ajoutant .flat() à la fin ?
ou alors tu peux aussi concat le tools dans channel, ou push, avant comme tu veux
yep
je sais pas si tu as compris pourquoi ? ~
Je vais essayer ça !
Pour ne pas que ce soit un array dans un row ?
heu bah en gros la structure de ton truc c'est ça
components : [ [ row, row ], row ]; alors que les rows sont censées être directement contenus dans l'array component
ah yep du coup faut que tu aies un custom id différent pour chaque version du componentchannel
Comment je fais du coup ? Je vais devoir faire deux réponses aux 2 customs id ?
ça dépend de comment tu gères les interactions
C'est-à-dire ?
bah
comment ton gères les interactions des components
là je sais pas comment est ta structure on peut imaginer un truc comme ça
// si avant c'était ça
if (customid == 'DropDownMenuBuilderForSetChannelSlowmode') //do this
// maintenant ça peut être ça
if (customid.startsWith('DropDownMenuBuilderForSetChannelSlowmode')) // do this
et modifier le code en
for (let i = 0; i < channels.length; i+=25) {
rows.push(new ActionRowBuilder().addComponents(new SelectMenuBuilder().setCustomId('DropDownMenuBuilderForSetChannelSlowmode' + i).setPlaceholder('➜ Choisir un channel').setOptions(array.slice(i, i + 25))));
};
bah du coup celui là par exemple tu peux le remplacer par un startswith
t'as mis quoi dans ton code?
non je veux dire dans la gestion des interactions
Bonjour, j’aurais une petite question pour mon site de streaming. J’ai actuellement un site de streaming et je voudrais le mettre en ligne, il aura pour listant aucun abonnement qui est prévue, le but du site de streaming que je voudrais mètre en ligne et totalement gratuit sans aucune PUB. Ici je voudrais le mettre sur une machine OVH pour éviter toute vol du code ou autre sauve que je ne connais pas la puissance que je dois prendre pour un site de streaming. Si une personne serais me dire ce que j’ai besoins comme puissance au minimum pour le site. Il a aucune disponibilité de téléchargement sur le site. Le site a été créer avec du code javascript je ne c’est pas si ça peux changer un truc ou pas.
Petit + en question:
Je voudrais faire un site de streaming totalement légal avec les droits d’auteur sauve que je ne c’est pas comment les avoir et comment le faire.
Je n'ai pas compris désolé
c'est toujours ça ?
Non
if (interaction.customId.startsWith('DropDownMenuBuilderForSetChannelSlowmode')) {
Je regarde ça juste après je vais manger !
Tu veux que je console log quoi ?
si la condition est vraie
Donc console.log(interaction.customId.startsWith('DropDownMenuBuilderForSetChannelSlowmode'))
J'obtiens false
tu peux console.log interaction.customId?
DropDownMenuBuilderForSetTimeSlowmode
Non
je comprends pas où est le problème là-
Enfaite, j'utilise un select menu pour utiliser un autre select menu
bonjour, une personne de dispo qui connais bien cloudinary/node.js/react de dispo?
Pas sûr que tu puisses obtenir les droit de ce que tu diffuse
Faut contacter les ayants droit par mail mais t’es pas netflix et t’as probablement pas assez d’argent pour ce genre de droit
C'est bon !! J'ai trouvé d'où ça venait. Je me suis trompé de customId 
Merci beaucoup
Nickel
Aucun problème
bonjour, petite question surement débile mais je ne trouve pas la réponse sur internet. Lorsqu'on utilise la commande const guildId = ''; où trouvons nous la valeur ?
Hey! Je n'ai pas compris ta demande. Tu souhaites obtenir l'id d'un guild ?
J'allais poser la même question !
Oui
Tu utilises une interaction ou bien un message ?
Euuhh 😭
Si tu veux récupérer l'id d'un guild, tu peux normalement directement le faire depuis ton discord.
Si ce n'est pas dynamique, un simple clique gauche suffit
Oe mais comment ?
Il faut activer le mode développeur de ton discord
<interaction Ou message>.guild.id ( Pour les bots )
Pour l'activer tu peux cliquer sur la petite roue crantée en bas, et ensuite te rendre dans les paramètres avancées, et tu trouveras un bouton pour activer le mode développeur. Et ensuite quand tu feras un clique gauche sur ton message ou sur ton channel, tu pourras copier l'ID de celui-ci
D'acc merci
Moi c'est un const
const guildId = "VALEUR"
Dans ce cas, ma solution semble être la plus simple pour récupérer ce que tu cherches
D'accord merci beaucoup
Si tu souhaites automatiser un peu, tu pourras donc faire :
<interaction Ou message>.guild.id
Ahh ok merci
Bonjour, j'essaye actuellement de faire une système en mode quand je warn quelqu'un, je peux mettre une certaine durée, et lorsque la date est expirée, la sanction s'enlève automatiquement du localhost. J'ai cherché partout, notamment sur google, mais je comprenais rien. On m'a dit qu'il fallait utiliser un setInterval et un Date.now(). J'ai réussi au niveau du setInterval, mais je trouve rien pour le Date.now(). Ducoup, il me semble qu'il faut que je fasse un onglet dans le localhost, mais j'ai des problèmes quand je fais ça, donc si quelqu'un arrive à m'aider, merci beaucoup.
Merci d'avoir lu !
Bonjour, excusez moi de vous déranger à nouveau mais j'ai essayer de créer une commande clear sauf que j'ai une erreur au niveau de mon FLAGS et je n'arrive pas à comprendre pourquoi... Merci d'avance de votre aide
Bonjour. Ya pas un numéro de ligne d'erreur ?
Quel cursus me conseillez vous pour full stack JavaScript ?
´´´console.log(“pls")’´´
Oclock
Nan je crois pas
Et là on voit tout ton code ?
Je voudrais juste la partie où est située l'erreur ^^
bah je l'ai mise nan ?
Doit yavoir le mot "flags" quelque part
FLAGS c'est censé être différent de flags, donc c'est bizarre
ah oui je vois, je vais regarder
j'ai relancé le programe et il m'a mis la même chose mais avec FLAGS
Quel cursus me conseillez vous pour full stack JavaScript ?
´´´console.log(“pls")’´´
tu as deja poser ta question :/
Personne a rep
si une personne
et puis peu importe quelle école tu prend tu ne pourras pas etre vraiment dev full stack (si on a la meme def ^^) et ce qui va te différentier des autres c'est ton taff perso
apres je dirais que le mieux reste un IUT informatique mais tt depends ou tu veux travailler
si tu veux quelque chose de plus spe web par exemple tu as HETIC ou les gobelins, mais encore une fois tt va dépendre de ce que tu veux faire et ou
(et si c'est teletravaille ou pas, reconnu par l'etat ou pas...)
.
@true ravine
ça dit que "Discord.Intents" est indéfini
si moi je t'es dis oclock
Bonjour je voudrais savoir pourquoi je récupère undefined quand je fais ça (id a bien une valeur qui est l'id d'un user):
```let id = accounts[${user_id} / id]
const user = client.users.cache.get(${id})
console.log(user)
Merci
Je ne pense pas que je vais pouvoir t'aider beaucoup plus, je ne connais pas l'API Discord :/
Ton user n'est pas en cache
Moi j'pense que c'est plutôt que la clé est mauvaise
Dans la clé "id" est une sous-chaine, je sais pas si c'est normal
@hasty shoal qu'essaies-tu de faire avec ce code ? ${user_id} / id
(avec les backquotes en plus)
Ahh t'inquiète, merci beaucoup quand même !
je récupère juste un id depuis une bdd json
cque je veux faire c'est envoyer un mp à cet utilisateur sans passer par interaction.user.send() mais plutot en partant de mon client, retrouver l'id et lui send
nan ça me récupere bien juste l'id
Après c'est ptet normal je sais pas ce que contient "accounts"
Si tu voulais faire une division, il fallait juste écrire [user_id / id]
bah en mode la clé c'est '${user.id} / id' et ça me renvoie bien la valeur contenant l'id
en gros je veux partir de cet id que j'ai, pour lui envoyer un mp
ok désolé. Et dcp quand je pars de mon bot avec client.users.cache.get('id') ça me trouve undefined
