#javascript-typescript

1 messages · Page 43 of 1

ancient sonnetBOT
#
Citation de StraX#6242 posté dans #aide-bots

Cliquez sur 📄 pour accéder au message.

mais là c'est pareil, je reste coincé à l'endroit où je join la tâche, je n'arrive pas à add le joueur dans le tableau users de la table de la tâche...

keen narwhal
#

si tu veux voir ce que j'ai fais mais bon 😒

rough tide
#

Comment on donne le membre de bots dans un serveur ?

slim anvil
#

le nombre de bot ?

#

De tête comme ça tu dois sûrement regarder tous les users et regarder ceux ou bot = true

#

un .filter sur le members qui va te retourner un tableau tu auras juste à faire un .length dessus

#

Sauf si il existe une method direct sur discord JS mais ça no se

rough tide
#

bah

#

j'ai fait ça :

#
let bots = guilda.members.filter(m => m.bot).size

guilda qui est la variable de mon serveur

#

sauf que ça m'affiche toujours 0

#

à

keen narwhal
#

member.user.bot.size ??

#

@rough tide

rough tide
#

comment ça ?

keen narwhal
#

Bah tu veux récupérer le nombre de bots ?

rough tide
#

iui

keen narwhal
#
member.user.bot.size```
#

Il me semble

rough tide
#

guilda.members.user.bot.size ?

keen narwhal
#

Oui aussi

#

Si tu l'adapte pour ta guild

#

Donc pour toi

let bots = guilda.members.filter(m => m.users.bot).size```
#

@rough tide

rough tide
#

bah

#

ça marche pas ptdrrr

#

ahh users

#

oui je test

#

merci !

keen narwhal
ancient sonnetBOT
#
Citation de StraX#6242 posté dans #aide-bots

Cliquez sur 📄 pour accéder au message.

mais là c'est pareil, je reste coincé à l'endroit où je join la tâche, je n'arrive pas à add le joueur dans le tableau users de la table de la tâche...

timid loom
#

pourquoi il fait pas un tableau ?

keen narwhal
#

pas faux, ouais, je vais voir avec lui

timid loom
#

Attends je comprends pas un truc : c'est quoi ton count, c'est quoi ton user

#

?

errant rampart
#

Sinon invite le sur gca, ce sera plus simple pour comprendre son besoin 🙂

keen narwhal
#

le count c'est le compteur d'utilisateur qui ont rejoint la tache, et user ça devrait être le tableau qui stocke les utilisateurs qui ont rejoint la tache

timid loom
#

bah

keen narwhal
#

c moi 👋

timid loom
#

tu fais simplement un truc du genre json "users": ["data du premier user", "data du second user"]

keen narwhal
#

oé mais il peut avoir 3 4 5 user

#

juska 20 par example

timid loom
#

et après tu pourras prendre faire un users.length pour récupérer le nombre... ?

#

ah

#

il faut une limite ?

keen narwhal
#

oé 20

timid loom
#

ok

#

bah tu fais un objet

keen narwhal
#

ummmmh quesse donc ?

timid loom
#
{
  "count": 20,
  "users": ["data du premier user", "data du second user", "etc..."]
}```
#

par exemple

keen narwhal
#

je vois

#

je vais essayer je reviens vous dire si sa marche

timid loom
#

tu te compliques la vie avec cette histoire de user1 user2; c'est impossible à maintenir si un jour tu veux changer le nombre max d'utilisateurs par exemple

#

et à parser dans tous les cas c'est plus chiant qu'un bête tableau

spiral cave
#

Salut , les gars , Voila , je vous explique , je "suit" (je sais pas si sa s'ecrit comme ça du verbe 'Suivre') un tutoriel sous forme de vidéo , et un moment il fait une commande le !google qui permet quand tu la fait : !google salut ; sa recherche salut dans google et sa nous envoie le lien : Code -


// index.js //

const Discord = require('discord.js')
const bot = new Discord.Client()
const Google = require('./commands/google')
const play = require('./commands/play')

bot.on('ready' , function () {
   // bot.user.setAvatar('./avatar.png').catch(console.error)
   // bot.user.setGame('Préparation du bot').catch(console.error)
})

bot.on('guildMemberAdd', function(member){
    member.createDM().then(function (channel) {
        return channel.send('Bienvenue sur mon serveur' . member.displayName)
    }).catch(console.error)
})

bot.on('message', function (message) {
   let commandUsed = 
   Google.parse(message)
    
})```

```NodeJS

// google.js

const command = require('./command')

module.export = class Google extends command{ 

    static match (message) {
        return message.content.startsWith('!google')
    }

     static action (message) {
        
        let args = message.content.split(' ')
        args.shift()
        message.reply('https://www.google.fr/#q=' + args.join('%20'))
    }

}```

Merci d'avance , Et je ne sais pas pourquoi les couleurs du NodeJS ne fonctionne pas 😦
west plover
#

C’est quoi ton problème du coup? Que la commande marche pas? 🤔

keen narwhal
#

quelqu'un saurait ducoup pour stocker plusieurs id dans un json ? (autre que par tableau)

west plover
#

plusieurs id sans rien d’autres? une array tout simplement🤷‍♀️

#

sinon tu fais un object indexé numériquement mais bon, une array est fait pour ça

keen narwhal
#

ouais mais array, il ne connait pas trop... donc je vais lui dire, mais bon

spiral cave
#

Shitt , j'ai oublié l'essentiel en gros sa me dit que Google.match n'est pas une fonction (index.js)

#

hors que je la définis dans google.js

keen narwhal
#

Bonjour, je voudrais faire un fichier qui s'appelle compteSpotify et que dedans il y a des compte spotify et que ça envoie un compte aléatoirement en faisait une commande.

#

Tu pense vraiment recevoir de l'aide ?

west plover
#

regarde s’il y a une api spotify thinkingplayer

keen narwhal
#

Non mais mdrrrrr

slim anvil
#

Il y a une api mais l’api ne te renvoie pas de compte aléatoire c’est quoi cette demande

#

Tu veux pas créer une commande pour recevoir des CB aussi

keen narwhal
#

Mdr il veux créé un bot de générateur de comptes

#

Ses pas pour moi je préviens , mais la personnes me demande si on peux faire en sorte qu'il ramasse des comptes dans un fichier

#

Oui on peux mais compte pas sur nous pour t'aider

#

Je comprend ;)
Je me fait payé pour ça dans je suis obligé.

spring dock
#

ah chaud

keen narwhal
#

@keen narwhal je dis pas non pour le faire contre une rémunération

#

Heheee

#

xD

#

La rémunération c'est un bon moyen de préssion xD

slim anvil
#

Et vous les récupérez ou les comptes ?

keen narwhal
#

Umhhhhh

slim anvil
#

^^

keen narwhal
#

@slim anvil Je ne sais pas comment heu arrive a les avoir , mes personnelement je connais 2 application pour ça

slim anvil
#

Pour récupérer des comptes Spotify au hasard ? Avec mot de passe et tout ? Ou juste récupérer le profil de gens etc

keen narwhal
#

L'email + mot de passe du compte

slim anvil
#

Curieux de voir ça

#

Après si c’est des comptes pirates ils auront plus le premium ça n’a aucun intérêt et au mieux c’est récent donc il te restera quelque temps devant toi avant que l’abo expire

keen narwhal
#

Sa dépend

#

défois le compte se fait prendre en qu'elle que jour ou mois sa dépend , il y a que NordVPN qui marche bien
Mais continuons cette discution en mp ou #general

slim anvil
#

Hein c’est quoi le rapport avec NordVPN

keen narwhal
#

Car tu me disais que les comptes spotify se faisait reprend du coup j'ai dit que NordVPN se faisait pas reprendre

slim anvil
#

À quel moment j’ai dis que les comptes se faisait reprendre ? Je parlais du fait que d’avoir un compte piraté sur ce genre de service ne sert quasi à rien car l’abonnement sera soit expiré soit bientôt, je vois pas le rapport avec NordVPN allô

keen narwhal
#

Ah ok , j'avais mal compris xD

queen nebula
#

Bonjour, j'ai un problème je n'arrive pas à faire que si la personne n'a pas la permission en **role-id ** qu'il ne puisse pas supprimé les messages mais l'inverse oui :

    message.delete();
    if(!message.guild.roles.get('672422524964962334')) {
         message.channel.send("🤖 Vous n'avez pas la permission de supprimer des messages ! 🤖"); 
    }

    if(message.guild.roles.get('672422524964962334')) {
        if(!args[0]) return message.channel.send("🤖 Tu ne m'as pas dit combien de message je devais supprimer 🤖");
        message.channel.bulkDelete(args[0]).then(() => {
            message.channel.send(`🤖 Je t'ai supprimer ${args[0]} messages ! 🤖`);
            console.log(`🤖 J'ai supprimer ${args[0]} messages chez "${message.guild.name}" 🤖`);
            message.delete(args)
  
        var channel = message.guild.channels.find("name", "discordlog");
        let pEmbed = new Discord.RichEmbed()
            .setTitle('🤖 Suppression de message 🤖')
            .addField('Message supprimer', message.author + ' a supprimer ' + args + ' messages')
            .addField('Channel', message.channel)
            .setFooter("🤖 Merci d'avoir nettoyez ce channel 🤖")
            .setThumbnail(`${client.user.avatarURL}`)
            .setTimestamp()
            .setColor(0x228B22)
        channel.send({
            embed: pEmbed
        })
        var channel = message.channel
    })}; 
#

Si quelqu'un peut m'aidé svp merci

west plover
#

mets un return dans la condition du role

queen nebula
#

Même j'ai déjà test 😐

#

@west plover Que je me mette la perm ou non je peux quand même clear

west plover
#

Screen ton code, sur tel ça rend mal le markdown Discord 🤔

queen nebula
#
const Discord = require('discord.js');

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

    message.delete();
    if(!message.guild.roles.get('672422524964962334')) {
         message.channel.send("🤖 Vous n'avez pas la permission de supprimer des messages ! 🤖");
         return;
    };

    if(message.guild.roles.get('672422524964962334')) {
        if(!args[0]) return message.channel.send("🤖 Tu ne m'as pas dit combien de message je devais supprimer 🤖");
        message.channel.bulkDelete(args[0]).then(() => {
            message.channel.send(`🤖 Je t'ai supprimer ${args[0]} messages ! 🤖`);
            console.log(`🤖 J'ai supprimer ${args[0]} messages chez "${message.guild.name}" 🤖`);
            message.delete(args)
  
        var channel = message.guild.channels.find("name", "discordlog");
        let pEmbed = new Discord.RichEmbed()
            .setTitle('🤖 Suppression de message 🤖')
            .addField('Message supprimer', message.author + ' a supprimer ' + args + ' messages')
            .addField('Channel', message.channel)
            .setFooter("🤖 Merci d'avoir nettoyez ce channel 🤖")
            .setThumbnail(`${client.user.avatarURL}`)
            .setTimestamp()
            .setColor(0x228B22)
        channel.send({
            embed: pEmbed
        })
        var channel = message.channel
    })}; 
}
west plover
#

Screen ton code

queen nebula
#

Le code que je t'envoie ces le même que si je le screen 😐

west plover
#

justement

queen nebula
#

Si ces pour voir les erreurs j'en ai pas 😐

west plover
#

mercé

queen nebula
#

Mais attend je peux faire un else au pire ?

west plover
#

c pour que ce soit plus agréable à lire

#

oui tu peux

queen nebula
#

Je vais test

west plover
#

mais comme tu as mis un return, tu peux juste enlever ta seconde condition

#

je vois le problème

#

c’est que tu récupères le role de la guild (donc du serveur) et pas celui de l’utilisateur

queen nebula
#

Non du role

#

Je fait clique droit copier l'identifiant dans les rôles

west plover
#

non mais pas ça

#

dans ton code

#

tu vérifies si tel role existe mais sur le serveur

queen nebula
#

Ah

west plover
#

pas sur le mec qui utilise la commande

queen nebula
#

Ces quoi déjà pour le mec 🤔

west plover
#

member

#

du genre message.member.blabla

