#javascript-typescript
1 messages · Page 113 of 1
Wesh il est seul en meme temps 😭
Oui
waa l'oeil de Faucon
Essaie de remplacer ton .setDescription(`${msg}`) par .setDescription("test embed")
Je veux voir si ça vient de la description ou pas
Apparemment ça veut supprimer un message qui existe pas
Bah je sais pas j'ai pas plus d'infos 
Ah
ah
est-ce que quand tu fais la commande, elle se supprime ?
Bonjour, je cherche un moyen de récupérer des informations sur une playlist YouTube musique, (image de cover, titre et artiste) pour les incorporer sur une page web, le tout se mettant à jour régulièrement. Avez vous pistes sur comment je pourrait faire ça ?
Tu as direct un code d'intégration sur la playlist.
Bg tu peut venir voc en 2 2
Ok mrc je vais regarder ça, mais es ce que je pourrais modifier le css ?
Stv
Oui il me semble.
Oui
oki.
désolé mais, je comprend pas trop ce qu'il m'arrive
if (!this.deferred && !this.replied) throw new Error('INTERACTION_NOT_REPLIED');
^
Error [INTERACTION_NOT_REPLIED]: The reply to this interaction has not been sent or deferred.
at CommandInteraction.editReply (C:\Users\arthu\Desktop\Bot UltrArthy\node_modules\discord.js\src\structures\interfaces\InteractionResponses.js:142:48)
at Client.<anonymous> (C:\Users\arthu\Desktop\Bot UltrArthy\index.js:90:19)
at Client.emit (node:events:406:35)
at InteractionCreateAction.handle (C:\Users\arthu\Desktop\Bot UltrArthy\node_modules\discord.js\src\client\actions\InteractionCreate.js:83:12)
at Object.module.exports [as INTERACTION_CREATE] (C:\Users\arthu\Desktop\Bot UltrArthy\node_modules\discord.js\src\client\websocket\handlers\INTERACTION_CREATE.js:4:36)
at WebSocketManager.handlePacket (C:\Users\arthu\Desktop\Bot UltrArthy\node_modules\discord.js\src\client\websocket\WebSocketManager.js:346:31)
at WebSocketShard.onPacket (C:\Users\arthu\Desktop\Bot UltrArthy\node_modules\discord.js\src\client\websocket\WebSocketShard.js:478:22)
at WebSocketShard.onMessage (C:\Users\arthu\Desktop\Bot UltrArthy\node_modules\discord.js\src\client\websocket\WebSocketShard.js:317:10)
at WebSocket.onMessage (C:\Users\arthu\Desktop\Bot UltrArthy\node_modules\ws\lib\event-target.js:199:18)
at WebSocket.emit (node:events:394:28) {
[Symbol(code)]: 'INTERACTION_NOT_REPLIED'
}```
et mon code :
```js
case 'suggest':
interaction.deferReply({ephemeral: true})
embedSuggest = new Discord.MessageEmbed()
.setColor('#0dff00')
.setTitle('📝 Nouvelle Suggestion')
.setDescription(`**Auteur:** \`\`${interaction.user.username}\`\`\n\n**Suggestion:**\n> ${texte}`)
.setFooter({text: `Suggestion trouvée par ${interaction.user.username}`, iconURL: interaction.user.avatarURL()})
.setTimestamp();
client.channels.cache.get('903386282909134918').send({ embeds: [embedSuggest]})
interaction.editReply('suggestion envoyée', {ephemeral: true})
break```
frerrot, je deferReply juste au dessus
🤔
Mais await devant interaction.deferReply et oublie pas de mettre aussi async avant.
Personnellement pour moi le await à marcher donc il en a surement besoin pour defer.
(j'essaie d'apprendre)
ah
¯_(ツ)_/¯
tkt moi aussi ça a marché mais, je voulais savoir à quoi il servait
pas grave
en tout cas, merci pour ton aide
Le await de base c'est l'équivalent du .then.
Voilà.
en gros, ça veut dire qu'il attend une réponse ?
Oui surement
dites-moi, si j'ai créé un embed et que je l'ai envoyé, comment je pourrais le modifier plus tard pour l'envoyer mais avec une seule différence ?
genre, pour éviter de recréer l'embed entièrement
en gros, j'ai créé un embed qui va s'envoyer dans un certain channel et, une fois envoyé, j'aimerais rajouter un .setContent('suggestion envoyée') et l'envoyer à nouveau, est-ce possible ?
Je pense avoir une idée
Mais c'est un peu compliquer
En gros faut crée juste un endroit dans le discord avec un sélecteur qui te permet de naviguer entre les différente choses que tu veut changer
Ensuite tu met dans ton code se que le sélecteur reçois
oulà
compliqué tout ça
tu peux pas récupérer le dernier embed envoyé dans les channel pour le modifier ?
faudrait que j'essaie un truc comme ça
je reviens dans 10 mins, je vais promener mon chien
En gros, les fonctions qui prennent un certain temps d'exécution (genre quand tu fais appel à une API extérieure, par exemple), elles renvoient ce qu'on appelle des Promises (promesses)
Et await ça sert à attendre que cette promesse soit complétée, pour en obtenir le résultat
re
haa, d'acc
Bah après j'ai que sa en tête
Hello je cherche pk est-ce que mon code ne focntionne pas
const { Client } = require("discord.js");
const client = new Client({intent: 1});
const { Token } = require("./config.json");
client.once("ready", "" >= {
console.log("Bot Op");
client.user.setActivity("Je suis un test", {type : "PLAYING"})
});
client.login(Token);
C:\Users\carfun\Desktop\Bot Discord GLua\index.js:7
console.log("Bot Op");
^
SyntaxError: Unexpected token '.'
at Object.compileFunction (node:vm:352:18)
at wrapSafe (node:internal/modules/cjs/loader:1033:15)
at Module._compile (node:internal/modules/cjs/loader:1069:27)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1159:10)
at Module.load (node:internal/modules/cjs/loader:981:32)
at Function.Module._load (node:internal/modules/cjs/loader:822:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:77:12)
at node:internal/main/run_main_module:17:47
[Finished in 119ms]
bizarre
Les gars qui sait comment utiliser model.export ?
pas moi, déso
oui je l'ai copié coller, et de toute façon l'erreur vien du console.log
att je te montre mon config
Déjà c'est pas config.json c'est que .env
sans le token
Enleve ton token
biensure
ok tranquille
Mais pas comme sa
bg
Faut tu laisse TOKEN=xxxxxxxxxxxxxxxxxxxxxxxx
Et c'est bon
pas bsoins d'autre choses
donc juste
Token = xxxx
j'ai réagi comme ça car il y a déjà un mec qui m'a montré son config.json entier et s'est fait raid son serveur Discord à cause des méchants qui lui ont pris le token
Oui en majuscule tout
mais ducoup je dois le call en maj ?
CLIENT_TOKEN=[YOUR_BOT_TOKEN]
Tien met sa
Mais d'abord crée un fichier qui s'appelle .env
et c'est la ou tu met sa
comment tu fais ?
il y a une marche a suivre ?
à quoi ça sert ?
perso j'ai mon token dans mon config, qu'est-ce que ça change ?
ton fichier doit s'appeler juste .env
json
ru écris : exports.TOKEN = "XXXXXXXXXXXXXXXXXXX"
et juste en bas tu écris exports.PREFIX = "?"
ok
yep
Avec le point virgules biensur
sur les deux ligne
Oui
OK
Ensuite
mais ducoup c'est du js pas du json on est d'accord
tu vois tout en haut
Oui js
Tu vois tout en haut y'a les const require
tu écris
Et ensuite
donc ça donne ça
const { Client } = require("discord.js");
const client = new Client({intent: 1});
const { TOKEN, PREFIX } = require('./config');
Oui c'est bon c'est clean
Ensuite
Tu vois dans ton index
tu va tout en bas et
tu vois ou y'a ton token de base ?
en bas
tu écris
Et c'est bon normalement
ok je test
tjr pas
C:\Users\carfun\Desktop\Bot Discord GLua\index.js:7
console.log("Bot Op");
^
SyntaxError: Unexpected token '.'
at Object.compileFunction (node:vm:352:18)
at wrapSafe (node:internal/modules/cjs/loader:1033:15)
at Module._compile (node:internal/modules/cjs/loader:1069:27)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1159:10)
at Module.load (node:internal/modules/cjs/loader:981:32)
at Function.Module._load (node:internal/modules/cjs/loader:822:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:77:12)
at node:internal/main/run_main_module:17:47
[Finished in 98ms]
const { Client } = require("discord.js");
const client = new Client({intent: 1});
const { TOKEN, PREFIX } = require('./config');
client.once("ready", "" >= {
console.log("Bot Op");
client.user.setActivity("Je suis un test", {type : "PLAYING"})
});
client.login(TOKEN);
Non
enleve
Les guillemet sur le token
dans config.js
bas il y en a pas
exports.TOKEN = "XXXXXXXXXXXXXXXXXXX"
t'enleve les deux guillemet
tu les a enelever ?
L’erreur parle pas de ça hein ^^
exports.TOKEN = TSDfujfuhbfiqurbebhhDhJFSB;
exports.PREFIX = "?";
Je vous invite à la relire
Tu pourrais l'aider, je suis pas très fort
"" >= { … } c’est nouveau ? J’ai jamais vu ça
moi non plus, vive les tuto
d'ailleurs, j'ai pas tout pigé à ce que vous faites, vous avez fait un config en javascript ?
we
Mais normalement c'est en .env mais j'ai oublier
Tu es sûr que c’était pas une arrow function ?
le .env, j'en ai un tout petit peu entendu parler
j'ai pas totalement pigé comme ça marche
Ah mais oui c'est une fleche nn comme sa =>
Tu l'a mis surement à l'envers
je ne savais pas que ça existait
j'ai peut-être trop fait de lua

?
les deux
la même ?
const { Client } = require("discord.js");
const client = new Client({intent: 1});
const { TOKEN, PREFIX } = require('./config');
client.once("ready", "" => {
console.log("Bot Op");
client.user.setActivity("Je suis un test", {type : "PLAYING"})
});
client.login(TOKEN);
C:\Users\carfun\Desktop\Bot Discord GLua\index.js:6
client.once("ready", "" => {
SyntaxError: Malformed arrow function parameter list
at Object.compileFunction (node:vm:352:18)
at wrapSafe (node:internal/modules/cjs/loader:1033:15)
at Module._compile (node:internal/modules/cjs/loader:1069:27)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1159:10)
at Module.load (node:internal/modules/cjs/loader:981:32)
at Function.Module._load (node:internal/modules/cjs/loader:822:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:77:12)
at node:internal/main/run_main_module:17:47
[Finished in 97ms]
Ton arrow function est malformé
j'ai oublié comment ça marche mais, perso, l'entrée de mon ready ressemble à ça : client.on('ready', async () => {
ah mais oui !
Le async est pas nécessaire dans son cas mais oui
oui, pardon, j'ai oublié de l'enlever
mais genre, les deux guillemets, essaies de les remplacer par des parenthèses
mais ducoup ?
t'as encore l'erreur ?
j'ai une autre
dis-moi ?
const { Client } = require("discord.js");
const client = new Client({intent: 1});
const { TOKEN, PREFIX } = require('./config');
client.on('ready', async () => {
console.log("Bot Op");
client.user.setActivity("Je suis un test", {type : "PLAYING"})
});
client.login(TOKEN);
C:\Users\carfun\Desktop\Bot Discord GLua\node_modules\discord.js\src\client\Client.js:548
throw new TypeError('CLIENT_MISSING_INTENTS');
^
TypeError [CLIENT_MISSING_INTENTS]: Valid intents must be provided for the Client.
at Client._validateOptions (C:\Users\carfun\Desktop\Bot Discord GLua\node_modules\discord.js\src\client\Client.js:548:13)
at new Client (C:\Users\carfun\Desktop\Bot Discord GLua\node_modules\discord.js\src\client\Client.js:76:10)
at Object.<anonymous> (C:\Users\carfun\Desktop\Bot Discord GLua\index.js:2:16)
at Module._compile (node:internal/modules/cjs/loader:1105:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1159:10)
at Module.load (node:internal/modules/cjs/loader:981:32)
at Function.Module._load (node:internal/modules/cjs/loader:822:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:77:12)
at node:internal/main/run_main_module:17:47 {
[Symbol(code)]: 'CLIENT_MISSING_INTENTS'
}
[Finished in 617ms]
il te manque des intents
d'ailleurs, enlève le async, c'est pas utile, pour toi
mais ducoup je remplace par toi ?
enlève juste le async, laisse le reste
en gros, "Malformed arrow function parameter list", c'est parce que la flèche ne prenait pas les parenthèses qui correspondent à une fonction, je crois
et pour les intents
remplace ta deuxième ligne par ça :
const client = new Client({ intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES, Intents.FLAGS.GUILD_PRESENCES] });
comme ça t'es sûr d'avoir toutes les intents et de ne jamais avoir de problème avec
comme ça
const { Client } = require("discord.js");
const client = new Client({ intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES, Intents.FLAGS.GUILD_PRESENCES] });
const { TOKEN, PREFIX } = require('./config');
client.on('ready', () => {
console.log("Bot Op");
client.user.setActivity("Je suis un test", {type : "PLAYING"})
});
client.login(TOKEN);
encore
ah
on va les collectionner

const { Client, Intents } = require("discord.js");
si tu le défine pas ça marchera jamais
C:\Users\carfun\Desktop\Bot Discord GLua\index.js:2
const client = new Client({ intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES, Intents.FLAGS.GUILD_PRESENCES] });
^
ReferenceError: Intents is not defined
at Object.<anonymous> (C:\Users\carfun\Desktop\Bot Discord GLua\index.js:2:39)
at Module._compile (node:internal/modules/cjs/loader:1105:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1159:10)
at Module.load (node:internal/modules/cjs/loader:981:32)
at Function.Module._load (node:internal/modules/cjs/loader:822:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:77:12)
at node:internal/main/run_main_module:17:47
[Finished in 522ms]
ducoup je met ça au dessus
sur ta ligne 1
const { Client, Intents } = require("discord.js");
const client = new Client({ intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES, Intents.FLAGS.GUILD_PRESENCES] });
const { TOKEN, PREFIX } = require('./config');
client.on('ready', () => {
console.log("Bot Op");
client.user.setActivity("Je suis un test", {type : "PLAYING"})
});
client.login(TOKEN);
alors ça c'est déplacé de fichier
tu copie ça et CTRL + A et CTRL + V
wtf?
?
pas toi
comment ça ?
d'ailleurs, ton config est vraiment en javascript ?
si il est en json c'est normal que ça fonctionne pas
C:\Users\carfun\Desktop\Bot Discord GLua\config.js:1
exports.TOKEN = ChgziqgrqonfgqjgDGjbOGBFQDJGNQJFGQJGN;
^
ReferenceError: OTk4MjQ2NzU2NjQwODkwOTIy is not defined
at Object.<anonymous> (C:\Users\carfun\Desktop\Bot Discord GLua\config.js:1:17)
at Module._compile (node:internal/modules/cjs/loader:1105:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1159:10)
at Module.load (node:internal/modules/cjs/loader:981:32)
at Function.Module._load (node:internal/modules/cjs/loader:822:12)
at Module.require (node:internal/modules/cjs/loader:1005:19)
at require (node:internal/modules/cjs/helpers:102:18)
at Object.<anonymous> (C:\Users\carfun\Desktop\Bot Discord GLua\index.js:3:27)
at Module._compile (node:internal/modules/cjs/loader:1105:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1159:10)
[Finished in 585ms]
oui, mais il doit pas le require comme ça
normal
tu dois le mettre sous ""
c'est un string hein
mais tu te fais chier pour rien
yep, faut comme ça, ton token c'est une variable
dAC
look je te montre
const config = require("./config.json");
config.json
{
"TOKEN": "TON TOKEN",
"PREFIX": "TON PREFIX"
}
index.js
const { Client, Intents } = require("discord.js");
const client = new Client({ intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES, Intents.FLAGS.GUILD_PRESENCES] });
const config = require('./config.json');
client.on('ready', () => {
console.log("Bot Op");
client.user.setActivity("Je suis un test", {type : "PLAYING"})
});
client.login(config.TOKEN);
je reprends son exemple c'est tout
je fais ça et je vous dir
mdrr j'avais pas vu que c'était toi, j'ai cru que c'était carfun
:p

le préfixe c'est ce qu'on va devoir mettre devant la commande en question pour qu'elle s'active

C:\Users\carfun\Desktop\Bot Discord GLua\node_modules\discord.js\src\client\websocket\WebSocketManager.js:245
throw new Error(WSCodes[error.code]);
^
Error [DISALLOWED_INTENTS]: Privileged intent provided is not enabled or whitelisted.
at WebSocketManager.createShards (C:\Users\carfun\Desktop\Bot Discord GLua\node_modules\discord.js\src\client\websocket\WebSocketManager.js:245:15)
at async Client.login (C:\Users\carfun\Desktop\Bot Discord GLua\node_modules\discord.js\src\client\Client.js:254:7) {
[Symbol(code)]: 'DISALLOWED_INTENTS'
const { Client, Intents } = require("discord.js");
const client = new Client({ intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES, Intents.FLAGS.GUILD_PRESENCES] });
const config = require('./config.json');
client.on('ready', () => {
console.log("Bot Op");
client.user.setActivity("Je suis un test", {type : "PLAYING"})
});
client.login(config.Token);
{
"Token": "JBDJBNBQJFBNQPEBNQFB",
"Prefix": "?"
}
cette fois-ci, faut que tu ailles dans Discord developer portal
ça change de d'habitude 😉
yep
je t'écoute qu'est-ce que je dois faire
tu vas dans Bot
une fois dedans, tu actives toutes les intents
si tu as encore un erreur, demande à quelqu'un d'autre car je vais manger 
Halluhah ça fonctionne
Y'a quelqu'un qui peut venir m'aider en 2 2
@oak turret Désoler de la mention
Mais est-ce que tu peut m'aider ?
@broken walrus
Tu peut m'aider et désoler de la mention
j'adore le nom du bot
J'ai trouver bg
C'est bon
Tu utilise Keyv
Tu peut m'aider toi ?
Hello j'ai de nouveau un probl
const { Events } = require("../Validation/EventNames");
const { promisify } = require("util");
const { glob } = require("glob");
const PG = promisify(glob);
const Ascii = require("ascii-table");
module.exports = async (client) => (
const Table = new Ascii("Evennement Chargé");
(await PG(`${process.cwd()}/Events/*/*.js`)).map(async (file) => {
const event = require(file);
if(!Events.includes(event.name) || !event.name) {
const L = file.split("/");
await Table.addRow(`${event.name || "MANQUANT"}`, `📛 Le nom de l'évènement est invalide ou manquant : ${L[6] + `/` + L[7]}`);
return;
}
if(event.once) {
client.once(event.name, (...args) => event.execute(...args, client));
} else {
client.on(event.name, (...args) => event.execute(...args, client));
};
await Table.addRow(event.name, ":white_check_mark: SUCCES")
});
console.log(Table.tostring());
)
C:\Users\carfun\Desktop\Bot Discord GLua\Handlers\Events.js:9
const Table = new Ascii("Evennement Chargé");
^^^^^
SyntaxError: Unexpected token 'const'
at Object.compileFunction (node:vm:352:18)
at wrapSafe (node:internal/modules/cjs/loader:1033:15)
at Module._compile (node:internal/modules/cjs/loader:1069:27)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1159:10)
at Module.load (node:internal/modules/cjs/loader:981:32)
at Function.Module._load (node:internal/modules/cjs/loader:822:12)
at Module.require (node:internal/modules/cjs/loader:1005:19)
at require (node:internal/modules/cjs/helpers:102:18)
at Object.<anonymous> (C:\Users\carfun\Desktop\Bot Discord GLua\index.js:7:1)
at Module._compile (node:internal/modules/cjs/loader:1105:14)
[Finished in 809ms]
Quelqu'un a une idée ?
Tu as mis une parenthèse
Juste avant la ligne indiqué
et je ne dois pas en mettre ?
OsmoS tu peut m'aider en vite fait stp ?
Non c’est une accolade ouvrante
Dac
Tu peut m'aider stp ?
En vite fait mon reuf
Calme calme, c’est quoi ton pb ?
Je sais pas te le dire en tchat
Car tu va rien comprendre
tu peut passer
vocale
Bah il va bien falloir car je ne peux pas voc
Ah
Bon ok
En gros
J'ai un selector
et 2 Modals
et en gros forms c'est la 1er modals et broken c'est le 2eme
Je te le dis mtn , je ne suis pas dev discord JS
Ah merde
Quelqu'un sait pourquoi mon config.json ne peut pas être trouvé alors que c'est bien le bon chemin d'accès ?
Les gars j'ai un probl (encore)
const { Events } = require("../Validation/EventNames");
const { promisify } = require("util");
const { glob } = require("glob");
const PG = promisify(glob);
const Ascii = require("ascii-table");
module.exports = async (client) => {
const Table = new Ascii("Evennement Chargé");
(await PG(`${process.cwd()}/Events/*/*.js`)).map(async (file) => {
console.log("carfun1");
const event = require(file);
if(!Events.includes(event.name) || !event.name) {
const L = file.split("/");
await Table.addRow(`${event.name || "MANQUANT"}`, `Le nom de l'évènement est invalide ou manquant : ${L[6] + `/` + L[7]}`);
return;
}
if(event.once) {
client.once(event.name, (...args) => event.execute(...args, client));
} else {
client.on(event.name, (...args) => event.execute(...args, client));
};
await Table.addRow(event.name, "SUCCES")
});
console.log("TEST1");
console.log(Table.toString());
console.log("TEST2");
}
Il me sort un truc chelou
TEST1
.
||
|
'
TEST2
sans me print le carfun1
qui peut me dire comment je resou ce probleme
noice !!!
mais pas trop quand même
j'ai l'impression d'être maudit
enfaite je suivait mon tuto et il utilise un systhème de module comme pour faire des hook en lua
mais ça bug comme pas permis
de base, il s'appelait UltrArthy 2, il était sensé me servir à je sais plus quoi mais, comme je l'utilise plus, j'ai dis qu'il avait dit chocolatine et je l'ai renommé

