Skip to main content
Version: Next

Configuration

Env

The first thing you have to do after installing the template is to setup the environments variables. TSCord supports .env files out-of-the-box.

You'll find a .env.example file in the root directory with the following key/values pairs under the discord category:

KeyValueRequired
BOT_TOKENYour discord bot token (can be found here)
TEST_GUILD_IDThe ID of the guild where you'll make tests with your bot
BOT_OWNER_IDThe discord ID of bot owner

Once you have filled up the required values, rename the file from .env.example to .env.

Configs

Nearly all the configuration of the bot lives in the src/config/ folder. It is then splitted in separated files by concern.

General

src/config/general.ts
export const generalConfig = {

name: 'tscord', // the name of your bot
description: '', // the description of your bot
defaultLocale: 'en', // default language of the bot, must be a valid locale
owner: process.env['BOT_OWNER_ID'] || '',
timezone: 'Europe/Paris', // default TimeZone to well format and localize dates (logs, stats, etc)

simpleCommandsPrefix: '!', // default prefix for simple command messages (old way to do commands on discord)
automaticDeferring: true, // enable or not the automatic deferring of the replies of the bot on the command interactions

// useful links
links: {
invite: 'https://www.change_invite_link_here.com',
supportServer: 'https://discord.com/your_invitation_link',
gitRemoteRepo: 'https://github.com/barthofu/tscord',
},

automaticUploadImagesToImgur: false, // enable or not the automatic assets upload

devs: [], // discord IDs of the devs that are working on the bot (you don't have to put the owner's id here)

eval: {
name: 'bot', // name to trigger the eval command
onlyOwner: false // restrict the eval command to the owner only (if not, all the devs can trigger it)
},

// define the bot activities (phrases under its name). Types can be: PLAYING, LISTENING, WATCHING, STREAMING
activities: [
{
text: 'discord.js v13',
type: 'PLAYING'
},
{
text: 'some knowledge',
type: 'STREAMING'
}
]
}

// global colors
export const colorsConfig = {

primary: '#2F3136'
}

Database

For more info about the Mikro-ORM config (which holds, for instance, the database connection information), head over here.

src/config/database.ts²
export const databaseConfig: DatabaseConfigType = {

path: './database/', // path to the folder containing the migrations and SQLite database (if used)

// config for setting up an automated backup of the database (ONLY FOR SQLITE)
backup: {
enabled: false,
path: '' // path to the backups folder (should be in the database/ folder)
}
}

Logs

src/config/logs.ts
export const logsConfig: LogsConfigType = {

debug: false, // set the discordx client debug logs
logTailMaxSize: 50, // max size of the last logs kept in memory

archive: {
enabled: true, // is the auto-archiving enabled or not
retention: 30, // the number of days to keep the logs
},

// for each type of log, you can precise :
// - if the log should be consoled
// - if the log should be saved to the log files
// - if the log should be sent to a discord channel (providing its IP)

interaction: {
file: true,
console: true,
channel: null,

// exclude some interactions types
exclude: [
'BUTTON_INTERACTION',
'SELECT_MENU_INTERACTION'
]
},

simpleCommand: {
file: true,
console: true,
channel: null
},

newUser: {
file: true,
console: true,
channel: null
},

guild: {
file: true,
console: true,
channel: null
},

error: {
file: true,
console: true,
channel: null
}
}

Stats

src/config/stats.ts
export const statsConfig: StatsConfigType = {

interaction: {

// exclude interaction types from being recorded as stat
exclude: [
'BUTTON_INTERACTION',
'SELECT_MENU_INTERACTION'
]
}
}

API

src/config/api.ts
export const apiConfig: APIConfigType = {

enabled: false, // is the API server enabled or not
port: process.env['API_PORT'] ? parseInt(process.env['API_PORT']) : 4000, // the port on which the API server should be exposed
}