keen narwhal
#
if(message.member.roles.has(TonID){

}
#

Non ?

west plover
#

au pire laisse-le le faire lui-même, je lui ai indiqué son problème et une partie de la soluce harold

queen nebula
#

Trop fort @keen narwhal 🙂

keen narwhal
#

Ta vue

#

Oui après ouai :/

#

Tu a juste a mettre des mots clé sur google

#

Genre

west plover
#

quelle puissance, il a juste remplacé guild par member sue

queen nebula
#

Fonctionnel 🙂 merci du coup à vous 2 @keen narwhal @west plover

keen narwhal
#

Check member has roles

#

Et puis tu tombe sur pleins de réponse

#

Mais tu sait faire des modules mais pas check si le member as un rôle

queen nebula
#

Hmm je viens de me lancer dans le JS il y a 1h donc bon

#

Enfin j'ai des bases mais niveau Discord JS que dalle xD

keen narwhal
#

Ah

#

Bah là doc

#

Elle est rempli bien comme il le faut

queen nebula
#

Ouais mais j'ai du mal avec la doc 😐

keen narwhal
#

Pareils

#

Mais une fois compris

queen nebula
#

Surtout que je fait un bot pour notre Serv FiveM

keen narwhal
#

C'est du gâteau

queen nebula
#

En plus je dois demandé au Dev FiveM de mettre une API pour le relier au bot donc sa va pas être de la tarte

keen narwhal
#

Créé une API ?

queen nebula
#

Il doit en existé

keen narwhal
#

Sûrement

queen nebula
#

Bref merci encore 🙂

keen narwhal
#

Gamedig doit le faire

west plover
#

si c juste pour fetch le nombre de joueurs, etc. y a déjà des modules

keen narwhal
#

Derien

queen nebula
#

@west plover Non ces beaucoup plus complexe qu'il nous faut

keen narwhal
#

Détails

queen nebula
#

Savoir le nombre de joueur InGame fivereborn-query le fait déjà

#

En gros des logs complet de tous les détails des joueurs. Pouvoir ban depuis le discord InGame sans mettre forcément le serv sous Whitelist. Ainsi que donné des grades depuis le discord aussi

keen narwhal
#

Umh

#

Go faire un Addon et use des webhooks

#

Après pour les grades la il te faut un bot

queen nebula
#

Il y en à des Webhooks mais bon tous le temps pas trop fiable à 200%

#

Bref moi je doit go merci encore

keen narwhal
#

Derien

rough tide
#

!boost

ancient sonnetBOT
#

:one::two: Soutenir GCA
Pour soutenir GCA il y a plusieurs manières ! :eyes:
Tout d'abord tu peux devenir un Michel en boostant le serveur :ok_hand: Tu peux même utiliser !boost pour voir les avantages des Michel ! :scream:

Il y a d'autres manières de soutenir GCA:
:small_blue_diamond: La première est d'inviter des membres sur GCA :thumbsup:
Tous les 15 membres invités on t'ajoute une chance en plus de gagner aux giveaway ! :gift:
:small_blue_diamond: La deuxième manière est en faisant gagner des cadeaux sur GCA :tada:
Par exemple via des nitros, des addon, des services gratuit, des jeux, des codes promo, ect ect ... C'est sans limite !!! :scream:

Tous les membres qui soutienne GCA peuvent demander à avoir le grade Ils nous soutiennent pour avoir des avantages sur les giveaway et être indiqué sur notre site !
Nous ajoutons aussi les partenaires à ce grade :slight_smile:

Si tu corresponds à une des manières de soutenir GCA et que tu soutaites obtenir le grade, contact en MP @queen ocean :ok_hand:
Et si tu souhaites proposer une autre manière de soutenir GCA, contact nous aussi ! :white_check_mark:

Alors n'hésite plus !
Soutien toi aussi GCA
:heart:

rough tide
#

merde

#

mauvais salon

#

j'ai vu bot j'ai cliquer 😧

keen narwhal
#

ok, ducoup, il a bien fait un array, mais à chaque fois ça replace le premier author.id qui est enregistré

#

si qqn sait aider 😉

slim anvil
#

faut .push dedans pas recréer un array

#

vous devez remplacer l'array par un nouveau

keen narwhal
sand shore
#

@queen nebula npm fivem api

queen nebula
#

@sand shore Merci j'irai look 🙂

rough tide
#

Vous savez comment afficher ça :

avec un bot discord ?

west plover
#

> msg 🤔

rough tide
#

merci

west plover
#

genre t’as réussi à le faire manuellement mais pas pour un bot? thinkingplayer

rough tide
#

j'lai fait avec la maj discord xd

#

j'avais pas compris que c'était >

west plover
#

superca

boreal edge
#

Bonsoir,

Comment faire un not autrement que ! en javascript svp ?
Merci d'avance,
Hugo

slim anvil
#

Regarder si il est undefined par exemple

#

Si c’est un objet tu fais un object.keys

#

Ça dépend du type

boreal edge
#

Ok ! Merci !

#

Ah oui et une autre question aussi qui me bloque :

J'ai mon fichier principal : application.js, j'ai deux dossiers : Commands & Events.

Je load mon dossier Commands de cette manière :

// LOAD COMMANDS FOLDER
const commandsFolder = fs.readdirSync("./Commands");

for(const file of commandsFolder){
  if (file.endsWith('.js')) {
    const commandFile = require(`./Commands/${file}`)
  }
}

Comment je peux faire pour envoyer mon client afin que je puisse le récupérer dans un de mes fichiers dans Commands afin d'ensuite pouvoir faire : client.on("message", ...

Merci d'avance,
Hugo

west plover
#

faudrait que tu joues avec le module.export des autres fichiers

boreal edge
#

Oula

west plover
#

tu peux par exemple export une fonction qui demande en argument le client

#

le module.export c l’équivalent du return en Lua (uniquement pour le return des fichiers, pas functions)

#

sauf que au lieu de return tu dois mettre module.export égal à quelque chose (comme une var)

boreal edge
#

Et donc comment je pourrais faire dans le cas de mon code ?

keen narwhal
#

Tu veux le début Hugo ? Pour te montre ?

west plover
#
module.export = function( client ) {
    client.on( ... )
}
boreal edge
#

Yes stp car je ne veux pas te mentir, je suis un peu perdu

west plover
#

c un exemple ^

keen narwhal
#

Moi je l'ai fait pas comme sa

boreal edge
#
client.on("message", (message) => {
    if (message.author.bot || message.channel.type == "dm"){
        return;
    }

    if (message.content == "ping") {
        message.reply("Pong !");
    }
});

Car je m'en servirais pour sa

west plover
#

tu relies ce que je t’ai envoyé à ce que t’as fait du coup

#

et dans lors du require tu exécute la fonction qui a été exportée

keen narwhal
#
  
module.exports.run = async (bot, message) => { ```
#

Voilà mon début à moi

boreal edge
#
module.exports = function(client) {
    client.on("message", (message) => {
        if (message.author.bot || message.channel.type == "dm"){
            return;
        }

        if (message.content == "ping") {
            message.reply("Pong !");
        }
    });
};
#

Donc sa donne sa ?

west plover
#

yeah

slim anvil
#

Sinon ça te dit pas d’apprendre avant de faire des trucs que tu comprends pas

keen narwhal
#

Mais du coup le Client.on sert à rien ?

slim anvil
#

enfin c’est une suggestion

west plover
#

@keen narwhal ça dépend de comment c’est intégré

keen narwhal
#

Ok

west plover
#

si la fonction est run lorsqu’il y a un nouveau message, c pas comme ça qu’il faudrait faire oui, mais si c’est uniquement run au lancement du bot, c correct

boreal edge
#

@slim anvil J'ai commencé par regarder le tuto node.js disponible sur OpenClassRoom et du coup maintenant, j'essaye de bien comprendre mais en sois, je comprends ce que je fais moi mais je ne comprenais ce que disais Guthen

slim anvil
#

Fais du JS avant de faire du node JS

boreal edge
#

Et Guthen, côté application.js, j'ai quelque chose de spéciale à faire ou pas ?

slim anvil
#

Le comprendre c’est une chose l’appliquer s’en est une autre

west plover
#

et dans lors du require tu exécute la fonction qui a été exportée
@boreal edge

boreal edge
#

Ok, je vais essayer de trouver sa, merci 🙂

#

J'ai chercher sur des forums, mais je n'ai pas trouver le code qui permet de le faire, tu serais m'aiguiller si sa te déranges pas ou pas stp ? @west plover

west plover
#

tu sais exécuter une fonction en JS?

boreal edge
#

nomdelafonctio,()

west plover
#

bien harold

boreal edge
#

Mais ma fonction elle a pas de nom si ?

west plover
#

dans ton loader, tu as fais une variable commandFile

#

et si tu log cette var, tu devrais obtenir une fonction harold

boreal edge
#
[Function]
{}
#

for(const file of commandsFolder){
  if (file.endsWith('.js')) {
    const commandFile = require(`./Commands/${file}`)
    console.log(commandFile);
  }
}
#

Pour la table vide, c'est logique car j'ai un fichier où il y a rien mais après sa me print function, donc je fais function()

#

?

west plover
#

tu exécute commandFile tout simplement

boreal edge
#

donc commandFile() ?

west plover
#

(et pour ton autre fichier vide, exportes une fonction ou tu vas avoir une erreur)

#

donc commandFile() ?
a ton avis harold

boreal edge
#

#

Merci beaucoup, après l'aide en Lua, place à l'aide en js 🙂 merci merci merci 🙂

#

Et dernière question (oui je sais, je suis chiant sorry) :

Tu sais pourquoi sa fait sa ou pas stp ?

#

Car en plus, le code il fonctionne pas donc faut que je regarde

west plover
#

tu parles des « Complexity is 6.. » ? 🤔

boreal edge
#

Ouais et en dessous de ma fonction et les deux carrés colorés

west plover
#

c VSCode?

boreal edge
#

west plover
#

tu dois avoir une extension qui fais ça

#

parce que g jamais vu ça perso

boreal edge
#

Ah yes thinkingplayer

boreal edge
#

Bonjour,
J'ai une erreur dont je ne comprend pas la raison là voici :

TypeError: Cannot read property 'on' of undefined
    at module.exports (C:\Users\gogo17\Desktop\G_Bot - Community\Commands\ping.js:4:12)
    at Object.<anonymous> (C:\Users\gogo17\Desktop\G_Bot - Community\application.js:23:5)
    at Module._compile (internal/modules/cjs/loader.js:776:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:787:10)
    at Module.load (internal/modules/cjs/loader.js:653:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
    at Function.Module._load (internal/modules/cjs/loader.js:585:3)
    at Function.Module.runMain (internal/modules/cjs/loader.js:829:12)
    at startup (internal/bootstrap/node.js:283:19)
    at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)

J'utilises ce code :

module.exports = function(client) {
    client.on("message", (message) => {
        console.log(message);
        if (message.author.bot || message.channel.type == "dm"){
            return;
        }
      
        if (message.content == "ping") {
            message.reply("Pong !");
        }
      });
};

( Je comprend l'erreur, mais je ne sais pas comment la réglé)
Quelqu'un serait me donner un coup de pouce s'il vous plait ?

Merci d'avance,
Hug o

west plover
#

@boreal edge En gros tu utilises une méthode sur une valeur undefined (en gros nil en Lua)

#

donc j’imagine que client n’est pas défini parce que ru ne passes pas d’arguments lorsque tu exécute la fonction

boreal edge
#

Ah oui !

#

Merci beaucoup Guthen 🙂

boreal edge
#

Bonsoir !

J'aimerai savoir : Je souhaites faire un script pour envoyer un message dans un channel qui n'est pas un channel du serveur, j'ai donc chercher les fonctions à utiliser et j'ai trouver https://discord.js.org/#/docs/main/stable/class/GuildChannel?scrollTo=guild & https://discord.js.org/#/docs/main/stable/class/GuildChannel?scrollTo=id
Sauf que, je ne sais pas comment faire pour que sa envoie un message dans un serveur bien précis d'un salon bien précis.

Quelqu'un serait m'aider sur le sujet ?
Merci d'avance,
Hugo

west plover
#

Tu peux récupérer le serveur voulu avec client.guilds

#

pour les channels : guild.channels

#

ce sont tous deux des collections indexées par leurs ID donc tu devrais pouvoir récupérer un élément avec la méthode get avec leur ID

boreal edge
#

Ok, je vais essayer, merci 🙂

boreal edge
#

Je suis désolé, mais tu aurais un exemple pour envoyer un message dans un serveur & un channel différent stp ?

#

Car j'arrive pas à m'en servir..

#

Car il n'y a pas d'exemple, c'est pas comme sur le wiki GMod donc j'ai un peu plus de mal..

#

Edit : j'ai trouver une solution, merci 🙂

slim anvil
#

Tu as une doc qui est clair

boreal edge
#
#

On est d'accord ? @slim anvil

slim anvil
#

ui

boreal edge
#

Perso j'ai l'habitude du wiki de GMod

#

Donc je m'y pert rapidemment

#

Mais j'essaye de m'y faire

#
client.guilds.get(Config.serverlogs).channels("idduchannel").send(message.content);

Il me return TypeError: Cannot read property 'channels' of undefined, channels , n'est pas défini donc, mais comment le définir ?.

#

Si tu serais me donner un petit coup de main Enzo stp ? 🙂

slim anvil
#

Après si tu veux la je joue sorry

boreal edge
#

Tkt, pas de soucis, bonne game

#

Je vias ocntinuer de chercher

boreal edge
#

Problème résolu

keen narwhal
#

bon ducoup, on m'a encore laché, quelqu'un saurait m'aider à faire un système de tâches ?

#

(w/ fs)

#

j'ai une partie du code mais il manque ducoup la partie qui enregistre les joueurs qui se mettent dans une tâche

rough tide
#

Bonjour , une érreur trés bete je suppose , mais je n'ai pas compris comment faire pour sortir e1 du .then , pour pouvoir le log aprés

.then(async e => {
        let e1 = e.json()
        return e1
    })
    console.log(e1)
#

au cas ou , le console.log c'est juste un test , a terme j'ai envie de le return , parcequetout ça c'est une fonction

timid loom
#

tu dois faire un await sur la fonction pour laquelle tu mets le .then() pour obtenir la valeur e, et tu fais tes opérations dessus
par exemple :

myAsyncFunc().then(async e => {
  let e1 = e.json();
  console.log(e1);
});
// équivalent à
let e1 = await myAsyncFunc();
e1 = e1.json();
console.log(e1);```
rough tide
#

mais enfait

#

tout ça est dans ma fonction

#

att j'envoie ma fonction

#
function tweet  (username, text,)  {
    fetch(`https://nekobot.xyz/api/imagegen?type=tweet&username=${encodeURIComponent(username)}&text=${encodeURIComponent(text)}`,
    {
        method:"get",
        headers:{"Content-Type":"application/json"
    }})
    .then(e => {
        e.json()
        .then(e => {
            return e.message
        })
    })
}
timid loom
#

Tu peux aussi faire js let e1 = await myAsyncFunc().then(e => e.json()); console.log(e1);

rough tide
#

j'ai envie que en faisant tweet(username,text) ca return direct e.message

timid loom
#

Tu return ton fetch alors 🤔

#

et tu fais ton .then sur tweet()

boreal edge
#

Bonsoir,

Petite question : Comment je peux savoir si un channel existe déjà à partir de son nom ?

Merci d'avance,
Hugo

timid loom
#

ou alors si tu veux vraiment que ça fasse comme tu l'as dit tu fais ça :

function tweet(username, text)  {
    let e = await fetch(`https://nekobot.xyz/api/imagegen?type=tweet&username=${encodeURIComponent(username)}&text=${encodeURIComponent(text)}`, {
        method:"get",
        headers: {
            "Content-Type":"application/json"
        }
    }).then(e => e.json())
    return e.message;
}``` @rough tide
boreal edge
ancient sonnetBOT
#
Citation de Hugo Lompto#2656 posté dans #aide-bots

Cliquez sur 📄 pour accéder au message.

Bonsoir,

Petite question : Comment je peux savoir si un channel existe déjà à partir de son nom ?

Merci d'avance,
Hugo

hazy mirage
#

bot.channels.find("name","welcome") puis apres tu check si tu as une value

boreal edge
#

Ok, merci et welcome il signifie quoi ?

hazy mirage
#

welcome c'est le name du channel que tu veux trouver

boreal edge
#

et name ?

#

Du coup

hazy mirage
#

name c'est le filter

#

tu peux le remplacer par "id" et lui mettre l'id

boreal edge
#

Ok ! Merci beaucoup

#

Et dernière question (désolé), comment on peut faire pour le trouver car je marque channel ou find et je tombe pas sur ce que tu m'a envoyer

#

Je comprend rien mais vraiment, sa fait 1hre que j'essaye de chercher pour vérifier si le channel existe car maintenant, sa me return cette erreur

ancient sonnetBOT
#
Citation de StraX#6242 posté dans #aide-bots

Cliquez sur 📄 pour accéder au message.

bon ducoup, on m'a encore laché, quelqu'un saurait m'aider à faire un système de tâches ?

boreal edge
#

Bonsoir,

Je chercherais à rajouter des t entre les différents "mots" d'un pseudo discord ( message.author.username ), quelqu'un sera m'aiguiller pour arriver au résultat voulu ?

Merci,
Hugo

hazy mirage
#

???

#

pseudodiscord.split(' ').join('t')

#

@boreal edge

boreal edge
#

Je vais tester

#

Merci beaucoup @hazy mirage ! 🙂

keen narwhal
#

Bonsoir, j'ai un problème avec une commande : ```const Discord = require("discord.js");
const low = require('lowdb')
const FileSync = require('lowdb/adapters/FileSync')
const adapter = new FileSync('./bl.json')
const db = low(adapter)
var mb = db.get('bl').size().value()

module.exports.run = async (bot, client, message, args) => {
var stats = new Discord.RichEmbed()
.setTitle("Statistiques de Ryze Protect")
.addField("Nombre de Serveur :",${client.guilds.size}, true)
.addField("Nombre d'utilisateur :",${client.users.size}, true)
.addField("Nombre d'utilisateur Blacklist",${mb}, true)
.setColor("#36393f")
message.channel.send(stats)
}``` il ne détecte pas le size, voicl l'erreur

timid loom
#

vérifies que ta db soit valide

keen narwhal
#

ok

#

toujours la même erreur

timid loom
#

nan mais

#

ton .json

#

il a bien un champ 'bl' ?

keen narwhal
#

ouep

timid loom
#

ah

#

dsl

#

je me suis trompé de size

#

c'est sur le client.guilds.size apparemment

keen narwhal
#

yep

timid loom
#

hmm, c'est quoi la différence entre bot et client?

keen narwhal
#

Aucune

timid loom
#

donc tu as deux variables qui représentent la même chose ?

keen narwhal
#

oui

timid loom
#

wtf

#

bon

#

bah essaye avec bot à la place de client déjà

keen narwhal
#

ok

#

même erreur

timid loom
#

Et c'est sûr que c'est un Discord.Client ?

keen narwhal
#

oui

timid loom
#

t'as dû te foirer dans l'envoi du paramètre
déjà, pourquoi avoir deux paramètres qui représentent la même chose ?
ensuite, à quoi ressemble ton invocation de la fonction ?

keen narwhal
#

je vais y regarder demain tous sa merci de ton aide en tous cas

boreal edge
#

Bonsoir,
J'aurais une petite question : Comment je peux faire pour récupérer ce qu'il y a après les deux premiers mots d'une variable par exemple ?

Merci d'avance,

#

Hugo

hazy mirage
#

@boreal edge c'est a dire?

#

d'un array, d'un string, ... ?

boreal edge
#

string*

hazy mirage
#

genre "Hugo est un arbre"

#

recuperer Hugo est ?

boreal edge
#

Ouais 😂

#

Nan

#

un arbre

hazy mirage
#

ben c'est les deux derniers ça

boreal edge
#

Mais si jamais j'ai "Hugo est un arbre moche"

#

Comment je peux récupérer un arbre moche ?

hazy mirage
#

je pense savoir

boreal edge
#

Car je cherche à récupérer ce qu'il y a après Hugo est

hazy mirage
#

string.split(" ").splice(2).join(" ")

#

ça te virera les deux premiers et te filera tous ceux qui reste

#

sinon si tu veux que les deux derniers tu mets -2

boreal edge
#

@hazy mirage Merci ! ❤️

hazy mirage
#

dr bg

boreal edge
#

@hazy mirage Désolé un mais comment je peux faire pour récupérer le texte après le premier mot stp ? 🙂

#

Car j'ai essayer en remplace splice(2) par splice(1) mais sa a pas marcher

hazy mirage
#

"a b c d ".split(" ").splice(1).join(" ")

#

ça me sort bien b c d

boreal edge
#

En faites quand je pris message.content sa me return rien

#

Donc ca vient de là, je vais voir, merci Pilot 🙂

boreal edge
#

Re,

Est ce que quelqu'un serait comment envoyer un message à partir d'un nom et tag discord ?

Merci d'avance,
Hugo

hazy mirage
#

??

#

tu ne peux pas envoyer de message via un compte de quelqu'un d'autre que ton bot

#

si tu veux envoyer un message a un mec via son nom et son tag discord:

boreal edge
#

Je veux envoyer un message via son nom et son tag

hazy mirage
#

client.users.find(user => user.username == "nom") ou client.users.find(user => user.id == "id")

boreal edge
#

Merci beaucoup

ancient sonnetBOT
#
Citation de StraX#6242 posté dans #aide-bots

Cliquez sur 📄 pour accéder au message.

bon ducoup, on m'a encore laché, quelqu'un saurait m'aider à faire un système de tâches ?

keen narwhal
#

😒

#

il reste pas grand chose à faire, juste à faire un array dans une des tables d'un json, ce que je n'arrive pas :/

timid loom
#

mais

#

on te l'a dit

#

users.push(user)
et après tu réécris ton json

#

je sais pas comment on doit te le dire mais c'est plutôt clair à mon avis

slim anvil
#

Faut pas lui dire mais lui faire j’ai l’impression thinkintense

boreal edge
#

Hello !
J'aurais besoin d'un petit coup de pouce car je suis bloquer depuis 2H dessus :

const memberList = JSON.parse(fs.readFileSync("../members_id.json"));

Je ne comprend pas pourquoi il me return cette erreur: Error: ENOENT: no such file or directory, open '../members_id.json' alors que le fichier est bien existant

#

Mon fichier json contient :

{}
#

Est ce quelqu'un serait m'aider sur le sujet svp ?
Merci d'avance,
Hugo

west plover
#

hm, quel est le chemin de ton .js et celui du .json?

boreal edge
#

Sois :

#

Fichier JS : C:\Users\gogo17\Desktop\G_Bot - Community\Events
Fichier JSON : C:\Users\gogo17\Desktop\G_Bot - Community

west plover
#

et si tu const memberList = require( "../members_id.json" )?

boreal edge
#

J'ai aucune erreur

west plover
#

perfect harold

boreal edge
#

Mais le truc c'est qu'après j'aimerai bien vérifier si le pseudo discord du gars existe ou pas dans la table et si jamais sa existe pas, j'ajoute un argument avec le nom du gars et je lui mets l'id du joueur

#

Merci @west plover 🙂

#

J'vais essayer de chercher pour mon soucis du coup et je reviens si jamais j'y arrives po 🙂

west plover
#

Si c pour check qu’un mec est inscrit, go soit utiliser une array et stocker le mec soit dans un objet indexé par son id et en valeur un true (pour pouvoir vérifier s’il est dedans plus facilement)

boreal edge
#

Yes

#

Maintenant, il faut que j'y arrives thinkingplayer 😂

#
            if (!membersList[authortag]) {
                membersList[authortag] = []
            };
            membersList[authortag].unshift({
                userid : message.author.id
            })
            fs.writeFileSync('../members_id.json', JSON.stringify(membersList));
west plover
#

tu peux très simplement trouver comment faire en te renseignant sur les objects ou les arrays

boreal edge
#

J'ai déjà fait sa mais sa fonctionne pas

#

Ok, je vais chercher, merci 🙂

west plover
#

.unshift thinkingplayer

#

jamais vu c’te méthode

boreal edge
#

Bah en faites, j'avais repris un ancien code que j'avais fait (j'avais recopier sur une vidéo x) )

west plover
#

et utilises l’id du mec au lieu du tag

boreal edge
#

En faites j'ai besoin de son tag

west plover
#

bah ne recopie pas sur la vidéo harold

boreal edge
#

Car c'est pour un système de tickets via mp

slim anvil
#

@west plover

west plover
#

et à quoi il te sert du coup? 🤔

slim anvil
#

Push ajoute à la fin

#

Un shift au début

boreal edge
#

Et donc du coup, dans le topic, je mets le nom et le tag du gars pour que moi je sache qui est ce

slim anvil
#

Et sinon Hugo stock son ID

#

Car son tag peut changer pas son id

#

Et ensuite pour récupérer son pseudo tu fetch le user

#

et tu pourras récupérer toutes les infos qui te sont nécessaires

boreal edge
#

Le ticket, je le reçois sur un serveur discord spécial

#

Que j'ai créer rien que pour les bots

west plover
#

abadakor @slim anvil

boreal edge
#

Et le ticket de base, c'est un joueur qui le demande en MP du bot directement

slim anvil
#

c’est pas grave si le bot est sur 2 tu as accès dans guilds au discord ou il est

#

les 2*

#

donc tu pourras get le user

boreal edge
#

Ok, je vais voir sur le wiki, je re

#
            console.log(client.guild.fetchMember(message.author).id);
                                     ^

TypeError: Cannot read property 'fetchMember' of undefined
#

Sa vient de me return cette erreur

#

Fin comment je peux récupérer l'ensemble des discords où est le bot pour vérifier avec le fetchMember ?

#
            console.log(client.guilds.fetchMember(message.author).id);
                                      ^

TypeError: client.guilds.fetchMember is not a function

J'ai essayer sa comme tu m'a dit mais sans succès, je ne sais pas pourquoi...

slim anvil
#

Tu as essayé 2 minutes

boreal edge
#

Je suis en train de comprendre les erreurs que j'ai fait

slim anvil
#

Je pense, sans être sur, que si tu as 2 discord différent un d’admin et un de communauté, lorsque tu reçois sur le discord admin le ticket du user du discord communauté tu dois sur ton clients.guilds récupérer la guild du discord communauté, une fois récupéré sur celle si tu fetchMember pour en lui passadant l’id du user pour récupérer son profil

#

Peut être que je me trompe je n’ai jamais scindé en 2 discord

boreal edge
#

J'ai essayer de console.log client.guilds et effectivement, sa ma return tout les membres qu'il y avait dans les discords sauf qu'il me return un ID puis => [GuildMember] je vais t'envoyer un screen

#

Donc je sais pas comment get son username

west plover
#

member.user.username

boreal edge
#

@west plover Youps, j'avais pas vu, merci ! 🙂

#

Et petite question :

Comment je peux insérer un string dans un string je m'explique :

string a insérer : arbre
string de base : C'est un qui est très beau

Donne : C'est un arbre qui est très beau

Merci d'avance,
Hugo

spring dock
#
let tree = "arbre";
console.log(`C'est un ${tree} qui est très beau`);
boreal edge
#

Ah oui, merci 🙂

boreal edge
#

Re,

Excusez moi de vous dérangez encore une nouvelle fois mais comment je peux envoyer un message privée à quelqu'un à partir de son id ?

Merci d'avance,
Hugo

keen narwhal
#

Ta déjà regarde la docs ?

boreal edge
#

Oui mais je n'ai pas trouver

keen narwhal
#

Y a pas mal d'info dessus qui peuvent aider

boreal edge
#

J'ai pas trouver

keen narwhal
#

Ok

#

Comme sa je serait pas te dire je regarde quand je suis devant mon PC, sinon quelqu'un arrivera avant moi

boreal edge
#

Ok merci ! 🙂

golden aurora
#

Bonjour, actuellement j'essaie de créer une commande permettant de pouvoir créer un channel avec un nom personnalisé a l'aide de cette commande: **!channel + (nom du channel). Mais j'ai des problèmes et je n'ai pas d'idée qui permette de require un string après !channel et ensuite, pouvoir get celui ci pour set le nom du channel. Voici mon code: ```js
if(message.content === PREFIX + "channel") {

bot.guilds.get("677605142438215704").createChannel("channel-test", {
    type: 'text',
    permissionOverwrites: [{
      id: "677605142438215704",
      parent: "678259415442522133",
      deny: ['MANAGE_MESSAGES'],
      allow: ['SEND_MESSAGES']
    }]
  })

}

boreal edge
#

@keen narwhal J'ai enfin trouver : fetchUser ! Merci beaucoup ! 🙂

keen narwhal
#

^^

boreal edge
#

Et tu sais comment se servir de createDM ou pas stp ? @keen narwhal

keen narwhal
#

Pas tellement

boreal edge
#

Ah merde

keen narwhal
#

Je regarderais mon bot il m'envoie des mp quand un utilisateur malveillant rejoint mon serveur

boreal edge
#

Ok merci

#
                clienttosend.createDM()
                    .then((channel) => {
                        message.channel.send(messagetosend);
                    })

Car j'ai essayer sa mais sans succès

ancient sonnetBOT
#
Citation de Sam Pellegrino#9343 posté dans #aide-bots

Cliquez sur 📄 pour accéder au message.

Bonjour, actuellement j'essaie de créer une commande permettant de pouvoir créer un channel avec un nom personnalisé a l'aide de cette commande: **!channel + (nom du channel). Mais j'ai des problèmes et je n'ai pas d'idée qui permette de require un string après !channel et ensuite, pouvoir get celui ci pour set le nom du channel. Voici mon code: ```js
if(message.content === PREFIX + "channel") {

bot.guilds.get("677605142438215704").createChannel("channel-test", {
    type: 'text',
    permissionOverwrites: [{
      id: "677605142438215704",
      parent: "678259415442522133",
      deny: ['MANAGE_MESSAGES'],
      allow: ['SEND_MESSAGES']
    }]
  })

}

boreal edge
#

Cela fait un peu près 7hre que je bloque sur le même truc, est ce que quelqu'un sait comment je peux envoyer un message à partir d'un membre détecté par fetchUser ?

Merci d'avance,
Hugo

west plover
#

client.fetchUser( user_id ).then( user => { user.send( "hello" ) } ) 🤔

boreal edge
#

Euh Guthen ? Comment dire ? MERCIIIII !!! SA FAIT 7 HEURES QUE J'ESSAYE DE LE FAIRE ET EN 1 MINUTE, SOUCIS REGLE ! MERCIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 😄

west plover
boreal edge
#

Ma tête : suefort

#

Pourtant c'est chelou car j'avais mis une variable à client.fetchUser(idtosend, true) et je lui est dit après clienttosendmsg.send("message")

#

MAIS SA A PAS MARCHER

west plover
#

@golden aurora tu peux message.content.split( " " ) afin d'obtenir ton texte en arguments

#

@boreal edge je pense que t'avais pas .then 🤔

boreal edge
#

Nan

west plover
#

et juste récupérer la valeur de fetchUser

boreal edge
#

J'ai jamais compris le but de .then

west plover
#

c pour les Promise

boreal edge
#

C'est quoi ?

west plover
#

ça permet d'exécuter des fonctions après qu'une action asynchrone ait été faites (parce qu'une requête sur un serveur c pas instantané donc Promise)

#

du coup t'as les méthodes .then si c'est réussi et .catch si y a une erreur

boreal edge
#

Okkk !

golden aurora
#

Yep @west plover c'est bon it's work thks u

#

petite question, dans le parent d'un createChannel, comment je peux get le channel de l'auteur du msg?

boreal edge
#
function stop() {
    client.guilds.get(token.ServerLogs).channels.get(token.channelnotify).send(":space_invader: **__Bot déconnecté__** :space_invader:")
}
client.on("disconnect", stop);

Est ce que vous savez poourquoi l'event n'est pas appellé svp ?

keen narwhal
timid loom
#

En même temps message.member.roles n'a pas d'attribut id vu qu'il s'agit d'une Collection, et pas d'un Role.

keen narwhal
marsh drift
#

Tu enlève le .xxxZ et tu manipulate une date let birthday = new Date('1995-12-17T03:24:00')?

golden aurora
#

Bonjour, qui saurait me dire comment je peux get le channel ou se trouve l'auteur du message? J'ai fait ceci : ```js
bot.guilds.get("XXXXXXXXXXXXX").createChannel(thingToEcho, {
type: 'text',
parent: ${message.channel.parent},
permissionOverwrites: [{
id: "XXXXXXXXXXXXX",
deny: ['MANAGE_MESSAGES'],
allow: ['SEND_MESSAGES']
}]
})

ERREUR: ```js
(node:4600) UnhandledPromiseRejectionWarning: DiscordAPIError: Invalid Form Body
parent_id: Value "<#XXXXXXX>" is not snowflake.
keen narwhal
#

@marsh drift mais le problème c'est que c'est la date de création d'une personne donc c'est pas un truc qui est define par moi, donc bon là je suis un peu perdu j'ai déjà essayé de faire des recherche et j'ai rien réussi même avec des modules

marsh drift
#

Définis par toi ou pas tu gère ce que tu envoie à mee6 non ?

#

Sinon tu fais ton propre bot au pire, c'est pas le temps que ça prend

keen narwhal
#

Non mais c'est déjà mon propre bot

#

C'est juste que je fessait join mee6 pour avoir le message

#

Mais j'utilise member.createdAt il me semble car je ne suit pas sur mon pc :/

slim anvil
#

Sinon en JS use moment ou datefns pour gérer tes dates plus simplement

#

Formatage etc

marsh drift
#

Bah tu récupère l'info, la format (comme j'ai mis au dessus par exemple) et la renvois, tu es pas obliger de renvoyer l'info en direct donc je vois pas trop de problème

keen narwhal
#

Et comment spécifiée que c'est mon format a moi et pas celuis de base ?

#

@slim anvil j'irais voir ça dès que je suis chez moi, merci

#

moment().format('Do MMMM YYYY, h:mm:ss a').createdAt ??

#

Enfin je suis perdu là 😭

marsh drift
#

Member.createAt.format plutôt ?

keen narwhal
#
LOG
/DiscordBot/Widx/index.js:85
                    value: member.user.createdAt.format('Do MMMM YYYY, h:mm:ss a'),
                                                 ^

TypeError: member.user.createdAt.format is not a function
    at Client.<anonymous> (/DiscordBot/Widx/index.js:85:50)
    at Client.emit (events.js:321:20)
    at Guild._addMember (/DiscordBot/node_modules/discord.js/src/structures/Guild.js:1298:19)
    at GuildMemberAddHandler.handle (/DiscordBot/node_modules/discord.js/src/client/websocket/packets/handlers/GuildMemberAdd.js:12:13)
    at WebSocketPacketManager.handle (/DiscordBot/node_modules/discord.js/src/client/websocket/packets/WebSocketPacketManager.js:105:65)
    at WebSocketConnection.onPacket (/DiscordBot/node_modules/discord.js/src/client/websocket/WebSocketConnection.js:333:35)
    at WebSocketConnection.onMessage (/DiscordBot/node_modules/discord.js/src/client/websocket/WebSocketConnection.js:296:17)
    at WebSocket.onMessage (/DiscordBot/node_modules/ws/lib/event-target.js:120:16)
    at WebSocket.emit (events.js:321:20)
    at Receiver.receiverOnMessage (/DiscordBot/node_modules/ws/lib/websocket.js:789:20)```
#
JS
client.on('guildMemberAdd', (member) => {
    const GuildServer = client.guilds.get(config.guild);
    let logs = GuildServer.channels.find(x => x.name === "logs");
    var memberCount = GuildServer.members.filter(member => !member.user.bot).size;
    client.user.setPresence({ game: { name: `🙍╿  ${memberCount} Membres` }, status: 'dnd' });
    logs.send({
        embed: {
            color: 3066993,
            author: {
                name: 'Widx',
                icon_url: 'https://cdn.discordapp.com/avatars/677247168230326308/eaaba746360907d6e6f05e81e785bdcf.png',
                url: 'https://widx.fr',
            },
            description: `${member} has join the server !`,
            thumbnail: {
                url: member.user.avatarURL
            },
            fields: [
                {
                    name: 'Account created :',
                    value: member.user.createdAt.format('Do MMMM YYYY, h:mm:ss a'),
                    inline: true,
                },
            ],
            timestamp: new Date(),
        }
    })
});```
#

Je viens de comprendre 🙂

timid loom
#

Une recherche et j'ai le résultat, tu es sûr d'avoir vraiment cherché ?

keen narwhal
#

Je l'ai depuis tous a l'heure mais je n'arrivé pas a le mettre en place

ancient sonnetBOT
#
Citation de _Fireless#5431 posté dans #aide-bots

Cliquez sur 📄 pour accéder au message.

@slim anvil j'irais voir ça dès que je suis chez moi, merci

keen narwhal
#

Je viens de rentré il n'y a même pas 20mins

timid loom
ancient sonnetBOT
#
Citation de _Fireless#5431 posté dans #aide-bots

Cliquez sur 📄 pour accéder au message.

@marsh drift mais le problème c'est que c'est la date de création d'une personne donc c'est pas un truc qui est define par moi, donc bon là je suis un peu perdu j'ai déjà essayé de faire des recherche et j'ai rien réussi même avec des modules

keen narwhal
#

J'ai rechercher hier mais sans le module 'moment'

timid loom
#

Mais pas besoin d'un module

#

C'est une méthode de Date native

keen narwhal
#

Pas grave

timid loom
#

Wtf

#

Bon bah je te laisse te compliquer la vie avec ton module npm et tes dependencies inutiles hein

keen narwhal
#

Yes

timid loom
ancient sonnetBOT
#
Citation de Sam Pellegrino#9343 posté dans #aide-bots

Cliquez sur 📄 pour accéder au message.

Bonjour, qui saurait me dire comment je peux get le channel ou se trouve l'auteur du message? J'ai fait ceci : ```js
bot.guilds.get("XXXXXXXXXXXXX").createChannel(thingToEcho, {
type: 'text',
parent: ${message.channel.parent},
permissionOverwrites: [{
id: "XXXXXXXXXXXXX",
deny: ['MANAGE_MESSAGES'],
allow: ['SEND_MESSAGES']
}]
})

ERREUR: ```js
(node:4600) UnhandledPromiseRejectionWarning: DiscordAPIError: Invalid Form Body
parent_id: Value "<#XXXXXXX>" is not snowflake.
slim anvil
#

Tu uses moment la @keen narwhal ?

keen narwhal
#

Oui

slim anvil
#

c’est pas comme ça alors

keen narwhal
#
moment.locale('fr');
moment(member.user.createdAt).format('Do MMMM YYYY, hh:mm:ss'),```
#

Tkt

slim anvil
#

Yes mieux

keen narwhal
#

Ouai je venais de comprendre 😄

slim anvil
#

Après le mieux c’est datefns moins lourd si c’est un petit projet car moment est assez huge

#

après oui tu pouvais aussi formater en JS natif

golden aurora
#

@timid loom Je souhaite récupérer la categorie dans laquelle se trouve l'auteur ( ce que j'ai essayé avec :```js
parent: ${message.channel.parent},

mais sans résultat)
Et avec ceci, lorsque le joueur effectuera la commande, le channel se créera dans la catégorie ou se trouve l'auteur
boreal edge
#

Essaye : ```js
parent : message.channel.parent


@golden aurora
golden aurora
#

ok

#

marche pas

marsh drift
#

/o\ quel enfer, pourquoi installer des chose qui se font en natif en deux secondes, anyway....

keen narwhal
#

@golden aurora L'erreur ?

slim anvil
#

t’as pas un parentID @golden aurora ?

hazy mirage
#

non @slim anvil

#

il est adopté

golden aurora
#

oula comant coné tu mon hystoireu?

#

ParentID ne marche pas.... L'erreur est ```js
(node:4600) UnhandledPromiseRejectionWarning: DiscordAPIError: Invalid Form Body
parent_id: Value "<#XXXXXXX>" is not snowflake.

golden aurora
#

pb résolu

rough tide
#

Bonjour !

#

J'ai un bot qui créer des logs en .txt des messages supprimés

#

sauf que , j'appelle le .txt avec le nom du serveur

#

sauf que certains serveurs on des | <> /\ dans leurs noms , ce qui fait que le .txt ne se créer pas et mon bot crash

#

qlq a une solutio ?

west plover
#

appelle le avec l'id de la guild

#

comme ça 0 problème

rough tide
#

je sais

#

mais je me retrouve mieux avec le nom

west plover
#

sinon tu fais un replace des caractères illégaux mais bof

rough tide
#

bah

#

j'ai fait ça

#
texte = texte.replace(/\/g, " ")
#

sauf que bah , ca marche pas quoi xd

west plover
#

le problème c'est que tu vas avoir trop de règles à mettre en fait

#

ou alors voir avec les unicodes/positions dans la table ascii via le pattern

rough tide
#

ça me dérange pas de repeter 20 fois le .replace

#

j'ai l'habitude xd

#

jveux juste savoir comment faire

west plover
#

je te conseille vraiment d'abandonner l'idée du nom du serveur

rough tide
#

parceque sur le screen ça marche pas

west plover
#

et de partir sur l'id

rough tide
#

:/

#

mais aprés , le but c'est d'aller chercher dans les logs a la main

#

et je connais pas par coeur

west plover
#

le \ du pattern indique qu'il y a un caractère special après

rough tide
#

les id des serveurs

west plover
#

or y en a pas

rough tide
west plover
#

bah clic droit sur un serveur > Copier l'identifiant > Recherche l'id dans tes fichiers

rough tide
#

bah c'est compliquer quoi xd

west plover
#

wow de fou

rough tide
#

jveux juste retirer ces caractères /:*?"<>|

#

\ /:*?"<>|

slim anvil
#

bah fais une regex

rough tide
#

regex ?

slim anvil
#

sur les caractères interdit dans un fichier

#

Oui

rough tide
#

comment ça

slim anvil
#

Ce que tu es entrain d'utiliser ca s'appelle un regex

west plover
#

un truc de ce genre /[<>|\\"?/:*]/g

slim anvil
#

utilisez pas vetement ce que vous trouvez sur internet

#

Mais tu dois avoir sur internet des regex deja faites pour les caractères interdit sur un fichier

#

tu uses ça et hop

rough tide
#

j'ai pas trouver ça sur internet

#

j'avais déja utiliser la fonction .replace

#

bah je connais les caractères interdits

#

jveux juste remplaces ces caractères => \ /:*?"<>|

par un espace

west plover
#

sauf qu’il y pas que ça

#

y a d’autres caractères chelous et qui sont sûrement pas acceptés

rough tide
#

il ne sont donc pas acceptés nn plus dans un nom de serveur

#

et globalement c les plus retrouvés dans les noms de serveurs

#

du coup ? je fais comment

west plover
#

il ne sont donc pas acceptés nn plus dans un nom de serveur
Si sinon je les aurais pas énoncés

rough tide
#
replace(/[^\w\s]/gi, '')
#

du coup ?

west plover
#

rough tide
#

parfait merci

slim anvil
#

il ne sont donc pas acceptés nn plus dans un nom de serveur

#

Non pas forcément d'ailleurs

rough tide
#

c'est pas éxactement ce que je cherche

slim anvil
#

Les règles sont différentes entre email, fichier, pseudo, etc

rough tide
#

jveux remove que ces caractères la => \ /:*?"<>|

#

pas le reste

#

texte = texte.replace(/ \ /g, " ")

#

ça marche pas

#

je fais comment ?

west plover
#

mais euh g donné la soluce en faite

slim anvil
#

``/([\ /:*?"<>|])/g`

#

test mais pas sur quelle soit bonne de tête comme ça

rough tide
#

merci je test

slim anvil
#

attention a la ` en trop au début

#

j'ai failed

rough tide
west plover
#

mets un \ avant le "

slim anvil
#

et d'ailleurs my bad j'ai mis un espace entre les 2 \ /

#

enleve les, sinon tu vas match sur les espaces harold

#

En gros @rough tide ca donnerait ça

#
"s**alut :a to/us".replace(/([\/:*?"<>|])/g,'')
boreal nacelle
#

Salut 🙂 quelqu'un ici a déjà développé avec le module Twitter d'NPM ? Permettant d'envoyer dans un channel un tweet venant d'être posté

slim anvil
#

Tu veux juste que a chaque tweet, ca publie sur un de tes channels discord ?

boreal nacelle
#

ui

slim anvil
#

tu peux faire plus simple avec des webhooks

#

avec IFTT par ex

boreal nacelle
#

Sauf que mon but est de développer une fonction sur un bot ^^

#

Pour ça que je viens demander ici 😮

slim anvil
#

Tu veux faire quoi exactement

#

que avec une commande, tu synchro un compte twitter a un channel?

boreal nacelle
#

que chaque tweets soient retranscris dans un channel

#

imagine là maintenant tu tweet

#

ça retranscris directement le tweet dans un channel

slim anvil
#

Si tu passes pas par des webhooks, et que tu veux le faire à la main, tu vas devoir faire toi meme un get des status du user toutes les x secondes/minutes etc..

boreal nacelle
#

bah je peux pas utiliser de webhook ... enfin, dans le sens où je veux que ça soit le bot lui même qui envoie le message

#

peut importe comment

#

et avec quoi

slim anvil
#

sauf si tu veux vraiment que lui poste le texte etc, pour être sûr de comprendre 😄

boreal nacelle
#

c'est SON bot qui poste le tweet là ?

queen ocean
#

ta essayer avec ca ?

#

Ta une method stream pour faire ce que tu veux faire

boreal nacelle
#

yep j'ai essayé de look ce module mais j'y comprends pas grand chose

#

rien que l'authentification

queen ocean
#

Ta check le quick start ?

#

Ta tout d'écrits dès le début

#
You will need valid Twitter developer credentials in the form of a set of consumer and access tokens/keys. You can get these here. Do not forgot to adjust your permissions - most POST request require write permissions.
boreal nacelle
#

woah faut vraiment faire une demande à twitter

golden aurora
#

Bonjour, j'ai une question: je connais l'id d'un member mais j'aimerais le transformer en son pseudonyme, comment je peux faire?
Merci d'avance

keen narwhal
#

<@ID>

golden aurora
#

(en code)

boreal nacelle
#

simple

#

tu fais ça sous forme de variable

golden aurora
#

J'ai ça: ```js
var mentionmember = message.mentions.members.first();

ça me ramène un id, comment je fait?
boreal nacelle
#

mentionmember.username

#

:^)

golden aurora
#

a oui pas bête 😂

#

merki

boreal nacelle
#

et si tu veux le pseudo qu'il a prit sur le serveur (si il s'est renommé) : mentionmember.nickname

golden aurora
#

ok merci ^^

golden aurora
#

Comment je peux faire pour que seulement l'auteur du message et la cible peuvent voir le nouveau channel créé? J'ai fais ceci: ```js
{

           id: message.author.id,
           deny: ['MANAGE_MESSAGES'],
           allow: ['SEND_MESSAGES']
           },
           
           {
              id: mentionmember.id,
              deny: ['MANAGE_MESSAGES'],
              allow: ['SEND_MESSAGES'],
           },
Mais lorsque je teste, le salon est disponible pour tout le monde.
boreal nacelle
#

id doit être l'ID de la personne déjà

#
{
               
               id: message.author.id,
               deny: ['MANAGE_MESSAGES'],
               allow: ['SEND_MESSAGES']
               },
               
               {
                  id: mentionmember.id,
                  deny: ['MANAGE_MESSAGES'],
                  allow: ['SEND_MESSAGES'],
               },```
golden aurora
#

ça ne marche pas.....

golden aurora
#

j'ai fait la même chose

boreal nacelle
#

re, j'vais pas vous cacher qu'après plusieurs recherches, aucun résultat. J'ai rien trouvé ..

slim anvil
#

Sur quoi, le truc twitter ? le truc de zaros a l'air bien pourtant

boreal nacelle
#

oui le truc twitter

#

mais faut faire une démarche

#

je l'ai fait

#

mais pour avoir accès aux token et au secret du compte en question faut faire des démarches et je comprends quedal

#

c'est le bordel

slim anvil
#

Jamais testé, mais c'est surement une requete pour te génerer un access token quoi, no ?

#

comme pour spotify ou autre

boreal nacelle
#

un truc comme ça oui

#

mais c'est galère

hazy mirage
#

tu as fais "apply" et rempli le questionnnaire?

boreal nacelle
#

yep

hazy mirage
#

go attendre qu'ils te certifient mtn 😄

boreal nacelle
#

bah écoute j'ai mon app qui est prête et mon mail qui est verif

#

ils m'ont pas dis d'attendre ou autre

ancient sonnetBOT
#
Citation de Sam Pellegrino#9343 posté dans #aide-bots

Cliquez sur 📄 pour accéder au message.

Comment je peux faire pour que seulement l'auteur du message et la cible peuvent voir le nouveau channel créé? J'ai fais ceci: ```js
{

           id: message.author.id,
           deny: ['MANAGE_MESSAGES'],
           allow: ['SEND_MESSAGES']
           },
           
           {
              id: mentionmember.id,
              deny: ['MANAGE_MESSAGES'],
              allow: ['SEND_MESSAGES'],
           },
Mais lorsque je teste, le salon est disponible pour tout le monde.
keen narwhal
#

@timid loom, je vois ce que tu dis quand tu me dis users.push sauf que je voudrais savoir à quoi sert le .push

slim anvil
#

A ajouter dans un tableau

keen narwhal
#

Ok, et mon tableau est dans une data de base nommée tasks (look le data.json):

{
  "tasks": [
    {
      "userId": "249459790953185280",
      "name": "s",
      "channelId": "673173059598811153",
      "users": []
    }
  ]
}
#

mon but est de le push ducoup dans le array, quand je fais users.push ça ne fonctionne pas, j'ai essayé, tasks.users.push non plus

west plover
#

tasks est une array

#

donc faut pouvoir get la task que tu souhaites

slim anvil
#

tu fais un .find sur tasks

keen narwhal
#

ok, je vais voir

slim anvil
#

pour find la task que tu veux, et sur celle ci tu fera un .users.push

keen narwhal
#

je n'arrive pas à find justement la tâche que je veux

slim anvil
#

Bah avec le channelId tu devrais pouvoir la find

#

avec

#
const task = tasks.find(task => task.channelId === message.channel.id)

fin par exemple

keen narwhal
#

ça veut dire que je dois récup l'id du channel dans mon tableau

#

yep, ok

slim anvil
#

j'ai pas le cas réel mais voila

#

par ex

keen narwhal
#

Ok

#

        const task = tasks.find(task => task.channelId === message.channel.id)

        task.users.push(message.author.id)
        
        fs.writeFileSync('./data.json', JSON.stringify({ tasks }, null, 2))

ça me sort l'erreur comme quoi task est indéfini

#

TypeError: Cannot read property 'users' of undefined

west plover
#

Il a pas trouvé la var task

#

Donc ton find est incorrect

keen narwhal
#

alors comment je peux faire ?

west plover
#

Vérifie manuellement que l’id du channel que t’es est dans une tache

#

ce qui logiquement devrait pas être le cas 🤔

keen narwhal
#

en gros, ma commande qui crée la tâche, save le channelId

west plover
#

pour quoi faire?

keen narwhal
#

pour vérifier si l'utilisateur est dans le channel pour pouvoir rejoindre la tache

#

passe pv pour avoir le code en entier

west plover
#

j’aimerais comprendre le délire d’abord 🤔

slim anvil
#

En gros le mec dans n'importe quel channel il fait un !createtask toto par ex guthen

#

du coup au retour de la creation du channel, il save son channelId dans la task, comme ça quand un mec va venir dans ce salon pour s'ajouter a la tache avec un !join

#

il va devoir regarder si l'id du channel existe dans une des tasks, et si oui push le user dans cette task

#

si je me rappelle bien du truc

boreal nacelle
#

Bonjour ! Un de vous aurait un système de musique ?
J’aimerai savoir quel module vous utilisez. Si c’est FFMPEG, pourriez-vous me passer l’installer Linux en JS svp ?
Merci d'avance 😄

compact sky
#
  if (message.content === prefix + "annonce") {
    if (message.member.hasPermission("ADMINISTRATOR")) {
      const embed = new Discord.RichEmbed()
      .setTitle("__Holotransmission__")
      .setDescription(args.join(" "))
      message.channel.send("Tout le monde")
      message.channel.send({embed})
    }
  }``` Yo , yo , j'ai un soucis technique enfaite il me dit que args n'est pas définis une idée ?
west plover
#

où est défini args?

compact sky
#
const args = message.content.trim().split(/ +/g);```
west plover
#

envoie le code depuis args jusqu'à ton code d'annonce 🤔

compact sky
#

Comment ça ?

west plover
#

pour voir si ta constante args est dans le même scope que ta commande d'annonce 🤷‍♀️

#

le code depuis

const args = message.content.trim().split(/ +/g);```

jusqu'à

  if (message.content === prefix + "annonce") {
    if (message.member.hasPermission("ADMINISTRATOR")) {
      const embed = new Discord.RichEmbed()
      .setTitle("__Holotransmission__")
      .setDescription(args.join(" "))
      message.channel.send("Tout le monde")
      message.channel.send({embed})
    }
  }```
#

wut 🤔

#

il manque des trucs non?

#

(et enlève ton bot.login, on voit ton token)

compact sky
#

Tu veux tout le code ?

west plover
#

en privé si tu veux, moui 🤔

west plover
#

c réglé

compact sky
#

Oui merci désolé j'ai pas précisé

keen narwhal
#

J'aurai besoin d'une petite aide :/
Lors se que je veux par exemple crée une map avec le numéro du warn + sa raison

{
    "382195576374034444": {
        "warnings": {
            "1": ""
        }
    }
}

Je n'arrive pas a check le contenue de 1

"warnings": {
    "1": ""
}
#

J'ai essayé avec

if (warns[user.id].warnings[0]){
  warns[user.id] = {
    warnings: {
      "1": reason
    }
  };
 }```
#

Mais aucun résultat :/

slim anvil
#

Tu cherches à faire quoi là? Récupérer le warn existent ? La clé qui ressemble à id c’est l’id du user?

queen ocean
#

Plutôt un truc comme ça non ?

warns[user.id].warnings[« 1 »]
slim anvil
#

Mais sinon déjà ce serait cool de faire un tableau d’objet et pas un tableau clé valeur, comme ça tu pourras stocker celui qui a report, la raison, la date, l’ID du message par exemple enfin des infos importantes

weak grove
#

Salut ! J'ai un problème avec mon bot, j'ai fait un petit système pour join (j'ai pris de la doc) mon channel discord en fessant /join et j'aimerais qu'il émettent un son, j'ai fait le petit script sauf que cela me met une erreur

ERREUR :

TypeError [ERR_INVALID_ARG_TYPE]: The "file" argument must be of type string. Received type object
    at validateString (internal/validators.js:112:11)
    at normalizeSpawnArguments (child_process.js:398:3)
    at Object.spawn (child_process.js:534:16)
    at new FfmpegProcess (/home/test/node_modules/prism-media/src/transcoders/ffmpeg/FfmpegProcess.js:14:33)
    at FfmpegTranscoder.transcode (/home/test/node_modules/prism-media/src/transcoders/ffmpeg/Ffmpeg.js:34:18)
    at MediaTranscoder.transcode (/home/test/node_modules/prism-media/src/transcoders/MediaTranscoder.js:27:31)
    at Prism.transcode (/home/test/node_modules/prism-media/src/Prism.js:13:28)
    at AudioPlayer.playUnknownStream (/home/test/node_modules/discord.js/src/client/voice/player/AudioPlayer.js:97:35)
    at VoiceConnection.playStream (/home/test/node_modules/discord.js/src/client/voice/VoiceConnection.js:478:24)
    at /home/test/indextest.js:21:20 {
  code: 'ERR_INVALID_ARG_TYPE'
}
```
#

SCRIPT :

const Discord = require('discord.js');
const client = new Discord.Client();
const ytdl = require('ytdl-core');
const ffmpeg = require('ffmpeg');
const fs = require( "fs" );
const stream = fs.createReadStream('./test.mp3');

client.on('message', message => {
  // Voice only works in guilds, if the message does not come from a guild,
  // we ignore it
  if (!message.guild) return;

  if (message.content === '/join') {
    // Only try to join the sender's voice channel if they are in one themselves
    if (message.member.voiceChannel) {
      message.member.voiceChannel.join()
        .then(connection => { // Connection is an instance of VoiceConnection
        connection.playStream(stream);
          message.reply('I have successfully connected to the channel!');
        })
        .catch(console.log);
    } else {
      message.reply('You need to join a voice channel first!');
    }
  }
});
slim anvil
#

console.log ta variable stream ?

weak grove
#

ReadStream {
  _readableState: ReadableState {
    objectMode: false,
    highWaterMark: 65536,
    buffer: BufferList { head: [Object], tail: [Object], length: 1 },
    length: 65536,
    pipes: null,
    pipesCount: 0,
    flowing: null,
    ended: false,
    endEmitted: false,
    reading: false,
    sync: false,
    needReadable: true,
    emittedReadable: false,
    readableListening: false,
    resumeScheduled: false,
    paused: true,
    emitClose: false,
    autoDestroy: false,
    destroyed: false,
    defaultEncoding: 'utf8',
    awaitDrain: 0,
    readingMore: false,
    decoder: null,
    encoding: null
  },
  readable: true,
  _events: [Object: null prototype] { end: [Function] },
  _eventsCount: 1,
  _maxListeners: undefined,
  path: './test.mp3',
  fd: 17,
  flags: 'r',
  mode: 438,
  start: undefined,
  end: Infinity,
  autoClose: true,
  pos: undefined,
  bytesRead: 65536,
  closed: false
}
slim anvil
#

Yes voilà

#

ton erreur est que dans le

connection.playStream(stream);

tu passes un objet et non une string

#
The "file" argument must be of type string. Received type object
weak grove
#

ah :/ et comment le faire passez en string ?

slim anvil
#

fais un

connection.playStream(stream.path);

je pense

weak grove
#

nop c'est toujours un object

slim anvil
#

tu as restart et tu as toujours la meme erreur ?

weak grove
#

yep

slim anvil
#

No sé alors, car c'est bien une string stream.path

weak grove
#

sa donne ça en gros mon code

#
const Discord = require('discord.js');
const client = new Discord.Client();
const ytdl = require('ytdl-core');
const ffmpeg = require('ffmpeg');
const fs = require( "fs" );
const stream = fs.createReadStream('./test.mp3');

client.login('     ');


client.on('message', message => {
  // Voice only works in guilds, if the message does not come from a guild,
  // we ignore it
  if (!message.guild) return;

  if (message.content === '/join') {
    // Only try to join the sender's voice channel if they are in one themselves
    if (message.member.voiceChannel) {
      message.member.voiceChannel.join()
        .then(connection => { // Connection is an instance of VoiceConnection
        connection.playStream(stream.path);
          message.reply('I have successfully connected to the channel!');
        })
        .catch(console.log);
    } else {
      message.reply('You need to join a voice channel first!');
    }
  }
});
slim anvil
#

Mais pourquoi tu uses fs.crearteReadStream pour passer le lien

#

je sais pas comment fonctionne playtStream

#

mais passe lui directement le nom de ton fichier

#

avec le bon chemin

timid loom
weak grove
#

donc je supprime fs.createReadStream ?

timid loom
#

yes

#

et à la place de stream tu mets ton nom de fichier, ie './test.mp3'

weak grove
#
Error: Media must be provided
    at Function.verifyOptions (/home/test/node_modules/prism-media/src/transcoders/ffmpeg/Ffmpeg.js:13:31)
    at FfmpegTranscoder.transcode (/home/test/node_modules/prism-media/src/transcoders/ffmpeg/Ffmpeg.js:34:59)
    at MediaTranscoder.transcode (/home/test/node_modules/prism-media/src/transcoders/MediaTranscoder.js:27:31)
    at Prism.transcode (/home/test/node_modules/prism-media/src/Prism.js:13:28)
    at AudioPlayer.playUnknownStream (/home/test/node_modules/discord.js/src/client/voice/player/AudioPlayer.js:97:35)
    at VoiceConnection.playStream (/home/test/node_modules/discord.js/src/client/voice/VoiceConnection.js:478:24)
    at /home/test/indextest.js:21:20
    at processTicksAndRejections (internal/process/task_queues.js:94:5)
slim anvil
#

Le chemin est bon ?

weak grove
#

yep

#

const stream = '/home/test/test.mp3';

slim anvil
#

bah si ton index ou il y a ton code et au meme endroit que ton fichiier

#

tu peux sois faire ../test.mp3 ou ./test.mp3

#

euhh no pas le premier

#

juste ./test.mp3

weak grove
#

ouais c'est ça que j'avais fait mais sa marche pas

slim anvil
weak grove
#

au pire je peux mettre un lien ?

slim anvil
#

test yes

weak grove
#

toujours pareil

#

sa donne ça ducoup

slim anvil
#

et du coup dans le

connection.playStream(stream);

ne fonctionne pas ?

weak grove
#

nop la se me remet l'ancienne erreur

#

TypeError [ERR_INVALID_ARG_TYPE]: The "file" argument must be of type string. Received type object
at validateString (internal/validators.js:112:11)
at normalizeSpawnArguments (child_process.js:398:3)
at Object.spawn (child_process.js:534:16)
at new FfmpegProcess (/home/test/node_modules/prism-media/src/transcoders/ffmpeg/FfmpegProcess.js:14:33)
at FfmpegTranscoder.transcode (/home/test/node_modules/prism-media/src/transcoders/ffmpeg/Ffmpeg.js:34:18)
at MediaTranscoder.transcode (/home/test/node_modules/prism-media/src/transcoders/MediaTranscoder.js:27:31)
at Prism.transcode (/home/test/node_modules/prism-media/src/Prism.js:13:28)
at AudioPlayer.playUnknownStream (/home/test/node_modules/discord.js/src/client/voice/player/AudioPlayer.js:97:35)
at VoiceConnection.playStream (/home/test/node_modules/discord.js/src/client/voice/VoiceConnection.js:478:24)
at /home/test/indextest.js:21:20 {
code: 'ERR_INVALID_ARG_TYPE'
}

cyan igloo
#

Bonjour quelqu'un aurait un tuto ou la vague idée de comment relier un bot discord à un site web pour que depuis celui-ci on puisse modifier certaines commandes ou rajouter des commandes custom.

errant rampart
#

Renseigne toi du côté des websockets avec la lib socket.io, mais aussi expressjs

cyan igloo
#

ok merci je vais voir ca

errant rampart
#

C'est un gros morceau hein 👀

cyan igloo
#

euh notre bot est en python jsp si se que tu me dis est compatible

#

je sais

#

c'est un projet a pusieurs

errant rampart
#

Je connais pas les libs/techno en python, mais ça doit forcement exister

cyan igloo
#

pour le BAC

errant rampart
#

Après ce que moi je t'ai donné c'est pour faire du realtime, tu peux très bien faire 2 applis distincts qui utilise la même base de données 😉

#

Ton site, ton bot, même base de données

#

Pas de temps réel sur certains points, mais ça fera le taff

#

Surtout pour un projet de BAC

cyan igloo
#

ouais alors on avait prevu de faire sur la meme base de donnee

#

bon je vais voir merci

errant rampart
#

Bon courage, si tu as besoin d'aide, tu sais ou sonner -> gca

queen ocean
#

🔔

#

ding dong

cyan igloo
#

j'ai decouvert ce salon ily a une semaine et je pense que je vais souvent parler dedans

slim anvil
#

oui les sockets existent en python

#

mais c'est bcp + relou

#

Mais en gros @cyan igloo tu veux que quand tu fais une action sur ton site, hop répercussion sur le discord ?

cyan igloo
#

en gros comme pour mee6 ou yagpdb pouvoir creer des commandes custom via le site

keen narwhal
#

Normal que dans les logs du serveur il n'y a que les gens qui ont le droit de voir les logs ?

#

Enfin genre ont vois que les logs du staff sur discord :/

timid loom
keen narwhal
#

Oui

#

Il y a pas les logs quand un user delete sont message

timid loom
#

Parce que les seuls gens qui exécutent des actions qui sont notées dans les logs du serveur c'est (pour toi) les gens qui ont accès au logs

#

en fait quand quelqu'un supprime son message, ça va pas dans les logs

keen narwhal
#

Mais c'est nul ....

timid loom
#

C'est considéré comme de l'édition de message

keen narwhal
#

Car je ne peut pas savoir qui a delete le message

#

Sa dis moi alors que c'est lui même qui la delete

timid loom
#

et en soi dans les politiques Discord t'as pas le droit de stocker quelque chose qu'un utilisateur a édité ou supprimé

#

C'est comme ça

keen narwhal
#

Bruhh

timid loom
#

Il faudrait que je retrouve l'article mais voilà

keen narwhal
#

Pas sympas 😢

#
if (entry.executor.bot) return;
#

C'est quoi pour check si executor est un bot ?

timid loom
#

executor représente quoi ?

#

(en js)

keen narwhal
#

La personne qui as exécuté l'action ?

timid loom
#

c'est pas ce que je te demande
ça représente quoi concrètement

boreal edge
#

Bonsoir,

Est ce possible qu'a partir de l'éxècution d'une commande, le bot m'envoie le résultat d'une commande faites dans la CMD (Rasbian)

keen narwhal
#

@timid loom le nom de la personne

keen narwhal
#

Salut j ai un pb avec mon bot

#

je suis entrain de faire une commende play mes elle marche pas

keen narwhal
#

Super mais genre tu remarque pas un problème ?

#

La solution doit être une solution a mon avis

#

tu parle a qui ?

#

Bah a toi

#

. . .

#

Ta demande n'est pas du tous précise

#

En quel langage ?
Le code ?
Les erreurs ?

#

Enfin, tu pense réellement que l'on peut t'aider avec les seuls infos que tu nous à donner ?😕

#

oui pas con

#

c est du js

const ytdl = require('ytdl-core');

module.exports.run = async (client, message, args, op) => {
    if (!message.member.voiceChannel) return message.channel.send(":x: Veuillez-vous connecter a un salon vocal !");
    
    if (message.guild.me.voiceChannel) return message.channel.send(":x: Désolé le bot est déjà connecté à un salon vocal !");

    if (!args[0]) return message.channel.send(":x: Veuillez indiquer un URL !");

    let validate = await ytdl.validateURL(args[0]);

    if (!validate) return message.channel.send("L'URL ne semble pas etre valide.");

    let info = await ytdl.getInfo(args[0]);

    let connection = await message.member.voiceChannel.join();

    let dispatcher = await connection.play(ytdl(args[0], { filter: 'audioonly' }));

    message.channel.send(`Now Playing ${info.title}`);
}

module.exports.help = {

    name: "play"
  
  }
#

l'erreur

(node:11224) UnhandledPromiseRejectionWarning: Error: FFMPEG not found
    at Function.selectFfmpegCommand (c:\Users\Utilisateur\Desktop\Bot all\Bot test\node_modules\prism-media\src\transcoders\ffmpeg\Ffmpeg.js:46:13)
    at new FfmpegTranscoder (c:\Users\Utilisateur\Desktop\Bot all\Bot test\node_modules\prism-media\src\transcoders\ffmpeg\Ffmpeg.js:7:37)
    at new MediaTranscoder (c:\Users\Utilisateur\Desktop\Bot all\Bot test\node_modules\prism-media\src\transcoders\MediaTranscoder.js:10:19)
    at new Prism (c:\Users\Utilisateur\Desktop\Bot all\Bot test\node_modules\prism-media\src\Prism.js:5:23)
    at new VoiceConnection (c:\Users\Utilisateur\Desktop\Bot all\Bot test\node_modules\discord.js\src\client\voice\VoiceConnection.js:46:18)
    at c:\Users\Utilisateur\Desktop\Bot all\Bot test\node_modules\discord.js\src\client\voice\ClientVoiceManager.js:63:22
    at new Promise (<anonymous>)
    at ClientVoiceManager.joinChannel (c:\Users\Utilisateur\Desktop\Bot all\Bot test\node_modules\discord.js\src\client\voice\ClientVoiceManager.js:45:12)
    at VoiceChannel.join (c:\Users\Utilisateur\Desktop\Bot all\Bot test\node_modules\discord.js\src\structures\VoiceChannel.js:130:30)
    at Object.module.exports.run (c:\Users\Utilisateur\Desktop\Bot all\Bot test\Commandes\play.js:16:56)
warning.js:27
(node:11224) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 2)
warning.js:27
(node:11224) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
#

Tu n'a pas ffmpeg

#

et quand j instale ffmpeg

#

ffmpeg-static

#

il me met cette erreur

PS C:\Users\Utilisateur\Desktop\Bot all\Bot test> npm i ytdl-core
npm WARN enoent ENOENT: no such file or directory, open 'C:\Users\Utilisateur\Desktop\Bot all\Bot test\package.json'
npm WARN discord.js@11.5.1 requires a peer of @discordjs/uws@^10.149.0 but none is installed. You must install peer dependencies yourself.
npm WARN Bot test No description
npm WARN Bot test No repository field.
npm WARN Bot test No README data
npm WARN Bot test No license field.
npm ERR! code EBADPLATFORM
npm ERR! notsup Unsupported platform for fsevents@1.2.9: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})
npm ERR! notsup Valid OS:    darwin
npm ERR! notsup Valid Arch:  any
npm ERR! notsup Actual OS:   win32
npm ERR! notsup Actual Arch: x64

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\Utilisateur\AppData\Roaming\npm-cache\_logs\2020-02-24T15_56_50_637Z-debug.log```
#

et sa c est quand j effectue la commande

#

merci

zealous palm
#

Yo, petit problème

voici le code client.on("guildMemberAdd", user =>{
let joinEmbed = new Discord.RichEmbed()
.setColor(" #1eec37")
.setAuthor(user.user.username, user.user.displayAvatarURL)
.setDescription("✅ Bienvenue" + user + " sur le serveur" + user.guild.name + " !")
.setFooter(" Discord de la Moreau | Moreau Bot | Dev by Stan")
member.guild.channels.get('675670438927663124').send(joinEmbed);
})

#

et ça ne fonctionne point avec vous une solution ?

#

ReferenceError: member is not defined at Client.<anonymous> (c:\Users\Propriétaire\Desktop\Moreau Bot\index.js:127:5) at Client.emit (events.js:311:20) at Guild._addMember (c:\Users\Propriétaire\Desktop\Moreau Bot\node_modules\discord.js\src\structures\Guild.js:1298:19) at GuildMemberAddHandler.handle (c:\Users\Propriétaire\Desktop\Moreau Bot\node_modules\discord.js\src\client\websocket\packets\handlers\GuildMemberAdd.js:12:13) at WebSocketPacketManager.handle (c:\Users\Propriétaire\Desktop\Moreau Bot\node_modules\discord.js\src\client\websocket\packets\WebSocketPacketManager.js:105:65) at WebSocketConnection.onPacket (c:\Users\Propriétaire\Desktop\Moreau Bot\node_modules\discord.js\src\client\websocket\WebSocketConnection.js:333:35) at WebSocketConnection.onMessage (c:\Users\Propriétaire\Desktop\Moreau Bot\node_modules\discord.js\src\client\websocket\WebSocketConnection.js:296:17) at WebSocket.onMessage (c:\Users\Propriétaire\Desktop\Moreau Bot\node_modules\ws\lib\event-target.js:120:16) at WebSocket.emit (events.js:311:20) at Receiver.receiverOnMessage (c:\Users\Propriétaire\Desktop\Moreau Bot\node_modules\ws\lib\websocket.js:789:20)

west plover
#

l’erreur est plutôt explicite

#

member n’existe pas

#

dans ton code, user fait office de membre

#

donc c’est lui que tu dois use

zealous palm
#

donc à la place de user je mets member ?

slim anvil
#

Oui

zealous palm
#

fonctionne pas

west plover
#

C t l’inverse

zealous palm
#

c'est à dire ?

keen narwhal
#

bah a la place de member tu met user

keen narwhal
#

J'ai une question possible de crée un bot Discord en C ou C++ ?

timid loom
#

Je crois pas qu'il y ait des libs en C ou C++, mais en même temps ces langages sont plus dédiés à des applications qu'à des bots

#

Y a une liste ici de librairie

#

Après je pense que c'est possible de créer un bot en C ou en C++ mais je suis pas sûr que ça fonctionne bien quoi

keen narwhal
#

D'accord merci j'vais testé pour voir 😉

timid loom
#

Bah pour en faire un, comprends bien qu'il faut que tu fasse des requêtes REST ou WS sur l'api

#

Et bon bah typiquement une lib ça te permet de pas t'occuper de tout ça, refaire tout le système ça va te prendre beaucoup de temps

#

que tu le fasses en C ou en Go ou en je sais pas quoi

keen narwhal
#

A ouais c'est dans ce délire la, comme tu le dit ça va va prendre beaucoup de temps pour pas grand chose j'vais retourné sur du bon vieux js 😉

lone flax
#

Bonjour,
Je n'arrive pas à récupérer un message par son ID avec fetchMessage...
Quelqu'un aurait un exemple pour m'aider ?

slim anvil
#
message.channel.fetchMessage(id)
floral bolt
#

Bonsoir je cherche à reload un message reaction après que le bot est démarrer car à chaque reboot du bot la réaction ne fonctionne plus

timid loom
#

Alternativement, tu peux cacher le message avant de l'utiliser

#

avec quelque chose du genre

client.channels.get(chanid).fetchMessage(msgid);```
#

dans ton event 'ready' par exemple

#

Mais ça devient vite lourd si tu veux le faire sur beaucoup de messages

icy salmon
#

Salut, je galère à faire fonctionner mon bot, je m'explique : Je veux que mon bot, lorsqu'un utilisateur rejoint mon serveur, lui envoie un message en privée ET dans un salon du discord.
Mon code ressemble à ça pour le moment :

const { Client } = require("discord.js");
const { TOKEN, PREFIX } = require("./config");
const client = new Client();

client.on("message", msg => {
  if (msg.author.bot) return;
  const args = msg.content.split(/ +/g);
  const cmd = args.shift().toLowerCase();
  if (cmd === `${PREFIX}ping`) msg.channel.send("Pong!");
});

client.on("guildMemberAdd", member => {
  member.send("Salut !");
  const channel = client.channels.get(682139234362064959);
  channel.send(`${member} a rejoint le serveur !`);
});

client.login(TOKEN);

client.on("ready", () => { console.log(`Connecté en tant que ${client.user.tag} !`); });
client.on("error", console.error);
client.on("warn", console.warn);
client.on("debug", console.log);

Le problème c'est que lorsque je lance mon bot, tout se passe bien, mais une fois que je connecte mon double compte le bot s'éteint avec ce message d'erreur :

#
C:\Users\Syno\Desktop\Synobot 2.0\main.js:14
  const channel = client.channels.get(682139234362064959);
                                  ^

TypeError: client.channels.get is not a function
    at Client.<anonymous> (C:\Users\Syno\Desktop\Synobot 2.0\main.js:14:35)
    at Client.emit (events.js:311:20)
    at Object.module.exports [as GUILD_MEMBER_ADD] (C:\Users\Syno\Desktop\Synobot 2.0\node_modules\discord.js\src\client\websocket\handlers\GUILD_MEMBER_ADD.js:16:14)
    at WebSocketManager.handlePacket (C:\Users\Syno\Desktop\Synobot 2.0\node_modules\discord.js\src\client\websocket\WebSocketManager.js:384:31)
    at WebSocketShard.onPacket (C:\Users\Syno\Desktop\Synobot 2.0\node_modules\discord.js\src\client\websocket\WebSocketShard.js:437:22)
    at WebSocketShard.onMessage (C:\Users\Syno\Desktop\Synobot 2.0\node_modules\discord.js\src\client\websocket\WebSocketShard.js:295:10)
    at WebSocket.onMessage (C:\Users\Syno\Desktop\Synobot 2.0\node_modules\ws\lib\event-target.js:120:16)
    at WebSocket.emit (events.js:311:20)
    at Receiver.receiverOnMessage (C:\Users\Syno\Desktop\Synobot 2.0\node_modules\ws\lib\websocket.js:800:20)
    at Receiver.emit (events.js:311:20)
#

Si quelqu'un a une piste je suis preneur, sachant que j'ai essayé aussi d'utiliser client.channels.find()

keen narwhal
#

Rajoute des guillemets

#

A ton id

#

Et tu doit présicer quel Guild

#

Car la ton bot ne sait pas sur qu'elle Guild il doit get/find l'id @icy salmon

icy salmon
#

Sachant qu'il est uniquement sur mon discord, et que je compte pas le partager, c'est nécessaire quand même sachant qu'il y a client ?

#

J'ai essayé avec guild.client.channels.get() et client.guilds.channels.get() mais ça ne fonctionne toujours pas

keen narwhal
#

Tu doit spécifié quel Guild

#

Quand tu dis qu'une personne rejoint le discord

#

Dis toi que c'est quand une personne rejoins un discours et non le tien en particulier

icy salmon
#

Oook

keen narwhal
#

Donc il te faut define la Guild

#

Et tu peux pas mettre un client.guilds pour un Guildmemberadd

icy salmon
#

Donc je dois faire une déclaration de variable guild qui va stocker le discord ?

keen narwhal
#

Oui

icy salmon
#

D'acc je testerais ça après merci beaucoup

keen narwhal
#
const GuildServer = client.guilds.get(IdDeTaGuild);```
#

Et du coup tu n'a plus qu'a faire

const channel = GuildServer.channels.get(682139234362064959);
channel.send(`${member} a rejoint le serveur !`);
#

@icy salmon

icy salmon
#

Ok c'est ce que j'avais en tête avec ce que tu m'as dis

#

Merci encore

crimson fern
#

Fireless, l'id d'un channel est unique donc inutile de mettre un guilds.get 🤔

icy salmon
#

TypeError: client.guilds.get is not a function

floral bolt
#

@timid loom merci, mais l'id message change à chaque fois non ?

keen narwhal
#

envoie ton code @icy salmon

#

@floral bolt Non

#

Enfin

#

Chaque message a sont ID a lui

keen narwhal
#

Salut j ai un pb avec ma commande

#

a chaque fois que je la fais elle me rep je ne trouve pas l'id

#

et je n'ai pas d erreur dans la console

icy salmon
#

Bah c'est le même qu'avant, mais avec ta proposition @keen narwhal

keen narwhal
#

C'est cette méthode pour récupérer le channel vocal où est le bot ?

var botChannel = client.voiceChannel;
west plover
#

Il doit être sur la guild est pas sur le client

#

puisque tu peux connecter ton bot à plusieurs vocaux

keen narwhal
#

Donc

var botChannel = message.guild.voiceChannel;
west plover
#

après regarde la doc hein

marsh drift
#

Une méthode sans parenthèse, ça s'appelle une property au passage (ça c'est pour la variable/const de l'autre fois sue sait on jamais si des débutants lisent ça...)

slim anvil
#

Et toc

keen narwhal
#

play.js

const ytdl = require('ytdl-core');

exports.run = async (client, message, args) => {
    if (!args[0]) return message.channel.send("Spécifie le lien de la musique");
    const connection = await message.member.voiceChannel.join();
    const dispatcher = connection.playStream(ytdl(args[0], { filter:'audio' }), { volume: 0.50 });
}

volume.js

const dispatcher = require('./play.js')(dispatcher);

exports.run = function (client, args) {
    dispatcher.setVolume(args[0]);
}

erreur lors de la commande volume

ReferenceError: Cannot access 'dispatcher' before initialization
west plover
#

Tu appelles la fonction de ton fichier play.js avec une variable que tu est entrain d’initialiser

fringe wyvern
#

Salut j'ai repris mon bot suggestion et pour le moment j'ai encore un problème, j'arrive pas à choper le nombre exact de réactions sur un message, je vous montre le code:

const filter1 = (reaction) => reaction.emoji.name === msg.guild.emojis.get('667926682363101184').name;

msg.awaitReactions(filter1, {time: args[1]*1000}).then(collected => {
  reac1 = collected.size
  console.log(reac1)
});

et ça me sort 1 à chaque fois, j'ai déjà testé length et count et ça me sortait undefined (quand je print que collected et que je regarde dans la table qui est sortie, le length est aussi sur 1)

cyan igloo
#

Bonjour j'aimerais savoir comment récuperer l'id du System Messages Channel (channel ou les gens arrivent).

crimson fern
#

l'ip ?

cyan igloo
#

Euh je voulais dire ID

#

Et j'ai oublié de préciser que c'était en python

keen narwhal
#
exports.run = async (client, message, args, guild) => {

    function Board(userstag) {
        message.channel.send(userstag);
    }

    if (args[0] || !args[1]) {
        guild.roles.get(args[0]).members.map(u => {
            let userstag = u.user.tag;
            Board(userstag)
        }
        );
    } else if (args[1] || !args[2]) {
        guild.roles.get(args[0] && args[1]).members.map(u => {
            let userstag = u.user.tag;
            Board(userstag)
        }
        );
    } else if (args[2] || !args[3]) {
        guild.roles.get(args[0] && args[1]).members.map(u => {
            let userstag = u.user.tag;
            Board(userstag)
        }
        );
    }
}```
Le problème est que ma fonction (Board) envoie chaque tag des joueurs un par un, et je ne sait pas et je ne trouve pas comment tous stocké pour l'implémenter dans un embed par la suite
west plover
#

(ça devrait être ça)

cyan igloo
#

Je vais voir

#

ça

slim anvil
#

@keen narwhal dans ta boucle tu push tout dans un tableau et ensuite tu l’envoies à ta fonction Board

keen narwhal
#

D'accord, je vais faire mes recherche avec t'es mot clé, Ty

crimson fern
#

Bonsoir, avez-vous une idée de la facon de fetch un message dans un dmchannel d'une personne au démarrage du bot

west plover
#

tu fais ton fetch dans l'event ready

crimson fern
#

Bah

#

Je sais ca mais le problème, c'est que je ne sais pas comment trouver le channel

#

je sais fetch le message ect, mais je ne trouve pas le dmchannel

west plover
#

faut que t'ai l'ID de l'user d'abord

#

pour le fetch et ensuite récupérer son dmChannel

crimson fern
#

Bah pour l'instant j'ai essayé ca mais je crois que c'est bizarre

client.users.get('524985759695110145').fetchMessage('683057724883599385')```
west plover
crimson fern
#
client.users.get('524985759695110145').dmChannel```

me return null

cyan igloo
#

Bon ducoup merci guthen ça marche

ancient sonnetBOT
#
Citation de Arkov Le Chauve#6348 posté dans #aide-bots

Cliquez sur 📄 pour accéder au message.

Salut j'ai repris mon bot suggestion et pour le moment j'ai encore un problème, j'arrive pas à choper le nombre exact de réactions sur un message, je vous montre le code:

const filter1 = (reaction) => reaction.emoji.name === msg.guild.emojis.get('667926682363101184').name;

msg.awaitReactions(filter1, {time: args[1]*1000}).then(collected => {
  reac1 = collected.size
  console.log(reac1)
});

et ça me sort 1 à chaque fois, j'ai déjà testé length et count et ça me sortait undefined (quand je print que collected et que je regarde dans la table qui est sortie, le length est aussi sur 1)

fringe wyvern
#

Quelqu'un sait du coup ?

west plover
#

et si tu utilises message.reactions? 🤔

#

genre tu boucles dessus avec un compteur que t’incrémente

spring dock
#

normalement il a pas besoin de boucler il fait length ou count ça marche si c’est le bonruc

#

je crois

timid loom
#
let size = msg.reactions.get(emojiId).count;```
#

👀

#

ilfolirladoc

#

@fringe wyvern

fringe wyvern
#

ok nickel ca marche

#

j'avais juste pas mis le get(emojiId)

west plover
#

@spring dock g dis la boucle pour qu’il compte uniquement les emojis qui l’intéresse et pas tous harold

lone flax
#

ALED

#

Je fais des requêtes SQL dans mon bot via une fonction custom, le soucis c'est que quand je fais appel à ma fonction que je stocke dans une variable, bah la requête SQL prend du temps et donc ma variable est égale à undefined

#

Comment je peux faire en sorte que le code en dessous ne soit pas exécuté tant que la variable ne soit pas... une réponse ? 🙂

boreal edge
#

.then

lone flax
#

J'ai essayé avec await mais j'pige rien

#

Mais je peux pas .then sur du undefined

#

J'ai déjà essayé

boreal edge
#

Moi je sais que sa avait fonctionner pourtant sur un channel.get

lone flax
#

Ouais mais là c'est une requête SQL

#

Et ça marche pas j'ai déjà try

#

Du coup j'suis paumé :/

#

Je peux me débrouiller avec des interval mais bon aled

hazy mirage
#

const ab = await func();
<ton code avec le ab>...

#

Si ça marche toujours pas faudrait passer par une promise il me semble lolwhatthink

slim anvil
#

Il faut que tu déclares ta fonction en asynchrone aussi

#

async getData () => {}

#

Et dedans ton await

lone flax
#

Je la met sur ma fonction qui fait la requête SQL ?

#

Bon allez on va essayer ça

slim anvil
#

Screen ta fonction qu’on voit comprend tu procèdes exactement

lone flax
#
    // Send a SQL request
    sendSQL: function sendSQL(sqlRequest) {
        // Check con
        if (!sqlCon) {
            return false;
        }

        // Send SQL request
        sqlCon.query(sqlRequest, (err, rows) => {
            if (err) throw err;
            return rows;
        });

    }
slim anvil
#

je suis sur tel du coup compliqué la lecture là mais ce serait sans dire de connerie
async function sendSQL()

lone flax
#

Et le return rows; se transforme en return await rows; ?

slim anvil
#

tu peux screen plutôt please ? Et où est ce que tu l’appelles aussi

lone flax
#

Ok je te screen ça

slim anvil
#

Que je puisse avoir une meilleure visibilité car la c’est galère 😂

lone flax