et aussi je galère a l'éteindre
comment ça ?
dans la console tu CTRL C
comme si tu voulais copier qqchose
mais tu sélectionne rien
je vais regarder
il s'étteint 15ans après que j'ai appuie sur le bouton stop du sublime text
avant ouais mais la je suis passé sur visual
haa
j'ai juste l'habitude de mettre sublime
comme tu dit
d'ailleurs
voila il vien seulement de s'arrêter
ce que tu fais, c'est que tu le lance en "débogage", je connais plus trop bien la différence mais, perso, je préfère le lancer dans le terminal avec un node index.js
mais ducoup tu l'étein comment avec le terminal ?
il prend tjr 15ans a s'éteindre mais ça a l'air de marché
bizarre
ahhh
genre, quand tu dis qu'il prend 15 ans à s'arrêter , c'est genre, le bot est hors-ligne au bout de 15 ans ?
yep
mais tkt, c'est juste Discord, c'est comme ça
ah ok
dès que tu l'arrête, il répond plus
dac mais ducoup il bug a moitier
en fait, c'est comme quand tu arrête d'écrire sans avoir envoyé ton message
genre il prend du temps à répondre ?
en vrai, je suis trop fier, j'ai réussi à aider quelqu'un
non le code est bug
je t'envoie ça
const { Events } = require("../Validation/EventNames");
const { promisify } = require("util");
const { glob } = require("glob");
const PG = promisify(glob);
const Ascii = require("ascii-table");
module.exports = async (client) => {
const Table = new Ascii("Evennement Chargé");
(await PG(`${process.cwd()}/Events/*/*.js`)).map(async (file) => {
console.log("carfun1");
const event = require(file);
if(!Events.includes(event.name) || !event.name) {
const L = file.split("/");
await Table.addRow(`${event.name || "MANQUANT"}`, `Le nom de l'évènement est invalide ou manquant : ${L[6] + `/` + L[7]}`);
return;
}
if(event.once) {
client.once(event.name, (...args) => event.execute(...args, client));
} else {
client.on(event.name, (...args) => event.execute(...args, client));
};
await Table.addRow(event.name, "SUCCES")
});
console.log("TEST1");
console.log(Table.toString());
console.log("TEST2");
}
Il me sort un truc chelou
TEST1
.
||
|
'
TEST2
sans me print le carfun1
haa je sais
c'est les derniers console.log
par contre, je sais pas du tout ce qu'est le Table.toString()
ah, il y a écrit juste au dessus
j'ai jamais utilisé quelque chose qui s'appelle Table, désolé
et tu as raison, il manque ton console.log("carfun1");
enfaite j'ai l'impression que le await ne passe pas
je crois qu'ils demandent un peu d'argent
11 packages are looking for funding
run `npm fund` for details
found 0 vulnerabilities
PS C:\Users\arthu\Desktop\Bot UltrArthy> npm fund
Bot UltrArthy
├── https://github.com/sindresorhus/is?sponsor=1
│ └── @sindresorhus/is@4.6.0
├── https://github.com/sponsors/sindresorhus
│ └── pify@5.0.0, make-dir@3.1.0, p-map@4.0.0
├── https://github.com/sponsors/feross
│ └── buffer@5.7.1, base64-js@1.5.1, ieee754@1.2.1, safe-buffer@5.2.1
├── https://opencollective.com/ioredis
│ └── ioredis@5.2.1
└── https://github.com/sponsors/isaacs
└── rimraf@3.0.2, glob@7.2.3```
je crois avoir compris que c'est eux qui gardent les infos, pas nous
j'ai trouvé
c'est triste
c'est cool !
un probl de nodemodule
ah
je vois
bien joué
quelqu'un a quelque chose pour envoyer un message avec un embed mais ... dans le même message
🤔 j'ai essayé le .setContent mais il ne marche pas, c'est pas une fonction
Hey !! 
Pour éviter les spams, peut on faire en sorte de désactive un bouton pour le membre qui a interagi avec celui-ci mais qui reste actif pour ceux qui n'ont pas appuyé 
Nop
Enfin
Il pourra tjs cliquer
mais après dans le code de ton bot tu peux détecter si il a déjà cliquer
et ne pas faire ce que ca devrais faire si il a déjà cliquer
Oui voilà, faire en sorte que la personne peut appuyer une fois pour que ça envoi ce que ça devrait faire mais seulement une seule et unique fois
Yep tu peux save l'id du mec dans une table et du coup tu check si il est dans la table ou pas
const { MessageEmbed } = require('discord.js');
const welcome_phrases = [
":grill: <@{senderid}> dit : **Bienvenue !!!**",
":beer: <@{senderid}> dit : **Hey Salut !**"
]
module.exports = (client) => {
client.on('interactionCreate', async interaction => {
if(interaction.isButton()){
if(interaction.customId.startsWith("welcome:")){
const embed = new MessageEmbed()
.setColor('#3997C2')
.setDescription(welcome_phrases[Math.floor(Math.random() * welcome_phrases.length)].replace("{senderid}", interaction.member.id).replace("{joinerid}", interaction.customId.split(":")[1]));
await interaction.deferUpdate();
return await interaction.channel.send({ embeds: [embed] })
}
}
});
};
Je suis débutant, je t'avouerai que je ne serais pas ou placer ma table ni comment :/
Je suppose que c'est ou je créé mon bouton (logiquement)
Bonsoir, j'ai un soucis de script dans mon fichier HTML. Je souhaite envoyer une réponse de formulaire HTML sur discord via un webhook sous la forme d'un embed.
Voici le code, jusqu'ici tout fonctionne... Sauf que je souhaite également lui mettre un bouton en dessous et en ajoutant la partie de code permettant de le faire, plus rien ne fonctionne et mes réponses ne sont plus envoyés sur discord.
Bonjour, j'utilise du mysql que j'ai mis sur mon vps. J'ai mis un charset en utf8mb4 avec un collate de utf8mb4_unicode_ci
et quand je mets des émojis dans la case avis ça passe pas du coup j'ai testé avec plein de truc même utf32, ce qui est bizarre c'est que pour ma note j'ai mis des émojis étoiles et ça marche. Mais rien ne marche je sais pas si vous pouvez m'aider.
https://cdn.discordapp.com/attachments/445278244539990026/998283322880966656/unknown.png
https://cdn.discordapp.com/attachments/445278244539990026/998283323300384818/unknown.png
https://cdn.discordapp.com/attachments/445278244539990026/998283323728216134/unknown.png
Qui utilise electron.js
import { Message } from 'discord.js';
import BaseCommand from '../../utils/structures/BaseCommand';
import DiscordClient from '../../client/client';
import { getRepository, Repository } from 'typeorm';
import { GuildBanLog } from '../../typeorm/entities/GuildBanLog';
import { ModerationLog } from '../../typeorm/entities/ModerationLog';
export default class KickCommand extends BaseCommand {
constructor(
private readonly modLogRepository: Repository<ModerationLog> = getRepository(
ModerationLog
)
) {
super('kick', 'mod', []);
}
async run(client: DiscordClient, message: Message, args: Array<string>) {
console.log(args);
const [memberId, ...rest] = args;
const reason = rest.join(' ');
try {
const member = await message.guild?.members.fetch(memberId)!;
await member.kick(reason);
const guildKick = this.modLogRepository.create({
guildId: message.guildId!,
issuedBy: message.author.id,
issuedOn: new Date(),
type: 'kick',
reason,
memberId,
});
await this.modLogRepository.save(guildKick);
} catch (err) {
console.log(err);
}
}
}
[ '@daring night', 'test' ]
DiscordAPIError: Invalid Form Body
user_id: Value "@daring night" is not snowflake.
at RequestHandler.execute (E:\Developpement\Client\Tess\TessBotMain\node_modules\discord.js\src\rest\RequestHandler.js:350:13)
at processTicksAndRejections (node:internal/process/task_queues:96:5)
at async RequestHandler.push (E:\Developpement\Client\Tess\TessBotMain\node_modules\discord.js\src\rest\RequestHandler.js:51:14)
at async GuildMemberManager._fetchSingle (E:\Developpement\Client\Tess\TessBotMain\node_modules\discord.js\src\managers\GuildMemberManager.js:407:18) {
method: 'get',
path: '/guilds/745692823034265721/members/@daring night',
code: 50035,
httpStatus: 400,
requestData: { json: undefined, files: [] }
}
Bonsoir, j ai cette erreur lors du kick d'une personne sur mon bot si vous savez d'ou vient le probleme je prend car ca fait 20 minutes que je chercher et je ne trouve absoluement rien
Il ne faut pas que tu récupère la mention de l'utilisateur mais l'id de celui-ci.
bah c est ce que je fait nan ?
Nan là tu as récupérer la mention.
Tu as récup ça @daring night et faut que tu récupères ça 365931197525655563.
Aidez moi svp
C'est quoi le problème ?
En gros
J'ai besoin d'une explication
de comment faire
Pour ouvrir mes MODALS
Avec un sélecteur et j'y arrive pas
Tu pourrais m'aider ?
?
Ah ok
En gros c'est sa
Et je veut ouvrir chaque option
Avec un autre MODALS
Et j'arrive pas
Et le code du sélecteur c'est comme sa
Tu peut passer vocale pour que sa soit plus simple ?
Non déso
T'as un événement interactionCreate ?
comment on peux retarder une action ?
genre, dans le client.on 'ready', j'aimerais que ça enlève toutes les commandes puis que 2 secondes après, ça les remette
pour éviter les commandes en double et tout le tralala
tu mets ton code, puis le reste (2 secondes après) tu le mets dans un setTimeout()
client.on("ready", function() {
// ton code
setTimeout(() => {
// ton code 2 secondes après
}, 2000)
})
Nn
Bah non, tu fais un évènement client.on("interactionCreate"… et tu vérifies si le customId de l’interaction correspond à celui du bouton
Bonjour, j'utilise du mysql que j'ai mis sur mon vps. J'ai mis un charset en utf8mb4 avec un collate de utf8mb4_unicode_ci
et quand je mets des émojis dans la case avis ça passe pas du coup j'ai testé avec plein de truc même utf32, ce qui est bizarre c'est que pour ma note j'ai mis des émojis étoiles et ça marche. Mais rien ne marche je sais pas si vous pouvez m'aider.
https://cdn.discordapp.com/attachments/445278244539990026/998283322880966656/unknown.png
https://cdn.discordapp.com/attachments/445278244539990026/998283323300384818/unknown.png
https://cdn.discordapp.com/attachments/445278244539990026/998283323728216134/unknown.png
ah ok
Franchement j'y arrive pas dutout
Je comprend rien
Regarde comme sa ?
T'es au courant que ton select menu tu l'as appelé "forms" et non pas "formsCreate" ou "formsBroken" ?
npm WARN deprecated @discordjs/collection@0.4.0: no longer supported
npm WARN deprecated @discordjs/builders@0.11.0: no longer supported
npm WARN deprecated discord.js@13.6.0: no longer supported
C'est depuis la v14 ?
Je te conseil de tout update
Update chaque module ?
npm i collection
npm i builders
Etant donné que c'est un nouveau bot avec un template neuf, c'est good ?
Tu fais ça comment stp ?
Après, si tu viens de commencer, ne le fait pas de suite
Tu as le temps avant que la v13 soit useless
ok
ça marche ! merci à toi !
D'ailleurs plus besoin des builders depuis la v14
Oui, je le sais mais il est en v13 ^^'
et fait gaffe à la typo, c'est @discordjs/builders, pas @discord/builders
Autant pour moi, j'avais complétement oublié
:p
Sinon, y’a le bon vieux npm update @civic fractal
npm i ça revient à la même chose que npm update
Nan
npm i prends la version qui est dans le package.json
npm update = npm i MODULE@latest mais pour tous les modules
Oui, mais t'update quand même
Oui mais avec npm update, ça fait tout d’un coup
Ouaip
bonjour y'a t'il quelqu'un qui me donner un coup de main sur mon projet en voc
je galere sur un truc
T'aura + de réponse si tu montre ton problème à l'écrit
c'est un truc tout con
du coup
je peu like et dislike en meme temps
j'ai penser a un truc du genre
je sais pas quelle genre de condition je dois faire
Bah tu met un boolean en like et en dislike
Tu met true sur le like si t'a like et donc tu vérifie que le boolean like est true or false quand tu clique sur le unlike
j'ai 2 function 1 pour les like et 1 pour le dislike
mais je dois faire une verification dans la base de données
Euh pas besoin
Tu peux utiliser les ref https://markus.oberlehner.net/blog/usestate-and-usereducer-with-the-vue-3-composition-api/
je pense que j'ai pas reussi a comprendre
Hello quand j'execute une commande il me renvoie ça
mais je n'ai aucune erreur dans ma console
j'avais cru comprendre
je t'envoie mon code
Ping.js
const { Client, CommandInteraction } = require("discord.js");
module.exports = {
name: "ping",
description: "Donne le temps de réaction du bot",
Permission: "ADMINISTRATOR",
/**
*
* @param {CommandInteraction} interaction
* @param {Client} client
*/
execute(interaction, client) {
console.log("PING UTILISE")
//interaction.reply({content: `Pong ! J'ai \`${client.ws.ping} de ping \``})
}
}
Tu as mis des / donc forcément il n'y a pas de réponse
Commands.js :
const { Perms } = require("../Validation/permissions");
const { Client } = require("discord.js");
const { promisify } = require("util");
const { glob } = require("glob");
const Ascii = require("ascii-table");
const PG = promisify(glob);
/**
*
- @param {Client} client
*/
module.exports = async (client) => {
// Permet de vérifié que toute les commandes sont bien valide //
const Table = new Ascii("Commandes chargées");
CommandsArray = [];
(await PG(`${process.cwd()}/Commands/*/*.js`)).map(async (file) => {
const command = require(file);
if(!command.name)
return Table.addRow(file.split("/")[7], "⛔ - ERREUR", "Nom manquant.")
if(!command.contect && !command.description)
return Table.addRow(command.name, "⛔ - ERREUR", "Descripition manquante.")
if(command.permission) {
if(Perms.includes(command.permission))
command.defaultPermission = false;
else
return Table.addRow(command.name, "⛔ - ERREUR", "Permission invalide.")
}
client.commands.set(command.name, command);
CommandsArray.push(command);
await Table.addRow(command.name, "✅ - SUCCES")
});
console.log(Table.toString());
// Permet de vérifier les permision //
client.on("ready", async() => {
const MainGuild = await client.guilds.cache.get("985219375487385661"); // Id du serveur Glua Banque
MainGuild.commands.set(CommandsArray).then(async (command) => {
const Roles = (commandName) => {
const cmdPerms = CommandsArray.find((c) => c.name === commandName).permission;
if(!cmdPerms) return null;
return MainGuild.roles.cache.filter((r) => r.permissions.has(cmdPerms));
}
const fullPermissions = command.reduce((accumulator, r) => {
const roles = Roles(r.name);
if(!roles) return accumulator;
const permissions = roles.reduce((a, r) => {
return [...a, {id: r.id, type: "ROLE", permissions: true}]
}, []);
return [...accumulator, {id: r.id, permissions}];
}, []);
// await MainGuild.commands.permissions.set({ fullPermissions }); // Erreur ici
})
})
}
->
ducoup je dois mettre le / dans quoi ?
oui mais j'ai retirer la ligne ⬇️ pour voir si c'étaient ça qui fesais bug
interaction.reply({content: `Pong ! J'ai \`${client.ws.ping} de ping \``})
mais ducoup non
C'est bon ?
non
Tu as une erreur ?
non
ça ne répond toujours pas ?
tjr la même erreur
Tu as redémarrer le bot?
biensure
Le fichier est sauvegardé ?
tjr
Tu utilises Visual Studio Code ?
yep
Relance le
tjr pas
Tu peux me faire un screen ?
de ?
VSC
Va dans ton fichier index.js puis tu fais F5
Maintenant essaye ta commande
Tu n'a pas bien fais la slash commands
cad ?
Je n'ai pas compris
c'est a dIRE ,
Tu n'a pas utilisé l'intégration
l'intégration ?
Oui !
bas donc oui ducoup
ça marche ?
Salut help plz
TypeError: Cannot read properties of undefined (reading 'isSelectMenu')
une idée ?
const { SlashCommandBuilder } = require('@discordjs/builders');
const { CommandInteraction } = require('discord.js');
module.exports = {
data: new SlashCommandBuilder()
.setName('ping')
.setDescription('Envoi le nombre de ping du Bot'),
/**
*
* @param {CommandInteraction} interaction
*/
async execute(interaction) {
await interaction.reply('Pong');
const message = await interaction.fetchReply();
return interaction.editReply(`Le message à mis ${message.createdTimestamp - interaction.createdTimestamp} ms.\nTon ping est de : ${interaction.client.ws.ping} ms.`)
}
}
Vous avez une meilleur méthode plus simple pour écrire ce code ? Pour les module.exports ou celle-ci est bonne ?
Bonjour à tous et à toutes, je suis actuellement en train de suivre le cours de javascript sur openclassroom et je bloque sur un cours 'Définissez des méthodes d'instance et des propriétés' j'essai de faire l'exercice mais je bloque et même en regardant la solution je ne comprends pas tout
galère sans nom
@civic ruin @bitter belfry On devrais faire un Discord ensemble car je suis dans le même cas,
J’apprends le JS pour pouvoir faire mes propres BOT pour mes serveurs 🙂
je suis sur mon dernier projet bah je suis toujours autant a chier sur js
Haha ! Moi je comprend quelque trucs (je commence) mais dur dur
faire des fonction moi meme je galere
pareil je galère surtout sur la dernière parti écrivez du code propre et facile a maintenir
j'ai un ami qui m'aide mais il est brésilien donc il comprend pas trop le cours en français ^^ mais ok pour faire un discord mais je suis au brésil juqu'au 15 aout donc j'ai 5h de décallage
Pas de soucis ^^ je dors à 4h en ce moment avec la chaleur 😅
lol
Si tu le veux je te laisse créer un Discord 🤷🏻♂️ ou on pourra s’entraider puis s’entraîner
.
La ligne ?
Il faut un event interactionCreate
Tu ne peux pas mettre ça dans le même fichier
mais avant je le faisais 🥲
Je ne crois pas que ça puisse marcher
Pk ?
Si tu fais console.log(client), je suppose que t’as undefined nan ?
mais j'arrive juste pas à crée*
🥲
bah tous marche si je met pas le code qui fait chier
le select menu est ok mais il fait rien dcp
fait mettre l'interraction si tu veut qu'il fasse quelque choses
yep
Montre ton code
On ne peut pas mettre un événement dans une commande ?
bah si a chaque fois je le fait ça marche
y'a juste la je comprend pas pq ça marche pas
Autant pour moi alors, je pensais que non
trql
mais dcp ta pas une idée pour moi ? 🥲
Aucun désolé
const { MessageEmbed } = require('discord.js');
module.exports = {
name: 'guildMemberAdd',
once: false,
execute(client, member) {
const embedWelcome = new MessageEmbed()
.setColor('#1E90FF')
.setDescription("Une description ... ")
member.guild.channels.get('998527290482896936').send(embedWelcome);
},
};
Petite erreur mais je ne vois pas (c'est pour envoyer un embed lorsque qu'un membre arrive)
^
TypeError: member.guild.channels.get is not a function```
Il manque .cache
Nice ! Mtn quand une personne join j'ai ceci dans le terminal 😮
C'est normal !
En v13, on ne send plus les embeds comme tu l'a fais
Il faut faire ({ embeds: [EMBED_NAME] })
Mon sauveur ^^ merci beaucoup !
Bonsoir tout le monde ! Je suis face à un problème, en gros je suis en pleine création d'un système d'exploitation pour m'entrainer au BackEnd mais là je suis bloqué, en gros pour les fenêtres, en gros je voudrais que seulement le banner de la page qui s'ouvre puissent être drag&drop et que la page entière suive la banner, une idée de comment je pourrais faire ? C'est du JQuery
Quand j'indique Brave banner il n'y a qu'elle qui bouge
Et quand j'indique .brave en entier, je peux drag&drop toute la page :/
Seriez vous pourquoi sur mon embed pour mettre la date de join de la personne j'ai :
<t:165854244125..:d> au lieu de la date en format DD/MM/YY
context.fillText(member.displayName, canvas.width / 2.5, canvas.height / 1.8);
context.fillText(`<t:${parseInt(member.joinedTimestamp / 1000)}:d> `, canvas.width / 2.1, canvas.height / 1.5);
car je crois que la fonction fillText supporte pas la conversion
essaie avec momentjs pour voir mais pas sûr
Avec le module moment ?
oui
const date_arrivee = new Date(timestamp).toLocaleDateString('fr-FR', options)
Je ne peux pas encore essayer je ne suis pas sur le PC mais logiquement ça aussi ça devrais fonctionner 🤷🏻♂️ qu’en penses tu ?
Puis ${date_arrivee}
Dans le canvas
(fillText)
Je vois pas pourquoi on pourrait pas
client est undefined 🤷♂️
A votre connaissance, impossible de mettre une image animé dans un canvas? En format .apng
Pourquoi ce message s'affiche alors que avant non
context.font = '60px sans-serif'
context.fillStyle = '#000000';
let timestamp = new Date().getTime();
const dateArrivee = new Date(timestamp).toLocaleDateString('fr-FR', options)
context.fillText(member.displayName, canvas.width / 2.5, canvas.height / 1.8);
context.fillText(`${dateArrivee}`, canvas.width / 2.1, canvas.height / 1.5);
Hello j'aimerai mettre sur mon canvas, la date d'arrivé d'un member en fillText
Mais je ne sais pas si comme ça, ça pourrais fonctionner ...
Ils me disent que "timestamp" n'est pas défini correctement
ERROR :
^
ReferenceError: timestamp is not defined
( c'est pour un bot Discord )
Est-ce que tu l'as définis...?
Ouvre les yeux..
J'ai rien dis j'ai merdé..
J'ai mis timestamp au lieu de member.JoinedTimestamp
je te retourne la remarque
Je vais quand même pas te screen le code ou son timestamp est bien déclaré ? 🤣
Il faut lire l'erreur bonhomme :c
const dateHours = new Date(member.joinedTimestamp).toLocaleString('fr-FR', { timeZone: 'UTC' });```
Une idée pour mettre notre heure à nous ? ( UTC + 2 )
Tu le met où ? En-dessous de ta commande ?
Où tu veux
Dans ta commande
Tant que client est pas undefined, c’est pas grave
Ok ! Merci de l'info
Utilise un collector 😉
au hasard je dirai que ton objet qui est censé avoir la propriété FLAGS n'existe plus alors qu'avant si
Bonjour, je souhaiterais savoir si quelqu'un à déjà utiliser le paquet spotify-api.js , je travaille dessus mais je n'arrive pas à récuperer une donnée précise et je ne trouve rien sur Internet, donc je me retourne vers vous
J'essaye d'obtenir des infos grace a la fonction getTopTracks(), voici code : ```js
const getTopMusics = async () => {
// console.log(await spotify.client.user);
const res = await spotify.client.user.getTopTracks({
timeRange: "Medium",
limit: 5,
offset: 5,
});
console.log("top tracks", res);
return res;
};
// router getTopMusics
app.get("/top", async (req, res) =>
res.json({
data: await getTopMusics(),
})
);
et voici mon msg d'erreur
Ton erreur dit que user est undefined donc tu as du faire une erreur dans l'utilisation du module.
j'ai regarde dans les modules et on me propose ca
const user = new UserClient(client);
est ce que le pb vient de la
c'est plutot a moi de l'ajouter dans mon code ?
Si tu fais comme ça ça changera rien car il récupèrera toujours user dans client.
Mais par contre j'ai pas trouvé la fonction getTopTracks dans la doc du package.
Dans client tu as users essaye de rajouter le s.
Mais je vois pas la fonction c'est bizarre.
<ref *1> Client {
version: 'v1',
onRefresh: [Function: NOOP],
retryOnRateLimit: true,
cacheSettings: {},
auth: AuthManager {
token: 'xxxxxxxxxxxxxxxxxxxxxxxxx'
},
users: UserManager { client: [Circular *1] },
artists: ArtistManager { client: [Circular *1] },
browse: BrowseManager { client: [Circular *1] },
albums: AlbumManager { client: [Circular *1] },
episodes: EpisodeManager { client: [Circular *1] },
playlists: PlaylistManager { client: [Circular *1] },
shows: ShowManager { client: [Circular *1] },
tracks: TrackManager { client: [Circular *1] },
refreshMeta: {
clientID: '65c4d44d8069ccccccccccccccccccc8caed35f08',
clientSecret: 'b291dc5fb4xxxxxxxxxxxxxxxxxfa0827cb',
scope: 'ReadTopArtistsAndUsers'
},
token: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
}
alors j'ai fait un console.log de spotify.client et j'obtiens ceci
tu as users du coup comme je t'ai dit
mais après tu n'as pas le chemin de ta fonction donc ça te mettra que ce n'est pas une fonction.
et lorsque je fais un log de spotify.client.users j'ai ceci :
<ref *1> UserManager {
client: <ref *2> Client {
version: 'v1',
onRefresh: [Function: NOOP],
retryOnRateLimit: true,
cacheSettings: {},
auth: AuthManager {
token: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx'
},
users: [Circular *1],
artists: ArtistManager { client: [Circular *2] },
browse: BrowseManager { client: [Circular *2] },
albums: AlbumManager { client: [Circular *2] },
episodes: EpisodeManager { client: [Circular *2] },
playlists: PlaylistManager { client: [Circular *2] },
shows: ShowManager { client: [Circular *2] },
tracks: TrackManager { client: [Circular *2] },
refreshMeta: {
clientID: '65c4d44d8xxxxxxxxxxxxxxxxxxxx3a8caed35f08',
clientSecret: 'b291dxxxxxxxxxxxxxxxxxx24f0fa0827cb',
scope: 'ReadTopArtistsAndUsers'
},
token: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx'
}
}
yes
oki.
mais c bizarre car dans la doc du package il ya rien mais dans les modules on voit la fonction getTopTracks
je suis en train de faire un projet avec ce package qui fait appel a l'api de Spotify
et je souhaite reproduire un site de stats Spotify, donc je veux récuperer les datas pour afficher les artistes et les musiques que l'on ecoute le plus
concernant les autocompletion lorsque je tape spotify.client.user. on me propose getTopTracks mais pas lorsque je tape users
Je crois que je suis passé à côté du user.
Mais juste avec le user tu récupères les sons les mieux pour l'utilisateur.
c'est pas les sons les mieux pour le user, mais plus les sons que l'user a le plus ecouter
Oui enfin c'est les meilleurs pour lui quoi.
yes
Du coup c'est bizarre que user soit undefined il faut surement le définir dans client.
Salut, j'essaie de compter les voyelles avec includes mais doit y avoir un truc que je fais mal...
function compterVoyelle()
{
//init
let nbVoyelles=0;
// les voyelles sont :
const voyelles=["a", "e", "i", "o", "u", "y"];
// Entrée des données
const phrase = "ceci est ma phrase";
// On sépare les caratères dans un tableau
let lettres = phrase.split('');
console.log(lettres)
console.log("Nb de caracteres :"+phrase.length)
// Boucle Pour pour v
for (lettres=0; lettres<phrase.length; lettres++) {
if (voyelles.includes(lettres))
{
nbVoyelles++
console.log(nbVoyelles)
}
}
}```
Essaye de faire comme ça :
function compterVoyelle()
{
//init
let nbVoyelles=0;
// les voyelles sont :
const voyelles=["a", "e", "i", "o", "u", "y"];
// Entrée des données
const phrase = "ceci est ma phrase";
// On sépare les caratères dans un tableau
let lettres = phrase.split('');
console.log(lettres)
console.log("Nb de caracteres :"+phrase.length)
// Boucle Pour pour v
for (var i = 0; lettres<phrase.length; i++) {
if (voyelles.includes(lettres))
{
nbVoyelles++
console.log(nbVoyelles)
}
}
}
je vais essayer je te redis si j'ai des news
même résultat... merci quand même 😭
(au fait on fait comment pour envoyer le code en coloré comme tu l'as fait sur discord ?)
Hello, je cherche à savoir à quoi sert object!.key et quelle est la différence avec object.key, mais impossible de trouver un sujet à propos de ça sur Google de mon côté. Quelqu'un saurait m'aider ?
Edit: J'ai trouvé (https://stackoverflow.com/questions/38874928/operator-in-typescript-after-object-method)
super merci bcp
tu gères
Pas de souci
Tu peux mettre n’importe quel language à la place du js ^^
@copper pagoda Excuse moi de te déranger encore une fois mais vu que user est undefined, tu mettrais quoi dans cette var pour que ca fonctionne ?
En soit ce que tu avais dit const user = new UserClient(client); ça peut être une solution mais je vois pas franchement comment l'utilisateur est défini pour moi c'est bizarre. Je regarde la doc voir.
je suis en train de regarder avec mon formateur, mais il galere pas mal aussi
Change de formateur

Bonjour à tous ! J'aimerais que le contenu de mon input aille dans de 'data' de mon object, une idée ? ^^
@torn fogJte jure ca fait 6 jours que je suis dessus, j'ai jamais autant galerer, et lui qui possede bcp plus de connaissances que moi en à marre au bout d'une heure

Salut, j'aurai besoin d'aide vite fait en discord.js v14 je fais un discord-html-transcript pour les tickets et j'ai un problème j'ai utilisé AttachmentBuilder mais le problème c'est qu'il me sort un image au lieu d'un fichier html, j'ai du louper quelques choses dans le paramètres de l'Attachment.
Réglé j'avais juste à mettre
return new userDiscord.AttachmentBuilder(Buffer.from(serialized), {name: opts.fileName ?? 'transcript.html'});
Bonjour,
Vous savez comment ajouter une font personnalisé sur un canvas ?
Il faut mettre des antislashs si tu veux afficher les backquotes (```js)
Ouais mais flemme plus facile de screen 
Je sais qu'il y a des problèmes avec cette fonctionnalité de canvas et je pense le mieux c'est soit de l'inclure à l'image directement ou sinon de changer de font.
Si c'est good !
Avec :
const { registerFont } = require('canvas');
registerFont('./CercoDEMO-Regular.otf', { family: 'Cerco DEMO' })
Carré alors.
Si quelqu'un a déjà utiliser timeZone
Pouvez vous me dire comment mettre à l'heure de chez nous ?
UTC + 2 ou UTC+2 ne sont pas valide :/
const dateHours = new Date(member.joinedTimestamp).toLocaleString('fr-FR', { timeZone: 'UTC' });
tu as essayé GMT+2 ?
Oui, idem :/
Test ça voir ? 'Europe/Paris'.
Perso moi ça m'a retourné ça : "20/07/2022, 21:18:21"
Ah bah parfait oui c'était ça ^^ je me battais avec des UTC+02:00 etc... pour rien ^^
Merci beaucoup !
De rien.
yo !!
j'ai une grosse chaine de caractère avec des "{color : #FFFF00}" dedans. comment j'peux les enlever ?
y'as aussi des "{date:1658102400,D,L}" mais dans ce cas là j'veux pas le supprimer mais le remplacer, possible aussi?
Pour remplacer tu peux utiliser la fonction replace.
Invite Trackers [Message de Bienvenue]
à priori en suivant strictement la doc ça doit ressembler à ça :
const Spotify = require('spotify-api.js')
const client = new Spotify.Client({ token: 'token' })
const fetchTopTracks = async () => {
const tracks = client.user.getTopTracks({
limit: 5,
offset: 5,
timeRange: 'medium_term',
})
console.log('top tracks: ', tracks)
return tracks
}
après tu utilise fetchTopTracks() avec await... ce que tu sembles avoir fait.
Essaie de repartir de ce que j'ai écrit au-dessus, ptet que tu as mal écrit un truc (pour ma part j'ai copié collé les propriétés et les fonctions pour être sûr)
Planning automatisé
Yop, je me suis mis au Typescript aujourd'hui (grand adepte du Javascript mais j'essaye de changer pour la bonne cause), j'ai pas spécialement de mal avec le principe des types mais j'ai une question.
Avant, pour du discord.js, je pouvais par exemple assigner mon objet configuration à mon client pour pouvoir l'utiliser plus tard sans pour autant devoir le require à chaque fois.
Donc, je faisais simplement dans mon fichier index : client.config = require("./config.json"), pas de souci.
Maintenant en Typescript, je ne peux pas le faire car le champ "config" n'existe pas sur la classe client. Je me rend compte que c'est mon premier obstacle en TS et je ne sais pas comment le résoudre.
Suis-je obligé de créer une nouvelle classe qui Extend celle du client pour juste rajouter un champ, où il y a un autre moyen ? Merci.
Bonjour, j'ai un petit soucis assez dérangeant,
J'ai fais en sorte de séparer la date d'arrivé du membre sur un serveur en Jour, Mois, Année en format DD/MM/YYYY (pour un projet)
Seul soucis c'est qu'au lieu de 07 pour le mois de Juillet (logique) j'ai juste 7 ce qui donne 21/7/2022
Comment faire en sorte d'avoir obligatoirement les deux chiffres dans le mois pour bien avoir 07.
Merci à vous 🙂
let options = { day: 'numeric' };
const dateArriveeDay = new Date(member.joinedTimestamp).toLocaleDateString('fr-FR', options)
// Remplit réellement le texte avec la couleur choisi sur le nom du membre (member.displayName)
context.fillText(dateArriveeDay, 1304.6453, 434.6543);
options = { month: 'numeric' };
const dateArriveeMonth = new Date(member.joinedTimestamp).toLocaleDateString('fr-FR', options)
context.fillText(dateArriveeMonth, 1460.0453, 434.6543);
options = { year: 'numeric' };
const dateArriveeYear = new Date(member.joinedTimestamp).toLocaleDateString('fr-FR', options)
context.fillText(dateArriveeYear, 1609.0706, 434.6543);
Ce que tu peux faire c'est
const day = new Date(member.joinedTimestamp).toLocaleDateString('fr-FR', options);
const dateArriveeDay = day < 10 ? `0${date}` : day;
Avec ça ça devrai être bon.
Du coup je fais ça avec le mois ? étant donné que c'est le mois qui pose problème ?
ça sera juste plus un int mais un string après tu peux le convertir.
7 au lieu de 07
Euh oui je me suis trompé j'ai pris le jour.
Par contre il me semble que ça fait pareil pour les jours.
Ouais.
Le ? veux dire alors ? dans le code ?
En gros c'est comme si tu fais si day est inférieur à 10 alors dateArriveeDay est égal à 0${day} et sinon c'est égal à ${day}.
Ah d'accord! super intéressant à savoir ça !
Merci beaucoup
De rien.
Et si tu veux pas de sinon tu peux mettre de ??, si ça respecte pas la condition ça retournera false automatiquement.
Et juste tu sais si c'est possible d'avoir le nombre avec la couleur défini avec fillStyle (donc blanc) mais mettre le membres en une autre couleur par exemple.
Il existe ce style de conditions sur un fillTexte ?
context.fillStyle = '#ffffff';
context.fillText(`${member.guild.memberCount} membres`, 1326.7573, 931.0225);
Je pense que si tu en mets un pour le nombre et un autre pour le membre ça devrait être bon.
D'accord exemple :
const dateArriveeDay = day < 10 ?? `0${date}```
Sans le :
Si c'est supérieur ou égal à 10 ça retournera false.
Pour séparer les couleurs on a le droit de faire ça :
member.guild.memberCount = context.fillStyle('#ffffff');
Je pense pas que ça marche.
Ah non :/
Je cherche comment je pourrais les séparer en couleur
je voulais les separer en 2 variable puis faire :
context.fillText(`${member.guild.memberCount} + ${TextMembres}`, 1326.7573, 931.0225);```
Enfin moi je pense que c'est suffisant juste de mettre la couleur juste avant que tu définisses la date et tu refais pareil mais avec l'autre couleur pour le membre.
Ce qui a c'est qu'il garde en mémoire le dernier fillStyle que tu rentre :/ donc les couleurs du dessus il prend pas en compte
Je sais pas si tu vois ce que je veux dire
Oki j'essaye de regarder voir.
J'essaye de trouver des choses aussi de mon côté oui
J'ai trouvé un truc du coup un gars fait un for i et ce sert d'un array avec la couleur et l'autre avec le texte et si i == 0 alors il prend la première couleur pour le premier texte et enfin si i == 1 alors il prend la deuxième.
WOW ! j'ai jamais fais encore les array et les for i
Je débute juste ^^ pour ça que je m'exerce a faire des messages de bienvenue etc.. pour que ça m'apprenne petit à petit tu sais
Mais si jamais tu peux montrer l'exemple pour voir comment ça marche je ne dis pas non
Enfin c'est bizarre car je viens d'essayer sur mon code pour changer la couleur et j'ai réussi
ctx.font = `50px Impact`;
ctx.fillStyle = `#1d1d1d`;
ctx.fillText(member.user.username.length > 19 ? `${member.user.username.substring(0, 16)}...` : member.user.username, 250, 250/2 + 25);
ctx.fillStyle = "#000";
ctx.fillText("Test", 250, 250/2 + 25)
Voilà mon code.
Oui voila mais par exemple la ça serais de changer par exemple Pepito en noir et le chien ... en blanc par exemple sur une même ligne
Ah sur une même ligne.
Oui voila ^^
Faudrait que tu fasses 2 fillText différent.
Car je t'explique quand tu regardes cette ligne :
context.fillText(`${member.guild.memberCount} membres`, 1326.7573, 931.0225);```
Je veux mettre le nombre de membre sur mon discord et à côté du mot **membres** car si je fais 2 fillText différents alors si jamais le serveur Discord à 400 membres ça pourrais faire ça :
Ouais je vois.
Tu sais c'était pour éviter d'avoir ce probleme, faire en sortes qu'il y ai toujours un espace entre les 2 oui
Faudrait soit faire en sorte que ça ne se touche jamais ou sinon tu fais en fonction si c'est supérieur à 100 et inférieur à 1000 que le nombre se recule de X pixel.
Ah le fait que ça recule en pixel serais pas mal oui !
genre que ça bouge en X quoi mais pas en Y
Ouais tu aurais juste à faire ça dans une variable.
avec le fameux if du coup ?
Oui.
vous avez des conseils ou des liens/astuces pour apprendre le javascript ?
Tu convertis ton nombre en chaîne de caractères puis tu mesures la longueur de ta chaîne de caractères pour en faire un espace en fonction de la taille de ton nombre
@timid loom Je vais essayer ca, merci d'avoir check et d'avoir pris le temps, je reviens vous voir si j'ai besoin d'aide, je vais reessayer de refaire mon architecture et je vais reprendre ton code
Après avec Spotify de mémoire toute la difficulté c'est avoir un user, il faut avoir validé un truc oauth et tt donc c'est ptêt ça aussi
bah le probleme provient du manque de user dans client, donc je pense que je dois avoir aussi la gestion du oauth
Ah mais si tu l'as pas fait c'est 100% ça hein
Il faut que tu mette les bons scopes et que tu suive les exemples de la doc de l'api Spotify (je crois pas que la lib explique comme avoir un user)
mais j'utilise pas l'api Spotify, c'est le package qui le fait
Oui mais même
Je crois qu'il faut un token ou un code je sais plus et c'est un truc que t'obtiens seulement en ayant un user qui s'est connecté et a autorisé l'appli
Sinon t'as pas toutes les autorisations
ouais tu obtiens le token grace a un id et un id_secret, mais je pense qu'il me manque l'autorisation generale
pourtant j'ai reussi a obtenir des infos sur moi(grace a mon id spotify)
Salut, petite question le script du bot @ancient sonnet et public ou privé ?
Ouais mais t'as pas fait de connexion oauth d'après ce que tu me dis
Privé
ok 😉
bah c'est que je me suis que je n'en avait pas forcement besoin des mtn
mais au final je pense reprendre de zero (presque) au bout d'une semaine de taff et de galere, pour bien gerer la gestion du oauth et puis je verrais bien ce que ca donne
Sisi pour obtenir des infos comme ça t'es obligé
C'est pareil pour obtenir plein d'autres infos
bah j'avais essaye aussi d'obtenir la musique que j'ecoute en ce moment et ca ne marchait pas et je pense que c du au scope et a l'oauth
Yep totalement
https://developer.spotify.com/documentation/web-api/reference/#/operations/get-users-top-artists-and-tracks
Tu vois là ils mettent un cadenas oauth pour dire que c'est restrict
bah j'avais fait ca au debut et ct pas ouf donc j'ai repris ma base et au final je pense que ct pas si mal que ca 😢
Ils expliquent pourquoi ici : https://developer.spotify.com/documentation/general/guides/authorization/
Ouais je sais et j'avais pris l'Authorization Code Flow
OK bah écoute le te laisse continuer de chercher alors, bonne chance
Et bah merci bien
Je vais tenter de reussir cette fois ci et je partagerai les problemes et les solutions
Mettre member.guild.memberCount en ``
-> ```js
${member.guild.memberCount}
Ça converti le nombre directement en chaîne de caractères non ?
oui
ou sinon tu peux faire member.guild.memberCount.toString()
et pour obtenir le nombre de caractère tu fais soit `${member.guild.memberCount}`.length ou member.guild.memberCount.toString().length
En mettant .length j'obtiens 1
et tu obtiens combien si tu console.log member.guild.memberCount ?
1 oui logique car nous sommes 4 membres donc 1 seul caractère
oui voilà
donc tu as juste à utiliser le nombre de caractère pour multiplier par l'espace d'un caractère dans ton canvas
Alors je ne sais pas si j'ai le droit d'écrire ceci comme ça :
options = { month: 'numeric' };
const month = new Date(member.joinedTimestamp).toLocaleDateString('fr-FR', options);
const dateArriveeMonth = month < 10 ? `0${month}` : month;
context.fillText(dateArriveeMonth, 1460.0453, 434.6543);
options = { year: 'numeric' };
const dateArriveeYear = new Date(member.joinedTimestamp).toLocaleDateString('fr-FR', options)
context.fillText(dateArriveeYear, 1609.0706, 434.6543);
if (member.guild.memberCount > 10) {
context.fillText(`${member.guild.memberCount}`, 1326.7573, 931.0225);
} else if (member.guild.memberCount > 100 ) {
context.fillText(`${member.guild.memberCount}`, 1323.6525, 931.0225);
}
Ah j'aurai pas fait comme ça perso.
euh ça correspond à quoi le premier argument de context.fillText ?
Un mettre un texte incrusté à ton canvas
alors c'est pas le nombre de caractère que tu dois mettre là
le nombre de caractère tu dois l'utiliser pour positionner ton texte
tu dois utiliser ce nombre 1326.7573
Ce que j'aurai fait c'est comme ça :
const count = member.guild.memberCount
let x = count < 10 ? 1326.7573 : count < 100 ? 1326.7573 : count < 1000 ? 1323.6525 : 1323.5525;
// En gros ici si count est inférieur à 10 alors x = 1326.7573 sinon si count < 100 alors x = 1326.7573 sinon si count est inférieur à 1000 alors x = 1323.6525 sinon 1323.5525
en gros d'après la soustraction de tes deux conditions un caractère correspond à 3.1048
s'il y a 3 chiffres dans le nombre de membre ça ne fonctionnera plus
Je sais il suffit de l'adapter après.
C'est juste rajouter count < 1000.
context.fillText(`${member.guild.memberCount}`, 1326.7573 - (`${member.guild.memberCount}`.length * 3.1048), 931.0225);
Si on fait ça le texte va avancer il faut mettre une valeur négative pour soustraire à la valeur d'avant donc mettre -.
oui ça fait un moment que j'ai pas bossé avec les canvas
Ok.
Résultat final :
const count = member.guild.memberCount
let x = count < 10 ? 1326.7573 : count < 100 ? 1326.7573 : count < 1000 ? 1323.6525 : 1323.5525;
context.fillText(`${count}`, x, 931.0225);
tu n'as pas besoin de tes conditions sur count
Ouais c'est vrai la méthode de Eno et plus efficace en soit.
c'est justement pour ça qu'il fallait récupérer le nombre de caractère
au moins peu importe le nombre de membres ça fonctionnera
En fait l'espace c'est entre le texte et la limite droit du canvas ?
ah ça je sais pas, par rapport à ton code avec les conditions c'est ça oui
vu qu'en fonction du nombre de membre c'est cette valeur que tu changes
comment tu as eu 3.1048 justement ?
1326.7573 - 1323.6525
Ouais c'est par rapport au valeur que tu avais donné avant.
oui voilà
ah oui puisque l'espace entre les chiffres resteront les mêmes
Après le truc qui se pose c'est que si c'est le nombre de membre est inférieur à 10 ça va reculer de 3.1048.
ok je vois c'est bon d'accord 🙂
Vous savez ce qui peut bloquer ?
const newInvites = await member.guild.fetchInvites()
const oldInvites = invites.get(member.guild.id) ;
const invite = newInvites.find(i => i.uses > oldInvites.get(i.code)) ;
const inviter = await client.users.fetch(invite.inviter.id) ;
context.fillText(`${invite.inviter}`, canvas.width / 3.8, canvas.height / 1.3);
const newInvites = await member.guild.fetchInvites()
^
TypeError: member.guild.fetchInvites is not a function
apparemment fetchInvites n'existe pas sur guild
ça dépend peut-être de quelle version de discord.js tu utilises
j'ai mis invites.fetch() qui elle est en v13
Pour récupérer la personne qui a invité le membre il faut obligatoirement passer par le module fs pour récupérer les infos dans les fichiers à pars ?
car je sépare mes events dans les dossiers
./events/guild_invites/inviteCreate.js
./events/guild_invites/inviteDelete.js
./events/guild_members/guildMemberAdd.js
actuellement oui tu dois enregistrer toutes les invitations dans une base de données et à chaque fois qu'un membre rejoint il faut regarder quelle invitation a une utilisation de plus par rapport à ce que tu as enregistré
Discord avait parlé d'un moyen de récupérer l'inviteur d'un membre quand quelqu'un rejoint mais je sais pas si ça a été mit en place
^
TypeError: Cannot read properties of undefined (reading 'get')```
Tu es en quelle version de discord.js ?
v13
Fait voir ton code.
const { Client, Intents } = require('discord.js');
client = new Client({ intents: [Intents.FLAGS.GUILDS] });
client.on('ready', () => {
console.log(Logged in as ${client.user.tag}!);
});
client.on('interactionCreate', async interaction => {
if (!interaction.isCommand()) return;
if (interaction.commandName === 'ping') {
await interaction.reply('Pong!');
}
});
client.login('il a mon token');
t'es vraiment sur que c'est la V13 là ? car c'est sensé marcher.
a non
Tu es en quelle version du coup ?
En V14 oki.
Tu dois mettre GatewayIntentBits à la place de Intents et ensuite pour remplacer GUILDS tu mets Guilds
Du coup il est préférable que sur la doc de discord.js tu regardes pour la V14 après si tu veux repasser en V13. tu peux remplacer dans package.json ^14.0.3 par ^13.9.0 et ensuite tu fais npm i.
Ah non pas celui -ci l'autre devant FLAGS
Comme ça :
intents: [
GatewayIntentBits.Guilds
]
Tu as fait npm i ?
oui
Oki du coup faut faire npm i dans ta console.
merci
merci a toi aussi
Bonjour
Toujours valable en V13.9.0 ceci : https://github.com/AnIdiotsGuide/discordjs-bot-guide/blob/master/coding-guides/tracking-used-invites.md
ça à l'air ouais.
Bah mince car j'ai tout bien suivi mais j'ai ce message quand un joueur joint :
^
TypeError: Cannot read properties of undefined (reading 'get')```
Ah ouais mais lui doit avoir tous mis dans index.js
Tu as créé la collection dans ton index.js ?
Car invites représente la collection donc le mieux et c'est ce que je fais perso c'est quand je crée une collection je fais
bot.invites = new Collection();
Et comme j'exporte la valeur bot j'ai juste à récup dans mon fichier en mettant bot.invites.
Ceci je l'ai mis dans index.js :
const invites = new Collection();
client.guilds.cache.forEach(async (guild) => {
const firstInvites = await guild.invites.fetch();
invites.set(guild.id, new Collection(firstInvites.map((invite) => [invite.code, invite.uses])));
});
});
Le reste j'ai mis dans mes dossiers d'events avec module.exports
exemple ça dans events/inviteCreate.js :
module.exports = {
name: 'inviteCreate',
once: false,
exute(client, invite) => {
invites.get(invite.guild.id).set(invite.code, invite.uses);
};
Faut que tu définisses ton invites en faites donc dans ton index.js tu peux faire module.export.invites = invites;
Et après tu peux le require grâce à l'index.
J'sais pas si tu comprends en gros dans tes fichiers events tu fais const invites = require("chemin de ton index.js');
bonjour ! je débute en javascript
visual studio code ne reconnaît pas le constructeur MessageActionRow()
savez-vous ce que je dois faire please ?
oui je suis en V14
const {MessageActionRow, Client} = require("discord.js")
et remplace Discord.Client par Client
je croyais que y'avait pas de dev sur umaestro ptdr
mais merci
ptdr on t'as dis que si
Faut mettre Intents aussi. Et si c'est en V14 MessageActionRow et pas conforme.
c chiant tous les tutos sont en v13 mdr
y'a très peu de modifs
Elle est sortit y a moins d'une semaine c'est normal après tu peux t'aider de la doc discord.js ou de discord.js guide.
ok merci beaucoup !
Ok je reconstruit tout ça là mtn
Je te tiens au courant
Oki ça marche.
non @naive ivy
c'est ButtonBuilder
et ActionRowBuilder
pense à vérifier sur la doc
elle sert à ça
ok merci beaucoup
En gros voilà j'ai bien fais le module.exports.invites = invites; dans l'index
Et exemple pour l'event inviteCreate :
invites = require('../../index.js');
module.exports = {
name: 'inviteCreate',
once: false,
execute(client, invite) {
// Update cache on new invites
invites.get(invite.guild.id).set(invite.code, invite.uses);
}
}
Je fais les autres 🙂
je pige pas
comment je l'ajoute ?
npm i node:events
Tu as quelle version de node.js ?
fais node -v dans le terminal
merci mdrr
v14.17.6
Ah oui oula faut que change la version là.
ptdr je vais pas aller loin avec ça
C'était bien avec la V12 mais avec la V14 c'est plus trop utile.

j'installe la dernière V là
tu utilises canvas ?
pcque jcrois avoir vu ton code avec canvas
sauf que canvas marche pas avec la dernière
oui avant

mdr c bon à savoir ça
la lts suffit
