Skip to content

IGCsu/IGCb

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Π‘ΠΎΡ‚ сообщСства IGC.

Π‘Π°ΠΉΡ‚ сообщСства: https://igc.su.

ΠŸΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹ΠΉ Π±ΠΎΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π½Π° любом сообщСствС.

Install

# 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

Π€Π°ΠΉΠ»Ρ‹ рСпозитория:

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ Π±ΠΎΡ‚Π°

  • /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-запросС с ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ, Ρ‚ΠΎ тСкст Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½ Π² эмбСд.

.env

# ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ MySQL Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…
DB_DATABASE=<database>
DB_PASSWORD=<password>
DB_HOST=<host>
DB_USER=<user>

# ID Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°. ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ΡΡ Π² стартовом сообщСнии ΠΈ пингуСтся Π² случаС ошибки
DEVELOPER=<UserID>

# Π’ΠΎΠΊΠ΅Π½ Π±ΠΎΡ‚Π°
TOKEN=<TOKEN>