#javascript-typescript

1 messages · Page 41 of 1

slim anvil
#

erreur http 429

#

to many requests

plush lava
#

Ah erreur

#

Fallait préciser

slim anvil
queen ocean
#

@humble storm les limites sont sur plusieurs plans ... messageid, channelid, guildid, token du bot, token de celui qui a crée l’app

rough tide
#

yo , désolé de déranger a une heure si tardive mais comment on peut faire pour avoir une presence avec notre bot qui change ?
genre c'est le nombre de personne dans le serveur , puis 5secondes plutard c'est le prefix , puis le nombre de personnes etc...
c'est possible ?

plush lava
#

Yep avec un "timer"

#

Parcontre vu que ça fait quand même assez longtemps que j'ai pas dev de bot, je t'avoue que je ne sait plus trop comment faire 👀

#

j'ai retrouvé, c'est avec un setInterval

#
setInterval(() => {
// Code à executer
    }, 10000); // Timer en millisecondes, ici c'est toutes les 10 secondes
});```
rough tide
#

ouep j'ai vu le setInterval mais j'ai pas compris comment l'utilisais dans mon cas

#

oue , ca execute le code toutes les 10secondes

#

mais moi je veux alterner entre deux codes

#

c'est a dire entre setactivityA et setactivityB

#

j'ai penser a timeout

plush lava
#

nope, déjà le setinterval met le dans ton event 'ready'

rough tide
#

non , parceque j'veux qu'ca soit une commande

#

genre !presence

#

et ca m'fait mon truc

plush lava
#

bah c'est la même chose sans le event 'ready' alors 👀

rough tide
#

mais j'vois toujours pas en quoi ca va m'aider le setinterval xd

#

parceque du coup , j'veux alterner entre deux activité

#

pas faire un activité toutes les 10secondes

#

oh , ca marche merci !

plush lava
#

👀

keen narwhal
#

Bonjour j'ai suivis le tuto pour le dev de bot en lua mais j'ai une erreur là voici : TLS not supported Maybe [SSLv3] SSLv23 TLSv1 TLSv1_1 TLSv1_2 DTLSv1 [SSLv2], option followed by _client or _server default is TLSv1 voici mon code : ``` local discordia = require("discordia")
local client = discordia.Client()

client:on("messageCreate", function(message)

local content = message.content
local member  = message.member 
local memberid = message.member.id 

if content:lower() == "!ping" then
    message:reply("Pong!")
end

end)

client:run("Bot") ``` J'ai essayé de refaire le code de regénérer un token mais sans succès

#

Merci de votre aide

west plover
#

(on voit ton token, enlève le du code)

slim anvil
keen narwhal
#

Merde.. pas fait gaffe merci @west plover

west plover
#

sinon, t'es sûr que c'est une erreur ? thinkgeometric

keen narwhal
west plover
#

essaye de delete deps/secure-socket

#

et de le réinstaller avec lit install luvit/secure-socket

keen narwhal
#

ok merci

#

J'ai toujours la même erreur malgré la réinstallation

west plover
#

Essaye de réinstaller luvit thinkgeometric

keen narwhal
west plover
#

abasuper

keen narwhal
#

Il me manquais juste un fichier ^^

west plover
#

no problem 👌

keen narwhal
#

🙂

plush lava
#

@keen narwhal change ton token aussi on sait jamais

keen narwhal
#

c'est réglé ^^ merci quand même

plush lava
#

Car un filou aurait pu le prendre en scred et plus tard pourrait te niquer

slim anvil
#

👀👀👀

plush lava
#

Oui nan mais ton token

slim anvil
#

Régénère le

#

On sait jamais yep

keen narwhal
#

c'est fait aussi ^^

plush lava
#

Ah d'accord

keen narwhal
#

^^

#

merci quand même de me prévenir

dire latch
#

Bonjour/bonsoir,

quelqu'un saurait faire un bot music discord sur un vps ? J'y arrive pas.

Merci d'avance.

slim anvil
#

tu n'arrives pas à ?

dire latch
#

Que le bot joue la music

#

Aucune erreur

#

Et le bot ne joue pas la music

#

Le code:

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

module.exports.run = async (bot, message, args) => {
  if (!message.member.voiceChannel) return message.channel.send("Connectez-vous à un salon vocal.");
  if (message.guild.me.voiceChannel) return message.channel.send("Le bot est déjà connecté dans un salon vocal.");
  if (!args[0]) return message.channel.send("Merci de mettre un lien Youtube.");
  const validate = await ytdl.validateURL(args[0]);
  if (!validate) return message.channel.send("Le lien n'est pas un lien Youtube.");
  const info = await ytdl.getInfo(args[0]);
  const connection = await message.member.voiceChannel.join();
  const dispatcher = await connection.playStream(
    ytdl(args[0], { filter : 'audioonly' })
  );
  message.channel.send(`Musique ajoutée: ${info.title}`);
  dispatcher.on('error', e => {
  });
};

module.exports.help = {
  name: "play"
};```
rough tide
#

@keen narwhal c'est possible de dev un bot en lua ???

keen narwhal
#

Oui @rough tide

rough tide
#

autant dev en js xd

#

mais si tu connais bien le lua

#

fonce

keen narwhal
#

Je crois que je vais me reconvertir en JS je comprends rien au dev bot mdr , le fonctionnement n'est pas comme je fais d habitude xD

rough tide
#

Bonsoir , j'ai une commande qui me permet de traduire le texte en une autre police. Voici le code

