Π‘Π°ΠΉΡ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π°: https://igc.su.
ΠΡΠΈΠ²Π°ΡΠ½ΡΠΉ Π±ΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π·Π²Π΅ΡΠ½ΡΡΡ Π½Π° Π»ΡΠ±ΠΎΠΌ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π΅.
# Create work dirs
mkdir /var/bot/
mkdir /var/logs/bot/IGCb/
# Clone rep
cd /var/bot
git clone git@github.com:IGCsu/IGCb.git
# ... configure DB ...
# Set environment
cp IGCb/.env.example IGCb/.env
# Run start bot
cd /var/bot/IGCb
bash bot.sh # Absolute path not working
/index.js
- ΠΈΠ½Π΄Π΅ΠΊΡΠ½ΡΠΉ ΡΠ°ΠΉΠ»: ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΡΡΡdiscord.js
ΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅, ΠΏΠΎΡΠ»Π΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ/init.js
./init.js
- ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠ°ΠΉΠ» ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ: Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ ΡΠ°ΠΉΠ»Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ./init/
- Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ Ρ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π±ΠΎΡΠ°./commands/
- Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ Ρ ΠΌΠΎΠ΄ΡΠ»ΡΠΌΠΈ Π±ΠΎΡΠ°./functions/
- Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ Ρ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ Π±ΠΎΡΠ°./locales/
- Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ Ρ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ Π±ΠΎΡΠ°./helpTexts/
- Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ Ρ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ Π±ΠΎΡΠ°./.env
- ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π±ΠΎΡΠ°.
/init/constants.js
- ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π±Π°Π·ΠΎΠ²ΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ./init/commands.js
- ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π²ΡΠ΅Ρ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ ΠΈΠ·/commands/
./init/locales.js
- ΠΏΠΎΠ΄Π³ΡΡΠ·ΠΊΠ° Π²ΡΠ΅Ρ ΡΠ°ΠΉΠ»ΠΎΠ² Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈΠ·/locales/
./init/functions.js
- ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π²ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈΠ·/functions/
./init/guild.js
- ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ Π³ΠΈΠ»ΡΠ΄ΠΈΠΈ./init/globalErrorHandler.js
- ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΎΡΠ»ΠΎΠ²Π° ΠΎΡΠΈΠ±ΠΎΠΊ./init/interactionCreate.js
- ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠΎΡΠ»ΡΡΠΊΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠΉ./init/sessionId.js
- ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ID ΡΠ΅ΡΡΠΈΠΈ Π±ΠΎΡΠ°./init/setActivity.js
- ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΡΠ°ΡΡΡΠ° Π±ΠΎΡΠ°./init/startMessage.js
- ΠΎΡΠΏΡΠ°Π²ΠΊΠ° ΡΡΠ°ΡΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ./init/protection.js
- ΡΡΠ΅Π±ΡΠ΅Ρ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΏΡΠΈ ΠΏΠΎΠΏΡΡΠΊΠ΅ Π·Π°ΠΏΡΡΠΊΠ° Π½Π° Π·Π°ΡΠΈΡΡΠ½Π½ΠΎΠΌ ΠΊΠ»ΠΈΠ΅Π½ΡΠ΅.
/commands/
Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ
ΠΏΠ°ΠΏΠΎΠΊ.
ΠΠ°ΠΏΠΊΠ° ΠΌΠΎΠ΄ΡΠ»Ρ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» ./index.js
, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ ΠΈΠ· /commands.js
.
ΠΠΎΠ΄ΡΠ»Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΊΡΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΌΠΎΠ΄ΡΠ»Ρ:
module.exports = {
/**
* Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ ΠΌΠΎΠ΄ΡΠ»Ρ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΌΠΎΠ΄ΡΠ»ΡΠΌΠΈ.
* ΠΠ½Π΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½.
*/
active: (Boolean), // required
/**
* ΠΠ°ΡΠ΅Π³ΠΎΡΠΈΡ ΠΌΠΎΠ΄ΡΠ»Ρ. ΠΠΎΠΏΡΡΠΊΠ°Π΅ΡΡΡ Π»ΡΠ±ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.
*/
category: (String), // not required (default: "ΠΡΡΠ°Π»ΡΠ½ΡΠ΅")
/**
* ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΡΠ»Ρ. ΠΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΎ Π½Π°Π·Π²Π°Π½ΠΈΡ ΡΠ°ΠΉΠ»Π°.
*/
name: (String), // required, lower case only (!)
/**
* ΠΠΎΡΠΎΡΠΊΠΎΠ΅ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΡΠ»Ρ. Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ.
* ΠΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½Π°Ρ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΡ - ΡΡΡΡΠΊΠ°Ρ.
* ΠΠ»Ρ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΠ·ΡΠΊΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΎΡΠΌΠ°Ρ ISO 639-1
*/
title: (Object) { // required
[Language code ISO 639-1]: (String)
},
/**
* ΠΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠ° Π΄Π»Ρ ΡΠ»Π΅Ρ-ΠΊΠΎΠΌΠ°Π½Π΄Ρ. Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ.
* ΠΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½Π°Ρ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΡ - ΡΡΡΡΠΊΠ°Ρ.
* ΠΠ»Ρ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΠ·ΡΠΊΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΎΡΠΌΠ°Ρ ISO 639-1.
*/
description: (Object) { // not required (default: this.title)
[Language code ISO 639-1]: (String)
},
/**
* ΠΠΏΡΠΈΠΈ Π΄Π»Ρ ΡΠ»Π΅Ρ-ΠΊΠΎΠΌΠ°Π½Π΄Ρ. ΠΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΅ΡΠ»ΠΈ ΡΠ»Π΅Ρ-ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Π½ΡΠΆΠ½Ρ ΠΊΠ°ΠΊΠΈΠ΅ ΡΠΎ ΠΎΠΏΡΠΈΠΈ.
*/
slashOptions: (Object) { // not required
/**
* Π‘ΡΡΡΠΊΡΡΡΠ° ΠΎΠΏΡΠΈΠΉ ΠΎΡΠ½ΠΎΠ²Π°Π½Π° Π½Π° ΡΡΠ΅Π±ΡΠ΅ΠΌΠΎΠΉ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ API discord, ΠΎΠ΄Π½Π°ΠΊΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ:
* * ΠΠ±ΡΠ΅ΠΊΡ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ "name" - ΠΎΠ½ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡΡΡ Π² ΠΊΠ»ΡΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ°.
* * ΠΠ±ΡΠ΅ΠΊΡ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ "name_localizations" - Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π°Π·Π²Π°Π½ΠΈΠΉ Π½Π΅Π΄ΠΎΠΏΡΡΡΠΈΠΌΠ°.
* * ΠΠ·ΠΌΠ΅Π½ΡΠ½ "description". ΠΠ½ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ.
* ΠΠ°ΠΌΠ΅Π½ΡΠ΅Ρ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ "description" ΠΈ "description_localizations".
* * ΠΠ·ΠΌΠ΅Π½ΡΠ½ "choices". ΠΠ½ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ².
* Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΊΠ»ΡΡΠ° - Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΠ°.
* Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Ρ Π½Π°Π·Π²Π°Π½ΠΈΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
* * ΠΠ·ΠΌΠ΅Π½ΡΠ½ "options". ΠΠΌΠ΅ΡΡΠΎ Π½Π΅Π³ΠΎ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ "slashOptions".
* Π Π°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΠΉ "slashOptions".
* https://discord.com/developers/docs/interactions/application-commands#application-command-object-application-command-option-structure
*/
[Options name]: (Object) {
/**
* Π’ΠΈΠΏ ΠΎΠΏΡΠΈΠΈ.
* https://discord.com/developers/docs/interactions/application-commands#application-command-object-application-command-option-type
*/
type: (Number), // required
required: (Boolean), // not required (default: false)
/**
* ΠΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠ° Π΄Π»Ρ ΠΎΠΏΡΠΈΠΈ. Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ.
* ΠΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½Π°Ρ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΡ - ΡΡΡΡΠΊΠ°Ρ.
* ΠΠ»Ρ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΠ·ΡΠΊΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΎΡΠΌΠ°Ρ ISO 639-1.
*/
description: (Object) { // required
[Language code ISO 639-1]: (String)
},
/**
* ΠΠΏΡΠΈΠΈ Π΄Π»Ρ ΠΎΠΏΡΠΈΠΈ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΡ
ΠΎΠΏΡΠΈΠΉ.
*/
slashOptions: (Object) { // not required
[Options name] (Object) { ... }
},
/**
* ΠΠ°ΡΠΈΠ°Π½ΡΡ Π²ΡΠ±ΠΎΡΠ°.
*/
choices: { // not required
[Value choices] : (Object) {
[Language code ISO 639-1]: (String)
}
}
}
},
/**
* Π€ΡΠ½ΠΊΡΠΈΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΡΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠΎΠ΄ΡΠ»Ρ.
* ΠΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΏΡΡΡ ΠΊ ΡΠ΅ΠΊΡΡΠ΅ΠΌΡ ΡΠ°ΠΉΠ»Ρ. ΠΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΎ Π΄Π»Ρ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
* ΠΡΠ΅Π³Π΄Π° Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΌΠΎΠ΄ΡΠ»Ρ (this).
* @param {String} path ΠΡΡΡ ΠΊ ΡΠ°ΠΉΠ»Ρ
* @return {Object} this
*/
init: async function(path){ // required
// ΠΡΠΈΠΌΠ΅Ρ ΠΎΡΠΈΠ±ΠΊΠΈ: Π² Π»ΠΎΠ³ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ ΠΎΡΠΈΠ±ΠΊΠ°, Π° ΠΌΠΎΠ΄ΡΠ»Ρ ΠΏΠ΅ΡΠ΅ΡΡΠ°ΡΡ Π±ΡΡΡ Π°ΠΊΡΠΈΠ²Π½ΡΠΌ.
if(error){
log.initText += log.error(path + ': ΠΡΠΎΠΈΠ·ΠΎΡΠ»Π° ΠΎΡΠΈΠ±ΠΊΠ°');
this.active = false;
return this;
}
return this;
},
/**
* ΠΠ½Π΄Π΅ΠΊΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΌΠΎΠ΄ΡΠ»Ρ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π±Π°Π·ΠΎΠ²ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΈ Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΠΈΠ· Π²Ρ
ΠΎΠ΄Π½ΡΡ
ΡΡΠ½ΠΊΡΠΈΠΉ
*/
call: (Function), // required
/**
* Π€ΡΠ½ΠΊΡΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ slash-ΠΊΠΎΠΌΠ°Π½Π΄Ρ.
* ΠΡΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ - ΡΠΎ ΠΏΡΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΡΠ»Π΅Ρ-ΠΊΠΎΠΌΠ°Π½Π΄Π° Ρ Π΄Π°Π½Π½ΡΠΌΠΈ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΈ slashOptions, Π΅ΡΠ»ΠΈ ΡΠΎΡ ΠΈΠΌΠ΅Π΅ΡΡΡ.
* @param {CommandInteraction} int
*/
slash: async function(int){ // not required
await this.call(int);
},
/**
* Π€ΡΠ½ΠΊΡΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π½Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΈ.
* ΠΡΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ - ΡΠΎ ΠΏΡΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½Π°Ρ-ΠΊΠΎΠΌΠ°Π½Π΄Π° Π½Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅.
* @param {ContextMenuInteraction} int
*/
contextMessage: async function(int){ // not required
await this.call(int);
},
/**
* Π€ΡΠ½ΠΊΡΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π½Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅.
* ΠΡΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ - ΡΠΎ ΠΏΡΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½Π°Ρ-ΠΊΠΎΠΌΠ°Π½Π΄Π° Π½Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ.
* @param {UserContextMenuInteraction} int
*/
contextUser: async function(int){ // not required
await this.call(int);
},
/**
* Π€ΡΠ½ΠΊΡΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.
* ΠΡΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ - ΡΠΎ ΠΏΡΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠΎΠ΄ΡΠ»Ρ Π±ΡΠ΄Π΅Ρ ΡΠΎΡ
ΡΠ°Π½ΡΠ½ Π² ΠΌΠΎΠ΄ΡΠ»Π΅ handler.
* @param {Message} msg
*/
message: async function(msg){ // not required
...
},
/**
* Π€ΡΠ½ΠΊΡΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π°Π²ΡΠΎΠ·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
* https://discord.js.org/#/docs/discord.js/stable/class/AutocompleteInteraction
* @param {AutocompleteInteraction} int
*/
autocomplete: (Function), // not required
/**
* Π€ΡΠ½ΠΊΡΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΌΠΎΠ΄Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°.
* https://discord.js.org/#/docs/discord.js/stable/class/ModalSubmitInteraction
* @param {ModalSubmitInteraction} int
*/
modal: (Function), // not required
/**
* Π€ΡΠ½ΠΊΡΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΊΠ½ΠΎΠΏΠΎΠΊ.
* https://discord.js.org/#/docs/discord.js/stable/class/MessageComponentInteraction
* @param {MessageComponentInteraction} int
*/
button: (Function), // not required
/**
* Π€ΡΠ½ΠΊΡΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ΅Π»Π΅ΠΊΡΠΎΡΠ°.
* https://discord.js.org/#/docs/discord.js/stable/class/SelectMenuInteraction
* @param {SelectMenuInteraction} int
*/
selectMenu: (Function) // not required
};
ΠΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΡΠ°Π·Π±ΠΈΠ²Π°ΡΡ ΠΊΠΎΠ΄ ΠΏΠΎ ΡΠ°ΠΉΠ»Π°ΠΌ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΠΎ Π²ΡΠ΅Ρ
ΠΌΠΎΠ΄ΡΠ»ΡΡ
Π²ΡΠ½Π΅ΡΠ΅Π½Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ "slashOptions", "title" ΠΈ "description" Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ ./slashOptions.json
ΠΈ ./about.json
.
Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ ΠΌΠΎΠ΄ΡΠ»Ρ README ΡΠ°ΠΉΠ», Ρ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΡΠΌΠΈ ΡΠ°Π±ΠΎΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΌΠΈ ΠΈΠΌΠΈ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ.
ΠΠΎΠ΄ΡΠ»ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡΡΡ Π² Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ commands
, ΠΈ Π΅Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π΄ΡΡΠ³ΠΈΠΌ ΠΌΠΎΠ΄ΡΠ»ΡΠΌ.
Π£ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π²Ρ ΠΎΠ΄Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΈΠΏΠ° "slash" ΠΈΠ»ΠΈ "contextUser".
ΠΠΎΡ ΠΈΠΌΠ΅Π΅Ρ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠ½ΠΈ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Ρ Π²/functions/
Π² Π²ΠΈΠ΄Π΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ
ΡΠ°ΠΉΠ»ΠΎΠ².
Π€Π°ΠΉΠ» ΡΡΠ½ΠΊΡΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π² global
ΡΡΠ½ΠΊΡΠΈΡ ΠΈΠ»ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ.
Π€ΡΠ½ΠΊΡΠΈΠΈ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ ΠΎΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ ΡΠ²ΠΎΠ΅ΠΉ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΠΎΡΡΡΡ. ΠΡΠΎ ΠΏΡΠΎΡΡΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΌ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΎΠΌ: Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΡΠΎ ΡΠΎ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ, ΡΡΠΎ ΡΠΎ Π΄Π΅Π»Π°ΡΡ ΠΈ ΡΡΠΎ ΡΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ.
Π¦Π΅Π»Ρ ΡΠ°ΠΊΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ - Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π±Π°Π·ΠΎΠ²ΡΡ Π·Π°Π΄Π°Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΠΎΡΠ½ΠΎΡΡΡΡΡ ΠΊ ΠΊΠ°ΠΊΠΎΠΌΡ Π»ΠΈΠ±ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ. Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΎΠ»ΡΠΊΠΎ Π΅ΡΠ»ΠΈ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ ΠΈΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² ΡΠ°Π·Π½ΡΡ ΠΌΠΎΠ΄ΡΠ»ΡΡ . Π ΡΡΠ½ΠΊΡΠΈΡΡ Π΄ΠΎΠΏΡΡΡΠΈΠΌΠ° ΠΈΠ½ΠΊΠ°ΠΏΡΡΠ»ΡΡΠΈΡ.
Π€Π°ΠΉΠ»Ρ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Ρ Π² Π΄Π²ΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡ :/helpTexts/
ΠΈ /locales/
.
Π /locales/
ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡ ΡΠ°ΠΉΠ»Ρ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ .json
, ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΡ.
Π /helpTexts/
ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡ ΡΠ°ΠΉΠ»Ρ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ .md
. ΠΡΠΈ ΡΠ°ΠΉΠ»Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΌΠΎΠ΄ΡΠ»Π΅. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΠΌΠΎΠ΄ΡΠ»Π΅ help
.
ΠΡΠ»ΠΈ ΡΠ°ΠΉΠ» ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ, ΠΏΡΠΈ help-Π·Π°ΠΏΡΠΎΡΠ΅ Ρ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΌ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΌ, ΡΠΎ ΡΠ΅ΠΊΡΡ Π±ΡΠ΄Π΅Ρ Π²ΡΠ²Π΅Π΄Π΅Π½ Π² ΡΠΌΠ±Π΅Π΄.
# ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π΄Π»Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊ MySQL Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ
DB_DATABASE=<database>
DB_PASSWORD=<password>
DB_HOST=<host>
DB_USER=<user>
# ID ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°. ΠΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ Π² ΡΡΠ°ΡΡΠΎΠ²ΠΎΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΈ ΠΈ ΠΏΠΈΠ½Π³ΡΠ΅ΡΡΡ Π² ΡΠ»ΡΡΠ°Π΅ ΠΎΡΠΈΠ±ΠΊΠΈ
DEVELOPER=<UserID>
# Π’ΠΎΠΊΠ΅Π½ Π±ΠΎΡΠ°
TOKEN=<TOKEN>