Aller au contenu

Configuration

Vous êtes maintenant prêt à configurer votre bot iHorizon auto-hébergé. Cette étape consiste à modifier le fichier de configuration afin de fournir votre token de bot Discord et de personnaliser d'autres options.

Modifier le fichier de configuration

Ouvrez le fichier config.example.ts situé dans ihrz/src/files/config.example.ts et remplacez "THE BOT TOKEN" par votre véritable token de bot Discord :

src/files/config.example.ts
import { ConfigData } from "../../types/configDatad.js";

const config: ConfigData = {
    discord: {
        token: "THE BOT TOKEN",
        // The Discord Bot Token. This can be found in the Discord Developer Portal of your bot

        phonePresence: false,
        // If the bot should have a Phone Bot Activity Presence, aka having a telephone icon in its profile when online, Do-Not-Disturb, etc.

Options de configuration

Le fichier est découpé en blocs, un par domaine du bot. Seul discord.token doit obligatoirement être rempli avant le premier démarrage ; toutes les autres options modifient le comportement d'iHorizon une fois qu'il est en ligne.


discord

Option Type Requis
token String Oui
phonePresence Boolean Oui
messageCommandsMention Boolean Non
defaultMessageCommandsPrefix String Non

token est le token du bot que vous avez copié depuis le Discord Developer Portal.

Avec messageCommandsMention défini à true, les commandes textuelles se déclenchent en mentionnant le bot. Définissez-le à false si vous préférez un préfixe classique, et indiquez ce préfixe dans defaultMessageCommandsPrefix (? dans le fichier d'exemple).

phonePresence

Définir phonePresence à true fait apparaître le statut en ligne du bot comme s'il était connecté depuis un téléphone :

Statut de type téléphone sur le profil de iHorizon

src/files/config.example.ts
    discord: {
        token: "THE BOT TOKEN",
        // The Discord Bot Token. This can be found in the Discord Developer Portal of your bot

        phonePresence: false,
        // If the bot should have a Phone Bot Activity Presence, aka having a telephone icon in its profile when online, Do-Not-Disturb, etc.

        messageCommandsMention: true,
        /* If is in true, the message commands (prefix commands) are trigerable with @Bot-Mention,
            else, change propriety defaultMessageCommandsPrefix bellow for your default-prefix
        */

Option Type Requis
nodes Array Oui

nodes liste les serveurs Lavalink utilisés pour la lecture musicale. Chaque entrée demande un id de votre choix, le host et le port du serveur, son mot de passe authorization, et secure défini à true si le nœud est joint via TLS.

src/files/config.example.ts
    lavalink: {
        nodes: [
            {
                id: "example_node",
                // The ID of the Node

                host: "lavalink.example.com",
                // The Host of the Node

                port: 2333,
                // The port of the Node

                authorization: "password",
                // The password of the Node

                secure: false
            }
        ]
    },

Les commandes de musique restent muettes tant qu'aucun nœud n'est joignable.


core

Option Type Requis
devMode Boolean Oui
blacklistPictureInEmbed String Non
guildLogsChannelID String Oui
lavalinkLogsChannelID String Non
reportChannelID String Oui

Avec devMode défini à true, les erreurs sont affichées dans la console. Définissez-le à false et elles sont écrites dans le dossier .err.logs à la place.

blacklistPictureInEmbed prend l'URL d'une image .png, affichée dans l'embed que reçoit un utilisateur blacklisté lorsqu'il tente d'interagir avec le bot.

Les trois identifiants de salon déterminent où le bot rapporte ce qui lui arrive : guildLogsChannelID reçoit un message quand le bot rejoint ou quitte un serveur, lavalinkLogsChannelID reçoit les erreurs de Lavalink, et reportChannelID reçoit les bugs signalés par les utilisateurs via le bot.

src/files/config.example.ts
    core: {
        devMode: true,
        // if true => ERRORS will be displayed in the console; if false => these ERRORS will be located in the .err.logs folder.

        blacklistPictureInEmbed: "A .png URL",
        // Optional: The image of the blacklist embed (when a blacklisted user attempts to interact with the bot)

        guildLogsChannelID: "The Discord Channel ID for logs when guildCreate/guildRemove",
        // The channel where the bot informs of his arrival on a server or when it leaves a server.

        lavalinkLogsChannelID: "The Discord Channel ID for logs when lavalink throws an error",
        // The channel where the error will be sent when lavalink throws an error.

        reportChannelID: "The Discord Channel ID for logs when bugs are reported"
        // The channel where the bot informs of a bug reported by a user of the bot.
    },

command

Option Type Requis
always100 Array Oui

always100 liste les couples d'utilisateurs dont le score de /love est toujours de 100 %. Écrivez chaque couple sous la forme {USER_ID_ONE}x{USER_ID_TWO}, et laissez le tableau vide si vous n'en avez pas l'usage.


owners

Option Type Requis
users Array Oui

Le paramètre owners définit les utilisateurs autorisés à effectuer des actions de blacklist et de unblacklist, ou à exécuter la commande /eval (qui permet d'exécuter du code JavaScript directement sur votre bot auto-hébergé) :

src/files/config.example.ts
    owners: {
        users: ["User ID", "User ID"]
        /*
        These owners have different permissions than others in the database,

        * They can't be unowner by an owner who is in the Database.
        * They can't be blacklisted by an owner who is in the Database.
        * They can't be banned by an owner who is in the Database.
        */
    },

api

Option Type Requis
apiToken String Non

apiToken accompagne les requêtes que le bot envoie à l'API d'iHorizon, par exemple celles derrière les commandes /authrestore. Choisissez une valeur robuste et gardez-la privée.


lastfm

Option Type Requis
apiKey String Non
sharedSecret String Non

Ces deux valeurs proviennent d'un compte API Last.fm et ne sont nécessaires que si vous souhaitez faire fonctionner le module de scrobbling Last.fm. Sinon, vous pouvez retirer le bloc entier.


console

Option Type Requis
emojis Object Oui

emojis contient les cinq émojis qui préfixent les messages du bot dans la console : OK, ERROR, HOST, KISA et LOAD. Les modifier ne change rien d'autre que ce que vous lisez dans votre terminal.


database

Option Type Requis
method String Oui
mySQL Array Non

method sélectionne le driver, et accepte sqlite, json, memory, postgresql ou cached_postgres.

sqlite est utilisé par défaut et stocke tout dans src/files/db.sqlite, tandis que json écrit dans src/files/db.json. memory conserve les données uniquement en RAM, elles sont donc perdues dès que le bot s'arrête.

postgresql et cached_postgres se connectent à un serveur PostgreSQL avec les identifiants du tableau mySQL (host, user, password, database et port). cached_postgres sert les données depuis la mémoire et les renvoie vers PostgreSQL toutes les cinq minutes.

src/files/config.example.ts
    database: {
        method: "sqlite",
        // The method you want for the database, sqlite is used by default.

        mySQL: [
            {
                host: "",
                password: "",
                database: "",
                user: "",
                port: 3306
            }
        ]
        // The MySQL connection configuration if you want to use MySQL. MySQL is not the default, meaning you need to set it up yourself.
    }

Finalisation

Une fois que vous avez terminé les modifications nécessaires, renommez le fichier de config.example.ts en config.ts.

Vous êtes maintenant prêt à démarrer le bot ! Continuez vers Démarrer le bot.