#
async function police1 (text, message) {
  var texte = text.replace(/a+/g, "𝙖")
        texte = texte.replace(/b+/g, "𝙗")
        texte = texte.replace(/c+/g, "𝙘")
        texte = texte.replace(/d+/g, "𝙙")
        texte = texte.replace(/e+/g, "𝙚")
        texte = texte.replace(/f+/g, "𝙛")
        texte = texte.replace(/g+/g, "𝙜")
        texte = texte.replace(/h+/g, "𝙝")
        texte = texte.replace(/i+/g, "𝙞")
        texte = texte.replace(/j+/g, "𝙟")
        texte = texte.replace(/k+/g, "𝙠")
        texte = texte.replace(/l+/g, "𝙡")
        texte = texte.replace(/m+/g, "𝙢")
        texte = texte.replace(/n+/g, "𝙣")
        texte = texte.replace(/o+/g, "𝙤")
        texte = texte.replace(/p+/g, "𝙥")
        texte = texte.replace(/q+/g, "𝙦")
        texte = texte.replace(/r+/g, "𝙧")
        texte = texte.replace(/s+/g, "𝙨")
        texte = texte.replace(/t+/g, "𝙩")
        texte = texte.replace(/u+/g, "𝙪")
        message.channel.send(texte)
#

(j'ai pas mis toutes les lettres parcequ'il y'as aussi les majuscules xd)

#

sauf que quand je met deux lettres cotes a cotes , ca me traduit qu'une seule lettre

#

c'est a dire si je traduit dd , j'obtiens que 𝙙

#

une solution ?

slim anvil
#

hello @rough tide essaye avec ça:

texte = texte.replace(new RegExp('a', 'g'), '𝙖')

pour ton truc de majuscule, sauf si ton character est différent tu peux juste lowercase() ta string avant comme ça tu gères maj et minuscule

Maintenant je te conseille de faire une fonction pour ça, que ce ne soit pas redondant, genre:

replaceCharacter = (value, regex, type, newValue) => {
  let string = value.replace(new RegExp(regex, type), newValue)
  return string
}

et du coup

replaceCharacter(texte, 'a', 'g', '𝙖')
#

comme ça à blanc ça devrait etre bon, si ça marche pas essaye de check peut etre oublié un truc

rough tide
#

@slim anvil ouep different

slim anvil
#

??

#

Ah ok 👌

slim anvil
#

Sinon @rough tide plus clean enfaite en relisant ton code, tu devrais juste faire une boucle sur les différents characters a remplacer et voir a chaque tour de boucle si dans ta string il y a le character et hop, ce sera mieux que d'appeler 10 fois la meme fonction

rough tide
#

comment ca ?

slim anvil
#

Tu déclares avant un tableau associatif (clé/valeur), et tu boucles dessus

#

avec [ 'a': '𝙖', ....]

humble storm
#

@keen narwhal Discordia fonctionne très bien info_player_think

keen narwhal
#

Oui je ne dis pas le contraire @humble storm c'est le fonctionnement que je ne saisis pas trop pour l'instant ^^

humble storm
#

C'est-à-dire ?

keen narwhal
#

C'est à dire par exemple si je veux envoyer un message dans un autre Channel en faisant une commande pour prévenir un admin par exemple c'est impossible de trouver comment faire ^^

humble storm
#

Bah si ^^

slim anvil
#

de toute façon c'est mieux en JS, point kappa

humble storm
#

Et de là tu send ton message

keen narwhal
#

C'est quoi le guilde ?

#

Merci

humble storm
#

Guild = serveur discord

keen narwhal
#

D'accord merci

#

Comment sa s'utilise ?

#

getChannel(idDeMonChannel) ?

slim anvil
#

bah là tu passes l'id de ton salon je suppose

keen narwhal
#

Oui je suppose aussi mais comment faire pour reply le msg dans le bon salon

slim anvil
humble storm
#

message.guild:getChannel( id ):send( "Ton message" )

slim anvil
#

faut lireeeeeeeeee

humble storm
#

Exactement, faut lire, et là tu verras que c'est simple

keen narwhal
#

Oui le msg c'est bon c'était pour comment lier les 2 pour l instant je ne trouve pas de logique mais sa commence petit à petit a être logique car je l'ai travaillé le reply ^^ pour être sur de le comprendre

slim anvil
#

Pour envoyer ton message dans un autre channel ?

keen narwhal
#

Oui

humble storm
#

message.guild:getChannel( id ):send( "Ton message" )

keen narwhal
#

Je l'ai vu tqt merci

humble storm
#

Par exemple pour #giveaway ça serait
message.guild:getChannel( "653405704723496990" ):send( "Ton message" )

keen narwhal
#

En gros message.guild est une fonction ?

humble storm
#

Non

keen narwhal
#

Ah

humble storm
#

C'est une variable incluse dans le message

keen narwhal
#

Ah d'accord

humble storm
#

Comme si tu faisais SWEP.PrintName

keen narwhal
#

Ah ouiiii ^^

slim anvil
#

c'est le getChannel ta fonction

#

je sais pas si en lua c'est comme JS mais les fonctions ont des ()

keen narwhal
#

Oui aussi

slim anvil
#

message c'est un objet avec la clé .guild

keen narwhal
#

D'accord sa fait partie d'un tableau ou pas du tout et je m'égare ?

slim anvil
#

message c'est un object {} mais dedans tu peux avoir des pleins de type, des arrays, strings, object, int

#

encore une fois je te parle en JS, mais je pense que pour mieux comprendre log ton object message et tu verras comment il est composé

humble storm
#

Oui c'est un genre de tableau Nox

keen narwhal
#

D'accord merci

keen narwhal
#

Je reviens vers vous pour savoir comment est il possible de garder mon bot toujours en ligne , il faut mettre sur un site web directement ?Merci de votre réponse

slim anvil
#

Sur un petit serveur, lua je pense pareille

keen narwhal
#

D'accord donc je peux le mettre sur mon VPS ou sur mon site web ?

slim anvil
#

Sur ton VPS yep

keen narwhal
#

ok merci

keen narwhal
#

On peut retirer une partie d'un message un genre de string.Replace ?

slim anvil
#

check les fonctions lua du coup

keen narwhal
#

d'accord merci

slim anvil
#

:gsub("%^a", "") j'ai trouvé ça

keen narwhal
#

je suis habitué au fonctions internes de GMOD j'ai pas encore pris le réflexe ^^

slim anvil
#

mais j'y connais rien a lua donc bon, mais la syntaxe à l'air bone

#

l'exemple complet sera plus parlant:

name = "^aH^ai"
name = name:gsub("%^a", "")
keen narwhal
#

sa doit donner sa du coup ? ``` message.guild:getChannel( "661135450525925378" ):gsub("!staff", ""):send( message.content )

slim anvil
#

No tu dois :gsub ton message.content

keen narwhal
#

quoi ? je dois le mettre après le send ?

#

ou message.content:sub

slim anvil
#

bah tu peux le faire avant dans une variable je pense, ou direct dans ton :send(message.content:gsub(.....))

keen narwhal
#

d'accord je pense faire en premier la 2ieme option le temps de bien la connaitre merci une nouvelle fois 🙂

#

tu sais pourquoi le content n'apparaît pas ? : if content:lower() == "!staff "..content then message.guild:getChannel( "661135450525925378" ):send( message.content:gsub("!staff", "") ) end

plush lava
#

Le JS c'est définitivement mieux que le lua niveau création de bot oof

keen narwhal
#

xD

slim anvil
#

bah je connais pas du tout le lua donc le ..content then je vais pas savoir son but

#

mais par contre tu fais une condition sur content:lower()

keen narwhal
#

le content c'est ma variable

slim anvil
#

mais ce n'est pas message.content: ?

keen narwhal
#

si mais j'ai fais une variable ^^ du coup et je l'ai juste tester comme sa car dans les 2 cas il ne me redonne pas le content

slim anvil
#

mais il fait quoi le ..content then

#

apres le == "!staff"

keen narwhal
#

pour retourner tout le message car si je fais sans le ..content bah il ne va pas exécuter la condition

slim anvil
#

mais tu peux juste faire un `if content:lower() == "!staff" then``

spring dock
#

@slim anvil le .. c’est pour concatenate

#

(+ en js

slim anvil
#

ah ok mais concatener quoi

spring dock
#

)

keen narwhal
#

Oui mais du coup sa ne retourne pas tout le message

spring dock
#

j’sais pas j’avoue j’comprends pas son truc

keen narwhal
#

concatener sa : local content = message.content

spring dock
#

wtf

keen narwhal
#

En gros je veux récupérer tout le message du membre

#

juste après la commande

slim anvil
#

Fais le avant

keen narwhal
#

mais du coup comment je valide bien qu'il fasse la commande ?

slim anvil
#

En lua je serais pas te dire vraiment, mais en JS tu en gros transformer ta string en tableau, prendre le premier élement du tableau qui va donc etre la commande

#

je sais pas si c'est clair, sinon fais du JS je t'aiderai plus facilement kappa

keen narwhal
#

d'accord je teste de le faire

west plover
#

Wat do u want to do ?

#

Tu veux juste split ton texte pour récupérer les arguments

keen narwhal
#

je veux récupérer ce qu'il y a après !staff quand l'user le fait

west plover
#

Tu peux faire un content = string.gsub( content, "!staff", "" ) pour enlever la commande du content

#

Sinon tu fais une fonction qui split pour récupérer chaque arguments thinkgeometric

keen narwhal
#

Oui sa c'est bon mais c'est ma condition qui n'arrive pas a être validé

#

ma condition actuel : ``` if content:lower() == "!staff" then
message.guild:getChannel( "661135450525925378" ):send( message.content:gsub("!staff", "") )
end

#

et je voudrais récupérer ce qu'il y a écrit après !staff

slim anvil
#

Mais ton content n'est pas === a !staff

#

^^

#

Il faut dans ce cas que tu regardes si il startsWith() cherche l'équivalent en lua

keen narwhal
#

oui je sais j'ai enlevé les modifs qui n'allait pas de ce matin

west plover
#

Une fonction que je viens de faire pour récupérer les arguments d’un texte (séparation des espaces) :

local function get_args( txt )
    local args = {}
    
    for w in txt:gmatch( "[^ ]+" ) do
        args[#args + 1] = w
    end
    
    return args
end

--  > Utilisation 
for i, v in ipairs( get_args( "!hi fuckers @floral burrow" ) ) do
    print( i, v )
end

Output:

1    !hi
2    fuckers
3    @floral burrow
#

Donc avant la condition, tu transforme ton texte en arguments (avec cette fonction par exemple ^) et tu vérifies si le premier argument est la commande souhaitée

marsh drift
#

\S+ ? en plus simple ?

west plover
#

Pour un startsWith faudra le faire soit-même aussi, mais avec les patterns ça ira tout seul

slim anvil
#

trofor guthen

west plover
#

Lua accepte pas ce type de pattern je crois bien

marsh drift
#

\S ?

#

\\S?

#

mais ok tant pis

west plover
#

Je n’ai pas de résultat avec \\S+

marsh drift
#

use a regular expression library like lrexlib or Lua PCRE, or use LPeg arf pas en PCRE en lib standard tant pis

west plover
#

!glua Patterns

ancient sonnetBOT
#
west plover
#

Que ces types de patterns sont autorisés ^ 🤷

marsh drift
#

effectivement pas fou 🙂 sinon 👍

#

pourquoi y'a pas %g dans sa doc ?

#

lien depuis ton lien

west plover
#

Bien vu, il fonctionne, je ne le connaissais pas celui là

marsh drift
#

c'est une doc light la doc de garrysmod?

#

(juste pour savoir)

west plover
#

I don’t know thinkgeometric

#

C’est fait par la communauté il me semble

#

Y a du avoir quelques oublis

keen narwhal
#

Par contre je vois pas trop comment faire la condition là ^^

marsh drift
#

ok ok, j'avoue ça doit être long a faire déjà

keen narwhal
#

Comme sa ? ``` if content:lower() == get_args(args[1]) then

west plover
#

fais une variable dans laquelle tu stockes get_args( content )

#

par exemple dans args

#

et tu check de cette façon if "!staff" == args[1] then

keen narwhal
#

Yes merci sa fonctionne 🙂

#

C'est normal que je n'arrive pas a get l'auteur du message en faisant : message.guild.members:get(message.author)

#

Merci de m'éclairer sur ce point ^^

west plover
#

message.author pour l'user et message.member pour le membre

#

(si c'est comme en JS, c'est ça, normalement y a pas de raison)

keen narwhal
#

Enfaîte c'est bizarre sa me mets sa comme erreur : attempt to concatenate field 'member' (a table value) alors que quand je vais check dans le wiki et je regarde le tuto c'est la même chose que ce tu me proposes

west plover
#

tu veux concatener un string avec une table

#

logic que ça fonctionne pas

#

message.member.toString() peut-être ?

keen narwhal
#

je vais check

#

fonctionne pas : attempt to call field 'toString' (a nil value) j'ai essayé de le mettre en minuscule aussi

west plover
#

vraiment nul Discordia kappo

keen narwhal
#

mdrrr

#

j'arrive a faire afficher l'id de l'user mais pas le nom ^^

slim anvil
#

grave go discord js :@@@

west plover
#

"<@" .. message.member.id .. ">"

#

ça c pour le tag ^

keen narwhal
#

Yes sa fonctionne merci ^^

#

osef au moins son nom apparaît xD

west plover
#

sinon message.member.user.username

#

ou message.author.username

#

pour juste afficher le nom

keen narwhal
#

Ah oui nickel

#

ah et le wiki de discordia il sert ou pas du tout ?

west plover
#

je sais pas s'il y en a un kappo

keen narwhal
west plover
#

si du coup

keen narwhal
#

D'accord ^^

west plover
#

pour connaitre les variables (properties) et les fonctions (methods) de chaque classe

keen narwhal
#

d'accord ^^

west plover
#

et en lua

keen narwhal
#

mdrrr

#

comment je fais pour que si le user marque dans le salon 1 il return "" ?

west plover
#

tu check le nom ou l'id du channel

#

message.channel

keen narwhal
west plover
#

id n'est pas une fonction

keen narwhal
#

Oui je l'ai changé en : if message.channel.id == "661135450525925378" then return "" end

#

mais il me mets toujours le content

west plover
#

regarde si ton code s'exécute

keen narwhal
#

Ma condition s'exécute bien

#

j'ai fais un print()

west plover
#

code ?

keen narwhal
#

if message.channel.id == "661135450525925378" then print("coucou") return "" end

#

je viens aussi d'essayer message.content = ""

west plover
#

all of your code

keen narwhal
#
local client = discordia.Client()


local function get_args( txt )
    local args = {}
    
    for w in txt:gmatch( "[^ ]+" ) do
        args[#args + 1] = w
    end
    
    return args
end


client:on("messageCreate", function(message)

    local content      = message.content
    local memberid     = message.member.id 
    local mentionned = message.mentionedUsers 
           args        =    get_args( message.content ) 
     local salonid    = message.channel.id

    if message.channel.id == "661135450525925378" then print("coucou") return "" end

     if  "!staff" == args[1] then  
        message.guild:getChannel( "661135450525925378" ):send( message.content:gsub("!staff", "").." -"..message.author.username )  
 
   end 
end) ```
west plover
#

c'est quoi le but ?

keen narwhal
#

Recevoir les messages des joueurs dans un autre channels pour pouvoir avoir une traçabilité de toutes les demandes et sans encombrer un channel et surtout garder privé les informations

west plover
#

et ta condition ? thinkgeometric

keen narwhal
#

la 1ere ?

west plover
#

keen narwhal
#

je souhaitais faire en sorte que quand il envois le message dans le channel avec cette id et bah le msg soit directement retiré

west plover
#

donc message.delete()

slim anvil
#

Va falloir regarder la doc à un moment aussi et pas demandé dès que tu ne sais pas

spring dock
#

c'est quoi la doc ? pandawtf

rough tide
#

encore une fois dev en lua c'est chaud

#

bonne chance a toi

west plover
#

wut

slim anvil
#

c'est pas plus compliqué que JS 🤔

#

aucun n'est facile et en même temps aucun n'est compliqué

#

Surtout que ça reste des trucs assez lambda finalement, c'est juste lire de la doc pour choisir quelle fonction utilisé

#

et par moment quelques fonctions JS à faire

west plover
#

manque beaucoup de fonctions sur les strings en Lua, mais au moins, ça nous permet de réfléchir pour résoudre le problème

spring dock
#

lua c plus facil que js

slim anvil
#

après bon, le JS c'est pas fait pour cut les strings hein kappa

rough tide
#

j'comprend rien a lu

#

*lua

#

c du js mais il manque des mots

marsh drift
#

oof

west plover
#

the Lua is the easiest language that I never met

spring dock
#

le plus simple c'est le brainfuck, t fou toi

marsh drift
#

ecrit bonjour en BF stp ?

spring dock
#

j'arrive pas c tro dur

#

++++++++++[>+>+++>+++++++>++++++++++<<<<-]>>>----.>+++++++++++.-.----.+++++.++++++.---.

#

tiens j'ai réussi

marsh drift
#

GG le compilo inversé

#

si fier

spring dock
#

:200iq:

keen narwhal
#

Hey comment on un cree une commande qui met un role a tout les joueur quand il s’arrivr sur le serv exemple « Membre »

#

Parce que manuellement c’est chiant..

dire latch
#

Bonjour,

j'ai réussi à régler le soucis de la music. Mais maintenant, le bot ne joue pas les playlists.

Pouvez-vous m'aider s'il vous plaît :)

Code:

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

module.exports.run = async (bot, message, args) => {
  if (!message.member.voiceChannel) return message.channel.send("Connectez-vous à un salon vocal.");
  if (message.guild.me.voiceChannel) return message.channel.send("Le bot est déjà connecté dans un salon vocal.");
  if (!args[0]) return message.channel.send("Merci de mettre un lien Youtube.");
  const validate = await ytdl.validateURL(args[0]);
  if (!validate) return message.channel.send("Le lien n'est pas un lien Youtube.");
  const info = await ytdl.getInfo(args[0]);
  const connection = await message.member.voiceChannel.join();
  const dispatcher = await connection.playStream(
    ytdl(args[0], { filter : 'audioonly' })
  );
  message.channel.send(`Musique ajoutée: ${info.title}`);
  dispatcher.on('error', e => {
  });
};

module.exports.help = {
  name: "play"
};
slim anvil
#

@keen narwhal tu as déjà un bot ?

#

Tu peux faire ça rapidement

client.on("guildMemberAdd", user => {       
    user.addRole('ID DU ROLE')
})

peut-être des trucs a checker avant, qu'il ne soit pas bot par ex ou autre, je te laisse faire ^^

plush lava
#

@dire latch tu dois faire une partie pour lire les playlist, sinon le bot ne comprendra pas ce que c'est

dire latch
#

Oui mais comment ?

#

@plush lava

plush lava
#

Ah bah ça 🤷‍♂️

#

déjà faudrait faire en sorte de vérifier si c'est une playlist

#

Tu as la doc de ytdl-core normalement

dire latch
#

🤔

rough tide
#

qlq de dispo pour m'aider ?

#

a 3h du mat ? xd

timid loom
#

poste ta question

slim anvil
#

Dis nous @rough tide

hazy mirage
#

Il est parti se coucher après avoir demandé

slim anvil
#

il etait 03h en meme temps

#

faut dormir les gars kappa

spring dock
#

dormir c pour les fébles

rough tide
#

j'ai trouver au final ptdr

#

je cherchais une fonction pour générer des string randoms

slim anvil
#

okep

keen narwhal
#

@slim anvil merci

slim anvil
#

pas de soucis

keen narwhal
#

Et si par exemple je veut faire en sorte que quand une personne ecrit dans un salons un message sa lui surpime c’est rolle et lui mettent un autre rolle ?

slim anvil
#

Ce sera plus simple si tu veux comprendre les bots 🙂

keen narwhal
#

Merci 🙂

proud marlin
slim anvil
#

Tu veux filter sur un élément qui n’existe pas

#

L’erreur est plutôt clair, console.log l’élément sur lequel tu .filter tu verras qu’il n’existe pas

proud marlin
#

D'accord merci 👌

proud marlin
slim anvil
#

l'erreur ne vient pas de ce fichier

#

regarde tout a droite de la ligne d'erreur tu as le fichier concerné

#

c'est plus dans ton index.js

#

je pense

proud marlin
#

Ok après dans l'index.js j'ai juste a crée une commande ?

slim anvil
#

Bah si tu utilise commande oui....

#

Tu as suivis un tuto ?

plush lava
#

C'est un command handler qui est disponible en open source

slim anvil
#

Il a pas du bien le prendre alors

plush lava
#

Nope

#

Je le connais je l'ai déjà utilisé dans un de mes anciens bots

#

Et effectivement ça vient bien du index.js

#

@proud marlin normalement tu as du mettre un évent message dans lequel tu définie args et définir aussi la commande. Je pense que l'erreur vient de là

slim anvil
#

yep

#

faut mieux c/c kappa

plush lava
#

Il a modifier un truc qui était genre commands mais pas l'autre morceau

#

Du coup vu que le code a besoin de commands et pas de commandes bah il comprends pas lul

real fern
#

Le mauvais c/c kappo

keen narwhal
#

Esce que vous auriez un bon pote a proposer svp

spring dock
#

Pas @hazy mirage en tout cas

hazy mirage
fallen latch
#

Bonjour j'ai une erreur, merci d'avance (je débute)

case 'poll':
            console.log(pollchannel)
            let msgArgs = args.slice(1).join(" ");
            console.log(msgArgs);
            
            pollchannel.send(":mailbox: **" +msgArgs + "**").then(messageReaction => {
                messageReaction.react("👍");
                messageReaction.react("👎");
                message.delete(1000);
            });

slim anvil
#

c'est quoi le message d'erreur

fallen latch
#

erreur :
'''js
pollchannel.send("📫 " +msgArgs + "").then(messageReaction => {
^

TypeError: Cannot read property 'send' of null
'''

slim anvil
#

et met tout ton switch ce sera plus simple

fallen latch
#

ok

slim anvil
#

le pollchannel vient d'où ?

#

il doit pas exister, ton console.log() doit renvoyer undefined

fallen latch
#

oui c ca

#

j'ai cree un .env

#

avec dedans l'id du channel poll

slim anvil
#

sinon tu peux juste fetch ton channel par le nom

#

et hop tu l'enverras a celui ci

fallen latch
#

??

slim anvil
#

tu peux faire un channels.find('name', 'nom_du_channel') ou même avec un id directement pour find ton channel et ensuite y envoyer un message

#

par exemple:

const channel = client.channels.find('name', 'nom_du_channel')

// code ici

channel.send(variable_embed)

le nom ou l'id, toi qui vois

#

dans mon cas c'est client.channels, mais en fonction de comment tu déclares ton paramètre ça peut être autre chose (je vois souvent bot aussi)

fallen latch
#

oui

#
const pollchannel = client.channel.find('?? JSP CE QUI FAUT METTRE ICI','id ??')

pollchanel.send("mon message ")

C'est ça ??

#

@slim anvil

#

@boreal edge

slim anvil
#

regarde sur la doc de discordjs pour comprendre

#

je t'ai donné le chemin à suivre, essaye de continuer

boreal edge
#

Bonjour,

Je ne comprend pas l'origine de cette erreur, quelqu'un serait m'éclaircir sur le sujet svp ?

local discordia = require('discordia')
local client = discordia.Client()

client:on('ready', function()
    print('Logged in as '.. client.user.username)
end)

client:on('messageCreate', function(message)
    if message.content == '!ping' then
        message.channel:send('Pong!')
    end
end)

client:run('Bot BOT_TOKEN')
2020-01-07 18:31:56 | [ERROR]   | Could not authenticate, check token: ...s/gogo17/Desktop/G_Bot_V2/deps/secure-socket/context.lua:67: #1:TLS not supported
Maybe [SSLv3] SSLv23 TLSv1 TLSv1_1 TLSv1_2 DTLSv1 [SSLv2], option followed by _client or _server
default is TLSv1
slim anvil
#

Regarde si ton token est le bon

#

Tu as pas laissé « Bot BOT_TOKEN » ?

#

Car si oui, le problème vient de là il faut que tu récupères le token sur discord developers

boreal edge
#

J'ai pas laisser BOT_TOKEN

#

Et en faites, je viens de voir mais il faut que j'installe Luvit sur windows

slim anvil
#

Vérifie que ton token soit le bon en tout cas l’erreur ça a l’air d’être ça

boreal edge
#

If you’re on windows, run the sister command in your cmd.exe command prompt (requires Powershell >= 3.0).

PowerShell -NoProfile -ExecutionPolicy unrestricted -Command "[Net.ServicePointManager]::SecurityProtocol = 'Tls12'; iex ((new-object net.webclient).DownloadString('https://github.com/luvit/lit/raw/master/get-lit.ps1'))"
Put both lit and luvit in your path somewhere. We recommend /usr/local/bin or $HOME/bin if that’s in your path.

To test your install run luvit to enter the repl. This has readline-like capabilities implemented in lua and has tab completion of expressions for interactive exploring the runtime.

#

Sauf que sa fonctionne pas

#

A je comprend page not found sur github... 😦

hazy mirage
boreal edge
hazy mirage
#

g edit*

boreal edge
#

Ok merci, je vias essayer via powershell ou cmd du coup 🙂

#

PowerShell -NoProfile -ExecutionPolicy unrestricted -Command "[Net.ServicePointManager]::SecurityProtocol = 'Tls12'; iex ((new-object net.webclient).DownloadString('https://github.com/luvit/lit/raw/master/get-lit.ps1))"
Put both lit and luvit in your path somewhere. We recommend /usr/local/bin or $HOME/bin if that’s in your path.

#

Donc je mets sa ?

hazy mirage
#

ouep normalement

#

euh ta fin est pas bonne (jsp si tu as vu) mais c'est comme ça: .DownloadString('https://github.com/luvit/lit/raw/master/get-lit.ps1'))

boreal edge
#

Ouai j'ai pas le put, ...

#

Mais sa fonctionne pas

hazy mirage
#

Or directly in powershell, run:
[Net.ServicePointManager]::SecurityProtocol = 'Tls12' iex ((new-object net.webclient).DownloadString('https://github.com/luvit/lit/raw/master/get-lit.ps1'))

#

(lance le en admin)

boreal edge
#

YES POWERSHELL VEUT PLUS S OUVRIR !

hazy mirage
boreal edge
#

Cmd est bon

#

Powershell ISE c'est bon ou pas ,

#

?

#

Car ise fonctionne lui

#

Yes sa fonctionne !

#

Par donc dés que c'est DL, je le retrouve ou ?

hazy mirage
#

ah

#

jviens taider en vocal

boreal edge
#

Ok merci

keen narwhal
#

J'avais eu ce problème j'avais simplement tout désinstaller et retelecharger un setup pour le réinstaller et sa fonctionnait @boreal edge

boreal edge
#

Moi sa ne fonctionne pas 😢

keen narwhal
#

Ah

west plover
#

Comprends pas ton problème thinkgeometric

keen narwhal
#

Problème au niveau du token avec luvit

boreal nacelle
plush lava
#

J'ai trouvé un warn, essaye de suivre ce qu'il dit
npm WARN deprecated ffmpeg-binaries@4.0.0: ffmpeg-binaries is no longer being maintained. use ffmpeg-static, or just install ffmpeg

west plover
#

npm WARN npm You should probably upgrade to a newer version of node as we

#

Mets à jour npm et Node

plush lava
#

La version npm n'influe pas sur le package moi aussi je l'ai et il marche

#

Installe aussi les win tools

#

Windows build tools

#

Failed to execute 'C:\Program Files\nodejs\node.exe C:\Users\USER\AppData\Roaming\npm\node_modules\npm\node_modules\node-gyp\bin\node-gyp.js configure --fallback-to-build --module=D:\Dev Bots\TyshyBot\node_modules\lzma-native\binding-v3.0.8-node-v79-win32-x64\lzma_native.node --module_name=lzma_native --module_path=D:\Dev Bots\TyshyBot\node_modules\lzma-native\binding-v3.0.8-node-v79-win32-x64 --python=C:\Users\USER.windows-build-tools\python27\python.exe --msvs_version=2015' (1)

#

npm i windows-build-tools

boreal nacelle
#

déjà fait

#

j'installe static

plush lava
#

Tu as installé avec une cmd en mode admin ?

boreal nacelle
#

dans le terminale de VSC

plush lava
#

Je sais pas si il démarre en mode administrateur

boreal nacelle
#

peu importe c'est censé marcher

plush lava
#

Dans le doute ouvre une cmd et réinstalle tes package en mode admin

#

Nan pas sans le mode admin

#

Malheureusement

boreal nacelle
#

J'ai toujours installé comme ça, ça a toujours marché

plush lava
#

Bah justement pour certains package ça ne peut pas marcher

boreal nacelle
#

Juste ça ne veut pas fonctionner avec ffmpeg-binaries et ffmpeg-static

#

mon pb c'est que je peux pas

#

mes dossiers sont dans le D:

#

et mes dossiers Windows Admin dans le C:

#

ça me met automatiquement sur le C:

plush lava
boreal nacelle
#

j'vais basculer sur le C:

boreal nacelle
#

marche toujours pas.

#

même erreur.

boreal edge
#

Bonjour,

Est ce qu'il existe une extention sur Visual Studio code permettant d'avoir toutes les fonctions de discord.js déjà enregistrés ?

Merci d'avance,
Hugo

queen ocean
#

Il a l'air de prendre en compte tout les event

#

et te permet de créer une base de bot rapidement

slim anvil
#

trop propre

boreal edge
#

Je l'es essayer justemment

#

Mais je n'arrive pas a le faire fonctionner mdr 😄

#

Je sais pas si quelqu'un s'en ai déjà servit

#

Mais merci Zaros 🙂

queen ocean
#

att je test

boreal edge
#

Ok merci 🙂

queen ocean
#

Tu ouvres un fichier

#

(js ou py)

#

et quand tu tape 'discord' il te propose 'discord.client'

#

et te met direct la base d'un bot

boreal edge
#

Ah yes !

#

Merciii 🙂

plush lava
#

Tro bi1

keen narwhal
#

Bonsoir j'ai une question , peut on se self bot ?

slim anvil
#

Je crois que c’est interdit, @queen ocean pourra t’en dire plus ou @timid loom

queen ocean
#

yep c'est interdit par Discord

full scaffold
keen narwhal
#

Pourquoi interdire le self bot

slim anvil
#

Comprend pas fyrio ?

queen ocean
#

@keen narwhal Car le nombre d'app Discord est limité par compte alors qu'un self bot (un compte) n'a pas de limite (tu peux en créer autant que tu veux) donc c'est une manière pour Discord de limité le nombre d'app qui font des appel sur l'api

keen narwhal
#

Ah

full scaffold
#

Bah le bot fait un truc qui n'est plus dans le code

slim anvil
#

Relance le

#

T’as du zappé

full scaffold
#

Je refais un node . ?

slim anvil
#

tu le stop et yes

full scaffold
#

k

#

C'est bon

slim anvil
#

Yep

plush lava
#

Oui faut relancer le bot après chaque modif

hazy mirage
#

Hey

#

J'ai trouvé une fonction pour toi

#
function reverseString(str) {
    // Step 1. Use the split() method to return a new array
    var splitString = str.split(""); // var splitString = "hello".split("");
    // ["h", "e", "l", "l", "o"]
 
    // Step 2. Use the reverse() method to reverse the new created array
    var reverseArray = splitString.reverse(); // var reverseArray = ["h", "e", "l", "l", "o"].reverse();
    // ["o", "l", "l", "e", "h"]
 
    // Step 3. Use the join() method to join all elements of the array into a string
    var joinArray = reverseArray.join(""); // var joinArray = ["o", "l", "l", "e", "h"].join("");
    // "olleh"
    
    //Step 4. Return the reversed string
    return joinArray; // "olleh"
}
 
reverseString("hello");```
keen narwhal
#

Bonsoir ,

Je voudrait crée une commande de Blague mais je ne sais pas pas ou commencé ... une idée ?

frank sparrow
#

commence déjà par rire thinkgeometric

keen narwhal
#

...

slim anvil
#

Bah par la création de l'event

#

ou quand on envoit !blague hop tu reply

#

et ensuite tu uses une api

#

pour avoir des blagues aléatoires

keen narwhal
#

Ok , je vais essayer

hybrid berry
#

bijour j'ai besoin de vous

#
/home/bot/index.js:25
        .setDescription('Bienvenue a ' + member.user.username + ' qui nous a rejoint !\n Merci de lire les règles dans ' +message.guild.channels.get('533614917798985748').toString() )
                                                                                                                          ^

ReferenceError: message is not defined
    at Client.client.on.member (/home/bot/index.js:25:123)
    at Client.emit (events.js:198:13)
    at Guild._addMember (/home/bot/node_modules/discord.js/src/structures/Guild.js:1298:19)
    at GuildMemberAddHandler.handle (/home/bot/node_modules/discord.js/src/client/websocket/packets/handlers/GuildMemberAdd.js:12:13)
    at WebSocketPacketManager.handle (/home/bot/node_modules/discord.js/src/client/websocket/packets/WebSocketPacketManager.js:105:65)
    at WebSocketConnection.onPacket (/home/bot/node_modules/discord.js/src/client/websocket/WebSocketConnection.js:333:35)
    at WebSocketConnection.onMessage (/home/bot/node_modules/discord.js/src/client/websocket/WebSocketConnection.js:296:17)
    at WebSocket.onMessage (/home/bot/node_modules/ws/lib/event-target.js:120:16)
    at WebSocket.emit (events.js:198:13)
    at Receiver.receiverOnMessage (/home/bot/node_modules/ws/lib/websocket.js:789:20)
slim anvil
#

tu ne récupères à aucun moment le paramètre message

#

Tu peux passer par le client pour get un channel je crois

hybrid berry
#

et comment faire

#

car je veux tag un channe

slim anvil
#

de la même manière mais remplacer le message par client

#

Mais pas sûr, mais sur la doc de discord tu dois avoir les infos pour ça

hybrid berry
#

en gros quand ej fais sa sa fonctionne

west plover
#

tout simplement parce que message n’existe pas

slim anvil
#

...

hybrid berry
#

mais quand je veux le send dès que quelqu'un join sa met ceci

slim anvil
#

oui je viens de te dire pourquoi

#

message is undefined

#

Donc quand tu fais un message.guild message n’existe nul part

west plover
#

Remplace message par member

slim anvil
#

Tu peux get un channel par le member aussi ? Cool ça

west plover
#

Oé parce que member.guild renvoie un objet Guild

slim anvil
#

Ah okep

west plover
#

Et dans Guild y a la propriété channels

#

et ainsi de suite

slim anvil
#

yep ok

hybrid berry
#

donc je met member

slim anvil
#

yep

west plover
#

Et tu peux aussi passer par <#id_du_channel> au lieu de get le channel puis de le to string

slim anvil
#

Et concat en ES6

#

tant qu’à faire

#

Tu uses des let et des fonctions flèches alors utilises aussi la concaténation qui va avec ce sera plus propre

west plover
hybrid berry
#

fonctionne pas 😦

#

je suis vraiment nul 😂

west plover
#

Oé, je confirme kappo

hybrid berry
west plover
#

Encore une fois, member n’existe pas dans ta fonction

hybrid berry
#

mais c nul

west plover
#

Non, c juste que t’es nul kappo

hybrid berry
#

sa change tout le temps xD

west plover
#

Bah oui

hybrid berry
#

pourquoi pas faire guild.membercount

west plover
#

Faut savoir programmer aussi kappo

hybrid berry
#

jammais fait de js

west plover
#

Tu peux faire client.guilds.get( "id_de_guild" ).memberCount

#

C’est pas une histoire de JS, mais plus de logique

slim anvil
#

Ça reste une histoire de JS aussi

#

La notion de scope, de paramètres, faut arrêter d’aller plus vite que la musique vous vous aidez pas

west plover
#

Mais c’est plus un problème de logique, member n’existe pas dans le bloc de fonction, donc logic que ça fonctionne pas

hybrid berry
#

c'est normale que sa ne fonctionne pas ?

west plover
#

si y a des erreurs, oé

hybrid berry
west plover
#

t'as des erreurs ?

hybrid berry
#

non

#

ah nan c bon sa fonctionne

#

il voulait un string

keen narwhal
#

salut

slim anvil
#

Hello

hybrid berry
#

comment supprimer le message original

#

message.channel.send( embed ).then(message => {message.delete(10*1000)})

#

j'arrive a supprimer l'embed envoyé par le bot après 10 secondes mais je voudrais supprimer aussi le message de requête

slim anvil
#

avant ton cette ligne tu fais un message.delete(100)

hybrid berry
#

et sa fera quoi ?

slim anvil
#

Ça supprimera le message de concerné

hybrid berry
#

comme ca ?

slim anvil
#

ui je crois de tete

#

tu peux aussi checker si message.deletable aussi pour être sûr

#

Et pour éviter de te perdre évite d’avoir les mêmes noms de variable partout

#

Dans ta fonction principale tu reçois message déjà, dans ton .then appelle le msg éviter de t’y perdre quand tu retourneras sur ton code plus tard

#

et même pour éviter des soucis de code ce sera better

full flare
#

@hybrid berry
message.delete(10000)
ça supprimera le message 10sec après

rough tide
#

Hey !

J'ai un serveur garrys mod chez Mtx serv. On nous a offert avec un bot discord , mais j'aimerais implementer ses fonctions , c'est a dire état du cpu , de la ram , etc... dans mon propre bot.
Je n'ai pas trouver de module pour ça , quelqu'un saurais comment faire ?

slim anvil
#

De ton serveur mtx ?

#

ou du serveur sur lequel le bot est hebergé ?

keen narwhal
#

J'ai commencé un bot qui permet de faire des jeux mais j'ai un problème , sa me dit Cannot find module ../config.json

j'ai essayer de crée le fichier config.json mais sa me mais ça maintenant
config.json: Unexpected end of JSON input

J'aurai besoin de votre aide svp 🙂

#

const config = require('../config.json'); Je ne trouve pas le npm

slim anvil
#

Montre ton Json

#

et ton code aussi pour avoir le truc global pas te dire de bêtise

#

(Enlève ton token)

keen narwhal
#

Ok att

#

@slim anvil (dsl de la mention) on ma donner une commande pour kill une personnes mais le problème c'est que sa me demande le ('../config.json') sauf que j'ai pas le config.json

slim anvil
#

yep bah faut sûrement le crée regarde ce que le config demande

#

Tu dois avoir des datas de base à renseigner dedans

spring dock
#

tuer une personne ? c’est pas légal (hors joke ça veux dire quoi?)

keen narwhal
#

C'est un genre de mute

slim anvil
#

Après tu peux très bien le renseigner en variable dans ton JS directement si il y a pas d’édition de JSON

keen narwhal
#

Mais version tueur a gage

spring dock
#

ah ok

slim anvil
#

Pour ça qu’il me faut ton code comprendre le but

keen narwhal
#

Ou la

#

Compliquer tout ça

keen narwhal
#

Merci a Enzo de m'avoir aider en mp !

keen narwhal
#

J'ai besoin d'aide x)

Quand je fait fait mes commande comme !8ball ou autre , il ne fait rien , le prefix marche bien mais sa fait rien

Me mp pour plus de renseignement

west plover
#

Faudrait faire ses propres commandes d’abord thinkgeometric

keen narwhal
#

J'ai fait des commande !8ball ext dans un fichier Commandes puis relier avec un fs.read mais il y a aucune erreur est sa marche pas 😦

keen narwhal
#
fs.readdir('./Commandes/', (error, f) => {
    if (error) { return console.error(error); }
        let commandes = f.filter(f => f.split('.').pop() === 'js');
        if (commandes.length <= 0) { return console.log('Aucune commande trouvée !'); }

        commandes.forEach((f) => {
            let commande = require(`./Commandes/${f}`);
            console.log(`${f} commande chargée !`);
            client.commands.set(commande.help.name, commande);
        });
});

J'ai fait ça pour le load

rough tide
#

De ton serveur mtx ?
@slim anvil oep

slim anvil
#

Tu as une api à dispo sur MTX pour get des informations

west plover
#

steam-server-status

#

c’est le module node qui te permet de get les infos d’un serveur steam

rough tide
#

Hey ,

J'ai trouvé du coup mais enfait quand j'vais sur ce lien
https://mtxserv.com/api/v1/game/Iddemonserveur/resources
j'ai un message de ce style

{"cpu_used":1,"ram_used":380}

comment je peut récuperer seulement 1 et 380 ?

slim anvil
#

bah si tu log data, ce sera data[‘cpu_used’] par ex

#

ou en déstructurant l’objet directement quand tu le récupères à toi de voir

rough tide
#

mais le pb

slim anvil
#

Tu passes par l’api MTX du coup ? Tu as générer le token pour pouvoir use l’api?

rough tide
#

j'ai tt générer

#

mais j'ai pas trouver la fonction

#

j'ai r compris a la doc

slim anvil
#

Bah c’est juste que tu dois fetch sur la route donne

#

en passant le token génère dans les headers et l’id de ton serveur

rough tide
#

hein ?

slim anvil
#

tu fais un fetch(‘/api/v1/notifications/´, {}).then()....

Dans le second paramètre tu vas set tes headers et donc le token qu’il te demande de générer

rough tide
#

j'ai fait autrement

#

j'ai utiliser le module request

slim anvil
#

oui ça revient au même

#

Tu get quoi

rough tide
#

sauf que ```js
{ error: { code: 405, message: 'Method Not Allowed' } }

#

je sais pas ou mettre le token

slim anvil
#

Dans les headers

rough tide
#
request.post({
        url: 'https://mtxserv.com/api/v1/game/xxxxxx/resources',
        headers: {
            'access_token': "mon token"
        },
        time: true
slim anvil
#

‘Authorization’ : token

rough tide
#

oui

#

ahh

slim anvil
#

C’est pas access token mais authorization

rough tide
#

tjrs pas

slim anvil
#

tu as quoi comme erreur

rough tide
#
 { error: { code: 405, message: 'Method Not Allowed' } }
#

c ma response

slim anvil
#

La route est bien en post ?

#

Elle est pas en get ?

rough tide
#

ouep

#

request.post

slim anvil
#

post c’est pour créer, put éditer, get lister

#

Non mais sur la doc de MTX eux ils mettent quoi ? En get ou en post ?

rough tide
#

euh je sais pas

#

j'essaye les deux au pire ?

slim anvil
#

Non essaye pas dans le vide regarde juste la doc c’est écrit dessus

#

Bleu get, vert post, rouge delete

rough tide
#

c en get

#

sauf que qd jfais en get

#
SyntaxError: Unexpected token < in JSON at position 0
    at JSON.parse (<anonymous>)
    at Request._callback (C:\Users\user\Desktop\Développement\Bots discord\MatixRP\commands\cpu.js:19:27)
    at Request.self.callback (C:\Users\user\Desktop\Développement\Bots discord\MatixRP\node_modules\request\request.js:185:22)
    at Request.emit (events.js:223:5)
    at Request.<anonymous> (C:\Users\user\Desktop\Développement\Bots discord\MatixRP\node_modules\request\request.js:1161:10)
    at Request.emit (events.js:223:5)
    at IncomingMessage.<anonymous> (C:\Users\user\Desktop\Développement\Bots discord\MatixRP\node_modules\request\request.js:1083:12)
    at Object.onceWrapper (events.js:312:28)
    at IncomingMessage.emit (events.js:228:7)
    at endReadableNT (_stream_readable.js:1185:12)
Appuyez sur une touche pour continuer...
#
   request.get({
        url: 'https://mtxserv.com/api/v1/game/xxxx%20/resources',
        headers: {
            'Authorization': "xxxxx"
        },
        time: true
    }, function (error, response, body) {
        var result = JSON.parse(body);
        console.log(result)
})```
slim anvil
#

console.log juste ton response sans le parse

#

Pour voir déjà

rough tide
#

oula

slim anvil
#

euh ton body pardon

rough tide
#

ah bah oui xd

slim anvil
#

car si il est à null ou undefined il va pas pouvoir le parse

rough tide
#

c'est le html de la pager

#

*page

#
<!DOCTYPE html>
<!--[if IE 8]><html lang="fr" class="ie8 no-js"><![endif]-->
<!--[if IE 9]><html lang="fr" class="ie9 no-js"><![endif]-->
<!--[if !IE]><!-->
<html lang="fr">
<!--<![endif]-->
<head>
    <meta charset="utf-8">
    <meta name="google-site-verification" content="_ZipWNs2hskM5WfeSoeoWnGId5tU-Av9_osWiKsLWJ8" />

                    <title>Identification - mTxServ</title>
        <meta name="og:title" content="Identification - mTxServ" />
        <meta name="twitter:card" content="summary" />
        <meta name="twitter:title" content="Identification - mTxServ" />

                <meta name="description" content="Créez votre propre serveur de jeu avec mTxServ, votre hébergeur Minecraft, GMod, ARK. Testez Gratuitement. Location serveur Bungeecord, Hytale, Teamspeak, Onset et plein d&#039;autres !" />
        <meta name="og:description" content="Créez votre propre serveur de jeu avec mTxServ, votre hébergeur Minecraft, GMod, ARK. Testez Gratuitement. Location serveur Bungeecord, Hytale, Teamspeak, Onset et plein d&#039;autres !" />
        <meta name="twitter:description" content="Créez votre propre serveur de jeu avec mTxServ, votre hébergeur Minecraft, GMod, ARK. Testez Gratuitement. Location serveur Bungeecord, Hytale, Teamspeak, Onset et plein d&#039;autres !">


                <meta name="robots" content="noindex, nofollow" />
#

j'ai pas tt mis biensur

#

mais en gros c le code source de la page

#

et ca me mene vers l'identification de mTxServ

#

:/

#

dc jpense l'autorisation est pas bonne

slim anvil
#

Non sinon tu aurais une erreur 401 ou 403

#

Log response plutôt ?

#

ça me parait plus logique

rough tide
#

j'ai log responce

#

c'est trés long aussi

slim anvil
#

Show me en capture d’écran ce sera plus explicite je suis sur tel

west plover
#

D’ailleurs y a un module node mTxServ

#

il a pas l’ait ultra complet si on regarde la todolist, mais je crois qu’il y a l’essentiel thinkgeometric

keen narwhal
#
 let random = Math.random() * 100;
 if (random < 100 / 6) {

Cette commande me serre a une roulette russe mais elle est trop cheat , on tombe tout le temp sur Vous n'étes pas mort que sur BOOM tes mort

#

Il y a moyen de m'aider a changer le random pour que se soit 50/50 ?

timid loom
#

Tu peux remplacer le 6 par un 2

#

Enfin l'intérêt de la roulette russe c'est que tu aies de plus en plus de chances de mourir

errant rampart
#
let shoot = 0
for (let i = 0; i < 100; i++) {
  const random = Math.floor(Math.random() * (6 - shoot)) + 1;
  const isDead = random === 1;
  if ( isDead ) {
    console.log(`You die at the ${shoot + 1} shoot`);
  }
  shoot += isDead ? -shoot : 1;
}

A toi de l'adapter à ton code, mais là tu as le comportment normal d'une roulette russe

rough tide
#

il a pas l’ait ultra complet si on regarde la todolist, mais je crois qu’il y a l’essentiel thinkgeometric
@west plover pas ce que je cherche à faire xd

keen narwhal
#

qui veut le code d'un bot musique ?

spring dock
#

On sait aller sur youtube tkt

keen narwhal
#

J'ai crée un system de report de bug mais quand la personnes fait juste /bug mon bot crash mais quand il fait /bug problème channel 02 sa bug pas , qui peux m'aider en mp svp

slim anvil
#

Regarde tes erreurs dans la console, c’est sûrement du genre « reason is undefined » ou un truc du genre

keen narwhal
#

**node_modules/discord.js/src/structures/RichEmbed.js:166
if (!/\S/.test(value)) throw new RangeError('RichEmbed field values may not be empty.');
^

RangeError: RichEmbed field values may not be empty.**

slim anvil
#

Yes du coup rajoute juste une condition genre
if (!reason) return message.reply(‘Merci de renseigner une raison’)

#

En adaptant avec tes variables etc...

#

J’appelle ça reason mais tu l’appelles comme tu veux

keen narwhal
#

Ok je ferai ça une fois rentré de mes cours

#

J'appelle sa aussi reason

keen narwhal
#

@slim anvil Je vais aller essayer , je suis rentrer des cours x) (dsl de la mention)

slim anvil
#

Okey!

keen narwhal
#

** if (!reason) return message.reply('Merci de renseigner une raison.')

ReferenceError: reason is not defined
**

#

@slim anvil (dsl de te rementioner) Sa me mais cette erreur quand je fait /bug et quand je fait /bug test

slim anvil
#

Tu définis reason nul part

#

dans ce cas fais juste un if (!args.length) return ....

#

A la place de !reason....

keen narwhal
#

ok

slim anvil
#

C’est chiant sur mobile je vois trop mal le code

keen narwhal
#

Ok donc des screen c'est mieux

slim anvil
#

Oui à la limite plus simple je peux zoomer

keen narwhal
#

@slim anvil Même problème hier

slim anvil
#

Si tu veux on va en mp pour éviter de flood ici

keen narwhal
#

Ok va s'y

fringe wyvern
#

Salut je fais un bot en js et j'aimerais bien savoir comment récupérer le nombre de réactions sur un message

timid loom
#

message.reactions.size

#

@fringe wyvern

fringe wyvern
#

ok et du coup c'est possible de faire un timer en js ?

slim anvil
#

Yes, t’auras plusieurs manière de le faire, explique ton besoin

fringe wyvern
#

en gros je veux mettre un timer suite à une commande commande tapée, la commande contient le temps du timer (ca je sais comment récup) et du coup je veux qu'un timer se lance et qu'a la fin de ce timer, un message se modifie en fonction du nombre de réactions

#

le timer se lance quand le message en question est envoyé

west plover
#

setTimeout 🤔

slim anvil
#

Yes setTimeout

fringe wyvern
#

Ok et du coup maintenant j'ai besoin du nombre de joueurs ayant réagis a un message mais je galère, apparement il y a AwaitReaction mais il marche pas de mon côté

leaden hollow
#

Tu ecris un message
Tu fais une commande !command MESSAGEID TIME
Tu fais un timeout avec les arguments de la commande et tu edit ton message via l'id

slim anvil
#

Tu fetch ton message par l’id et dedans tu dois avoir une clé reactions avec un count ou alors tu fais juste un .length

fringe wyvern
#

@slim anvil mon message j'ai pas eu besoin de le récup par l'idée,j,ai juste mis un setTimeout dans le client.on('message') je dois quand même fetch par l id ?

slim anvil
#

Ah non si c’est le message que tu reçois pas besoin

#

Mais pourquoi un timeout enfaite

fringe wyvern
#

En gros je fais un système de sondage

#

Et je propose au joueur de mettre un certain temps dans ma commande

#

Voila

#

Par contre j ai aussi testé le .count et hier il me disait que ça existait pas

slim anvil
#

tu as un .reactions no dans message ? Tu fais un .length dessus

fringe wyvern
#

message.reactions.length ?

#

Ca va pas me donner le nombre total ?

slim anvil
#

bah fais un log de message pour voir l’objet

fringe wyvern
#

De toutes les réactions ?

slim anvil
#

Tu filter dessus

#

sur ton tableau puis tu .length

fringe wyvern
#

et comment on filter du coup mdr

slim anvil
fringe wyvern
#

Ok

slim anvil
#

sur ton .reactions, mais log l’objet pour être sûr que ce soit bien reactions

fringe wyvern
#

C est la même pour les emoji custom ?

slim anvil
#

vérifie avant que le tableau ne soit pas vide aussi

#

Oui je pense ils ont quand même un name finalement

#

tu peux le faire par l’ID si tu veux

fringe wyvern
#

Ok bah je verrais pour faire ça après merci

slim anvil
#

no prob

ancient sonnetBOT
#
Citation de Taink#9231 posté dans #aide-bots

Cliquez sur 📄 pour accéder au message.

message.reactions.size

timid loom
#

J'ai dit ce qu'il fallait faire

#

Omg

#

Wait

#

Tu veux compter le nombre d'une certaine réaction ?

slim anvil
#

Yes

#

Ah c’est size pas count

#

Bon suffisait de log pour voir quoi kappaangry

timid loom
#

Mais ça reste size ouais

slim anvil
#

le console.log c’est pas pour les chiens kappaangry

timid loom
#

Ou alors de lire la doc kappa

#

La doc c'est pas pour les chiens

spring dock
#

C’est pour les Hommes je crois

slim anvil
#

y a un truc déjà sur discord pour count que un type de réaction ?

spring dock
#

bah oui

#

tu crois ils font comment le truc de réaction sur gca

slim anvil
#

Bah suffit de faire un .filter

timid loom
#

Ui

spring dock
#

Connépa

slim anvil
#

Tu crois qu’ils font comment discord JS 333 3 7

spring dock
#

c’est quand j’ai débutant dev bot la

slim anvil
#

quand t’appelles des fonctions déjà faites derrière y a du vrai code idiot

spring dock
#

73

#

bah je sais

#

tu m’a pris pour qui

timid loom
#

"idiot"

slim anvil
#

Pour bob le blaireauleur

timid loom
#

"gros beta"

slim anvil
#

!rule 2 sinon on va se faire engueuler dans 10 secondes je le sens sadgun

ancient sonnetBOT
#

:two: Respectez le but des channels.
Si tu as un doute pour savoir où poster ton message, demande le nous dans #general :slight_smile:

timid loom
#

👍

keen narwhal
#

bonsoirr !

petite question, y'aurait-il ici quelqu'un qui pourrait m'expliquer comment créer un reactionroles, parce qu'après des mois et des mois de tentative, je n'y arrive toujours pas 😒

slim anvil
#

pour faire un auto rôle genre ?

keen narwhal
#

en gros, tu react, tu reçois un role

slim anvil
#

Ah yes

keen narwhal
#

à mes yeux, c'est une légende vivante

slim anvil
#

client.on('messageReactionAdd', (reaction, user) => {
Code ici
})

keen narwhal
#

parce que j'arrive à faire que le mec qui envoie le message pour le mettre en place (l'embed par ex) que ça lui donne le role mais qu'à la personne qui a envoyé le message, les autres ça ne fonctionne pas

slim anvil
#

Dans reaction tu as message et _emoji

#

Du coup ensuite tu regardes si l’emoji patati patata et si oui tu add le rôle au user

#

Je sais pas si c’est clair

keen narwhal
#

assez clair, je vais voir

slim anvil
#

sorry sur tel c’est galère de mettre en forme les lignes

#

Mais si tu as besoin hésites pas

timid loom
#

@keen narwhal fais gaffe parce que par défaut ça fonctionne pas sur les messages envoyés avant le lancement du bot si tu es sur discord.js

west plover
#

faut rajouter un code qui gère le raw il me semble pour contourner ça

timid loom
#

yep

west plover
#

il y est sur le github de discordjs

timid loom
#

normalement cette fonctionnalité arrive dans version 12 de discord.js mais comme elle est pas encore finie...

west plover
#

c’est ce guide ^

timid loom
#

ah yes gg

keen narwhal
#

Bonsoir , je voudrait relier une cette API =>https://api.mcsrvstat.us/ pour les serveurs Minecraft , mais j'ai jamais fait ça , qu'elle qu'un peut m'aider ?

#

🙂

#

Ok merci Fireless

#

Rectification

#

ok

#

Je peut te le faire en privée stv

#

Gratos

#

Je t'envoie le code

#

Si sa te dérange pas , comme ça je pourrais voir pour la prochaine fois

#

Tu peux vocal ?

#

Oui

#

Viens dans blabla

vapid lintel
#

Bonsoir, j'ai un problème car j'aimerais qu'on puisse faire une commande exclusivement dans un channel et ces ligne de code ne fonctionne pas est-ce que quelqu'un peux m'aider ?

#

client.on('message', message => {
  if (message.channel.id === '668908477430759460') {
  if (message.content.channel === 'test') 
      message.reply('ceci est un test')

  }
});

keen narwhal
#
if(!message.channel.id === '668908477430759460') return;
vapid lintel
#

j'ai lu qu'on pouvais mettre deux conditions je sais pas si c'est juste

keen narwhal
#

Essaie de le voir d'une autre manière

#

Le ! avant message.channel.id signifie l'inverse

#

Qu'elle erreur il te met ?

vapid lintel
#

aucune

#

c'est ça que je comprend pas

keen narwhal
#

Alors l'id du channel n'est pas le bon

vapid lintel
#

je vais voir ça

keen narwhal
#

Euh

#

Wait

#
client.on('message', message => {
  if (!message.channel.id === '668908477430759460') return;
  if (message.content === 'test') {
      message.reply('ceci est un test')
  }
});
#

Voilà

slim anvil
#

Elle veut rien dire ta condition firelesss

vapid lintel
#

ok merci je vais test

keen narwhal
#

Oui j'ai mal mi le '!'

#

Wait

slim anvil
#

Y a pas besoin de le mettre là

keen narwhal
#
client.on('message', message => {
  if (message.channel.id !== '668908477430759460') return;
  if (message.content === 'test') {
      message.reply('ceci est un test')
  }
});
slim anvil
#

La tu es entrain de dire « si il n’y a pas de channel.id

#

voilà

#

C’est mieux

keen narwhal
#

erreur de syntax, je ne sait jamais mdr

#

Limite

#

Double condition

slim anvil
#

tu peux la faire en une fois aussi

vapid lintel
#

Ok nice merci les gars ça fonctionne 😁

keen narwhal
#
client.on('message', message => {
  if (message.channel.id === '668908477430759460' && message.content === 'test') {
      message.reply('ceci est un test')
  }
});
#

Voilà

#

C'est plus "opti"

vapid lintel
#

ok je vois

slim anvil
#

non le plus opti ce serait de le faire en 2 fois

keen narwhal
#

Visuellement c'est plus propre mdr

slim anvil
#

car il peut être dans le bon channel mais ne pas être === a test

keen narwhal
#

Je m'exprime mal

slim anvil
#

non plus tu as une condition à rallonge

#

mais bon si y a que ça, ça va le faire

vapid lintel
#

Déso les gars j'ai encore un autre problème lorsque je fait ce code le message se spam a l'infini (je veux juste que quand ce message est pas dans ce channel ça envoie un message comme quoi il faut envoyer dans le bon channel

#

client.on('message', message => {
  if (message.channel.id === '668908477430759460' && message.content === 'test') {
      message.reply('ceci est un test')
  }
  else (!message.channel.id != '668908477430759460' && message.content === 'test'); 
    message.reply("tu n'es pas dans le bon channel")
  }
);

keen narwhal
#

Condition que si c'est le bot

#
client.on('message', message => {
  if(message.author.bot) return;
  if(message.channel.id === '668908477430759460' && message.content === 'test') {
      message.reply('ceci est un test')
  }
  else{ 
    (!message.channel.id != '668908477430759460' && message.content === 'test'); 
  }
    message.reply("tu n'es pas dans le bon channel")
  }
);```
vapid lintel
#

hum ok je vais test

#

alors ça marche

keen narwhal
#

Reprend celui que j'ai edit

vapid lintel
#

ha ok

keen narwhal
#

Wait

#

Logique

#

Mais wait 2s

#
client.on('message', message => {
    if(message.author.bot) return;
    if(message.content !== 'test') return;
    if(message.channel.id === "668908477430759460"){
        message.reply('ceci est un test');
    }else{
        message.reply("tu n'es pas dans le bon channel");
    }
);```
#

Kado

#

Eua

#

Non

#

Voilà

vapid lintel
#

j'ai une erreur

keen narwhal
#

La qu'elle ?

vapid lintel
#

SyntaxError: Unexpected token ')'

keen narwhal
#

Oupsi

#
client.on('message', message => {
    if(message.author.bot) return;
    if(message.content !== 'test') return;
    if(message.channel.id === "668908477430759460"){
        message.reply('ceci est un test');
    }else{
        message.reply("tu n'es pas dans le bon channel");
    }
});```
#

Voilà xD

#

J'AI OUBLIE UN }

#

Oof

vapid lintel
#

Merci

#

ça fonctionne niquel

#

déso d'avoir pris du temps X)

keen narwhal
#

Tkt

keen narwhal
#

Bonjour , je voudrais mettre une image pour mon bot discord et faire en sorte que a chaque commande il y a sont image + le text

Genre

Bot test à 12h30
"logo du bot" "Vous avez fait la commande test, voici les disponibilité."

#

Tu peux pas

#

Triste

#

Ou alors sa rendra pas le rendu que tu veux toi

#

Il on réusi a mettre l'image

#

Il fait préciser dans la vie

#

Pour un embed*

#

C'est un setURL

#

Un true du style

#

Soit tu crée une const avec ton embed alors la syntaxe est :

author: { 		
  name: 'Some name', 		
  icon_url: 'https://i.imgur.com/wSTFkRM.png', 		
  url: 'https://discord.js.org', 	
},```
#

Comment je le rajoute sur ma commande help , c'est comme celle de serveurmc mais pour le help

#

Sinon c'est :

.setAuthor('Some name', 'https://i.imgur.com/wSTFkRM.png', 'https://discord.js.org')```
#

Et si tu ne veux pas mettre de lien cliquable,

.setAuthor('Some name', 'https://i.imgur.com/wSTFkRM.png', null)```
#

Il faut se documenter dans la vie

#

Je comprend pas leurre system

#

Pourtant il est très clair

#

Je recherche mesage.author sa me mais des truc bizarre

#

Tu te fou de moi

#

Je te l'ai envoyé hier !

#

Non

#

Sa marcher pas , sa me mais undifine donc j'ai chercher d'autre truc

#

message.member.avatarURL

#

Sa me mais undefine

#
var test = bot.users.get("198773727025037313")

Du coup la c'est, test.avatarURL

#

Et si tu me dis que ça marche pas c'est soit tu te fail dans ton code ou soit t'es modules/packages ne sont pas a jour

slim anvil
#

defaultAvatarURL

#

je sais pas si il y a une diff mais tu as celui ci aussi

keen narwhal
#

Ok merci Enzo x)

slim anvil
#

bah merci fireless surtout

keen narwhal
#

Je vais me retenir

slim anvil
#

j'étais juste ce qu'on appelle la cerise sur le gateau

keen narwhal
#

xD

#

Et il me semble pas que sa existe @slim anvil

errant rampart
#

Oui c'est si le mec n'as pas d'avatar il me semble

keen narwhal
#

Voilà

slim anvil
#

c'est sa photo

keen narwhal
#

Mais c'est pas se qu'il veut

slim anvil
#

si il en a une

keen narwhal
#

Non

slim anvil
#

et si il en a pas

#

c'est l'avatar par defaut

errant rampart
#

Ça prend les avatar par défaut sinon ça return null

slim anvil
#

pardon

#

displayAvatarURL

#

c'est ça que je voulais dire

errant rampart
#

Moi j'avais compris chef

slim anvil
#

comme ça si il en a pas tu as le default

#

my bad

keen narwhal
#

J'ai refait avec message.member.avatarURL
mais sa me remais unedefined

slim anvil
#

fais un console.log de ton mesasage.member

#

et tu verras bien ce que tu as dedans

#

comme ça tu verras les autres propriétés de l'objet aussi pour la suite

west plover
#

message.member.avatarURL
c message.author.avatarURL

keen narwhal
#

Ok Guthen je vais essayer , si sa ne marche pas je mais le console.log que Enzo ma dit de faire

#

Sa me donne des liens , sauf que je voudrais l'image de profil de la personnes en rond

slim anvil
#

Oui tu mets le lien dans le parametre

#

discord te le met en image de lui même

#

dans ton setAuthor(name, avatarUrl)

keen narwhal
#

j'ai pas de .setAuthor , j'ai pas fait comme ça

slim anvil
#

et bah regarde en markdown comment mettre une image dans du texte

#

c'est unt ruc comme ça [img](lien de l'image)

