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 :
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 :

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
*/
lavalink
| 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.
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.
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é) :
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.
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.