1.0.7 • Published 4 years ago

discord-class-extend v1.0.7

Weekly downloads
-
License
Apache-2.0
Repository
github
Last release
4 years ago

discord-class-extend

Un etendeur de class pour Discord.js

Comment l'installé ?

npm i discord-class-extend

Comment le setup ?

const discord = require('discord.js'); //Defini le module discord.js
const client = new discord.Client(); //Crée un client pour discord
require('discord-class-extend')(client); 

Fonctions actuellement disponible ?

  • <message>.buttons { functions (async) }
//Assuré vous de l'utilisé sur une propriété <message>
<message>.buttons("content",{ //Vous pouvez mettre l'object directement à la place du content, (pensez à ajouté `content: "Mon contenu"`)
		components:[ //Components, pourra prochainement ne pas forcément être un bouton 
		{
			buttons:[
			{
				style:"blurple", //Par défault blurple, mais peut être : ["blurple","red", "grey","green","url"]
				label:"Un Label", //Optionnel si il y a un emoji
				emoji: {              //Optionnel si il y a un label
					name: "UltraJoy", //Doit être un émoji unicode si il est par défault fournis par discord
					id: "664530307495624744", //Argument optionnel si l'émoji est custom
					animated: false //Argument optionnel si l'émoji est animé (par défault false)
				},
				id:"custom_id" //Obligatoire si le style n'est pas "url"
			},{
				style: "url",
				emoji: {
					name: "😋",
				},
				url:"https://discord.com"  //Button de type URL sans aucun label
			}
			],
			buttons:[
			{
				style:"green",
				emoji: {              
					name: "UltraJoy", 
					id: "664530307495624744", //Une seconde ligne de boutons
					animated: false 
				},
				id:"custom_id"
			}
			]
		}
		]
	})
  • <message>.buttonsReply { functions (async) }
<message>.buttonsReply("content",MessageObject) //Voir message.buttons pour la définition claire
  • <message>.buttonsEdit { functions (async) }
<message>.buttonsEdit("content",MessageObject) //Voir message.buttons pour la définition claire
  • <message>.inlineReply { functions (async) }
<message>.inlineReply("content",{
    mention: true
}) 
// Ou 
<message>.inlineReply({
    content: "content",
    mention: true
}) 

Comment réagir aux boutons ?

Dans votre event "ready" intégré ceci :

  <client>.ws.on('INTERACTION_CREATE', async interaction => {
        if(interaction.data.name){
           client.emit('slashCommands',interaction)
        }else {
           client.emit('button',interaction)  
        }     
})

Deux nouveaux event ont été créer :

  • slashCommands
  • buttons

Pour une slashCommand voici l'objet reçu :

{
    "type": 2,
    "token": "A_UNIQUE_TOKEN",
    "member": {
        "user": {
            "id": 53908232506183680,
            "username": "Mason",
            "avatar": "a_d5efa99b3eeaa7dd43acca82f5692432",
            "discriminator": "1337",
            "public_flags": 131141
        },
        "roles": ["539082325061836999"],
        "premium_since": null,
        "permissions": "2147483647",
        "pending": false,
        "nick": null,
        "mute": false,
        "joined_at": "2017-03-13T19:19:14.040000+00:00",
        "is_pending": false,
        "deaf": false
    },
    "id": "786008729715212338",
    "guild_id": "290926798626357999",
    "data": {
        "options": [{
            "name": "cardname",
            "value": "The Gitrog Monster"
        }],
        "name": "cardsearch",
        "id": "771825006014889984"
    },
    "channel_id": "645027906669510667"
}

Pour un button voici l'objet reçu :

{
    "version": 1,
    "type": 3,
    "token": "unique_interaction_token",
    "message": {
        "type": 0,
        "tts": false,
        "timestamp": "2021-05-19T02:12:51.710000+00:00",
        "pinned": false,
        "mentions": [],
        "mention_roles": [],
        "mention_everyone": false,
        "id": "844397162624450620",
        "flags": 0,
        "embeds": [],
        "edited_timestamp": null,
        "content": "This is a message with components.",
        "components": [
            {
                "type": 1,
                "components": [
                    {
                        "type": 2,
                        "label": "Click me!",
                        "style": 1,
                        "custom_id": "click_one"
                    }
                ]
            }
        ],
        "channel_id": "345626669114982402",
        "author": {
            "username": "Mason",
            "public_flags": 131141,
            "id": "53908232506183680",
            "discriminator": "1337",
            "avatar": "a_d5efa99b3eeaa7dd43acca82f5692432"
        },
        "attachments": []
    },
    "member": {
        "user": {
            "username": "Mason",
            "public_flags": 131141,
            "id": "53908232506183680",
            "discriminator": "1337",
            "avatar": "a_d5efa99b3eeaa7dd43acca82f5692432"
        },
        "roles": [
            "290926798626357999"
        ],
        "premium_since": null,
        "permissions": "17179869183",
        "pending": false,
        "nick": null,
        "mute": false,
        "joined_at": "2017-03-13T19:19:14.040000+00:00",
        "is_pending": false,
        "deaf": false,
        "avatar": null
    },
    "id": "846462639134605312",
    "guild_id": "290926798626357999",
    "data": {
        "custom_id": "click_one",
        "component_type": 2
    },
    "channel_id": "345626669114982999",
    "application_id": "290926444748734465"
}

Pour y répondre utilisé ce bout de code très simple :

//Pour répondre à un bouton
client.on("button", button => {
client.api.interactions(button.id, button.token).callback.post({data: {
    type: 4,
	data: {
    flags: 64,
    content: "Mon super message de réponse !"
    },
}})
})

//Pour répondre à une slash commande
client.on("slashCommands", slash => {
client.api.interactions(slash.id, slash.token).callback.post({data: {
    type: 4,
	data: {
    flags: 64,
    content: "Mon super message de réponse !"
    },
}})
})		

Régle importante :

  • Vous pouvez seulement mettre 5 boutons par buttonsObject <buttons:[]>
  • Vous pouvez faire jusqu'a 5 lignes de components
  • Vous pouvez intégré 25 colonnes par message (soit 25 boutons pour un seul message
1.0.7

4 years ago

1.0.6

4 years ago

1.0.5

4 years ago

1.0.4

4 years ago

1.0.2

4 years ago

1.0.1

4 years ago

1.0.0

4 years ago