keen narwhal
#
if (command === 'help') {
            let color = Math.floor(Math.random() * 16777214) + 1;
            message.channel.send({embed: {
                color: color,
                fields: [
                {
                    name: `${message.author.avatarURL}Voici la liste des commandes disponible:`,
                    value: "**BOT | Developer Creator Area**",
                },
                {
                    name: `8ball`,
                    value: "Vous pouvez faire la commande !8ball <votre question> et le bot y répondra.",
                },
                {
                    name: `stats`,
                    value: "Vous pouvez faire la commande !stats <@membre#0001> pour avoir des informations sur la personnes.",
                },
                {
                    name: `love`,
                    value: "Vous pouvez faire la commande !love <@membre#0001> pour s'avoir a combien de pourcent il vous aime , et vous pouver aussi faire !love pour une personnes aléatoire.",
                },
                {
                    name: `Roulette Russe`,
                    value: "Vous pouvez faire la commande !RouletteRusse , je vous shouaite bonne chance camarade !",
                },
                {
                    name: `gif`,
                    value: "Vous pouvez faire la commande !gif pour avoir un gif aléatoire.",
                },
                {
                    name: `bug`,
                    value: "Vous pouvez faire la commande !bug <description du bug> et le bug nous sera envoyer.",
                },
                {
                    name: `serveurmc`,
                    value: "Vous pouvez faire la commande !serveurmc <ip du serveur> et le bot vous donneras des informations a propos du serveur en question.",
                },
                ],
                }
              });
    }
});
slim anvil
#

ou l'inverses mais on est pas loin je le connais pas par coeur

keen narwhal
#

J'ai fait comme ça

slim anvil
#

bah tu fais juste un

#
author : {
name: message.author.name,
avatarURL: message.author.avatarURL
}
#

i think

keen narwhal
#

Ok , je vais réssayer car j'avais essayer celle de _Fireless mais sa me ma mis une erreur

#

author : le : et Unexpected

west plover
#

faut rajouter une virgule à l’argument d’avant

keen narwhal
#

author,

west plover
#

no

keen narwhal
#

Je suis perdu

west plover
#

Go apprendre les objects en js

keen narwhal
#

Mais wesh

#

Déjà

#

Lire c'est utile dans la vie

#

Car je n'est pas mis AvartarURL

#

Mais icon_Url:

#

@slim anvil

#

Toi aussi

#

Apprend à lire 😭

#
author: { 		
  name: 'Some name', 		
  icon_url: 'https://i.imgur.com/wSTFkRM.png', 		
  url: 'https://discord.js.org', 	
},```
#

C'EST SIMPLE WESH

#

@keen narwhal

#

C'est chaud là les gars

slim anvil
#

Il apprend

keen narwhal
#

Et toi ?

slim anvil
#

De

#

je passe pas ma vie sur la doc de discord

#

j'ai confondus avatarURL et icon_url youhou

keen narwhal
#

Mais une recherche sur Google suffit

#

Il ne cherche pas avant de demander

#

Et sa c'est ouufff

#

Sa rend dingue les gens comme ça

slim anvil
#

ceux qui s'excitent aussi

keen narwhal
#

Je m'excite a cause des gens qui ne cherche pas un minimum 🙂

slim anvil
#

Oui je dis pas le contraire, mais pas besoin d'en faire autant

keen narwhal
#

Bah sa deviens soulant

#

Surtout qu'hier je lui est dis comment faire

#

Et là il reviens ce matin ici pour redemandé

#

Genre....

slim anvil
#

!rule 2 kappa

ancient sonnetBOT
#

:two: Respectez le but des channels.
Si tu as un doute pour savoir où poster ton message, demande le nous dans #general :wink:

errant rampart
#

Et ? Tu as jamais appris toi ? Tu comprenais tout du premier coup ? Chacun à sa vitesse t'apprentissage et sa vitesse d'adaptation. Désolé, on est pas tous parfait

keen narwhal
#

Mais je lui est fais un tuto entierrr

errant rampart
#

Et sa sert strictement à rien de s'énerver contre une personne qui souhaite apprendre, on à pas dit qu'apprendre aux autres c'était simple. Il suffit de s'armer de patience

slim anvil
#

c'est un métier la formation

errant rampart
#

Certaines personne vont très vite percuter, d'autres non c'est comme ça

slim anvil
keen narwhal
#

Je suis désoler d'être aussi nul que ça 😢

west plover
#

je pense que tu devrais apprendre le js aussi 🤔

#

t’aurais plus de facilité à comprendre je pense

keen narwhal
#

Je connais des choses , mais se que je fais et tout nouveau pour moi

slim anvil
#

Faut pas t'excuser, et encore moins d'être nul, tu n'es pas nul, tu es juste au tout début d'un long chemin, après faut que tu apprennes a chercher, c'est important, c'est ce qui te fera progresser, mais gut a raison apprendre les bases du js ce serait mieux avant de se lancer a discord, utiliser des libs sans comprendre ce qu'il y a derrière, c'est pas une bonne chose

#

on apprend a marcher avant de courir

keen narwhal
#

Ouais

sand shore
#

vzy le js, c'est wtf aussi, fait un bot en java c'est mieux kappo

keen narwhal
#

Un bot en java aussi et wtf

sand shore