No description
Find a file
2025-05-13 17:18:33 +02:00
commands fix(db): wrong relation and bad where condition 2025-05-13 16:52:04 +02:00
config feat(xp): new add 2025-05-13 14:11:11 +02:00
exp refactor(xp): remove reducer 2025-05-13 13:26:32 +02:00
user fix(db): using discord_id instead of db's id 2025-05-13 17:18:33 +02:00
.dockerignore ci(docker): missing data folder in dockerignore 2024-04-27 18:39:36 +02:00
.env.example build(deps): update to gokord 0.5.0 2024-05-03 11:36:50 +02:00
.gitignore build(docker): support of force command registration 2024-04-27 18:36:42 +02:00
docker-compose.yml fix(db): using discord_id instead of db's id 2025-05-13 17:18:33 +02:00
Dockerfile fix(db): wrong relation and bad where condition 2025-05-13 16:52:04 +02:00
events.go refactor(xp): remove reducer 2025-05-13 13:26:32 +02:00
go.mod build(go): updapte gokords 2025-05-13 12:08:16 +02:00
go.sum build(go): updapte gokords 2025-05-13 12:08:16 +02:00
les-copaings-bot.service fix(service): cannot escape ' in description 2025-03-05 14:51:36 +01:00
LICENSE Initial commit 2024-04-14 14:04:03 +02:00
main.go fix(db): wrong relation and bad where condition 2025-05-13 16:52:04 +02:00
PRIVACY.md refactor(gorm): remove ...At fields from model 2025-05-13 13:15:59 +02:00
README.md fix(db): wrong relation and bad where condition 2025-05-13 16:52:04 +02:00
updates.json build(gokord): upgrade to v0.5.1 and fix updates.json 2024-07-01 15:57:48 +02:00

Les Copaings Bot

Bot for the private server Discord "Les Copaings"

Features

  • Levels & CopaingXPs
  • Roles management
  • Purge command

CopaingXPs

Functions:

  • xp-message(x;y) = 0.025 x^{1.25}\sqrt{y}+1 where x is the length of the message and y is the diversity of the message (number of different rune)
  • xp-vocal(x)=0.01 x^{1.3}+1 where x is the time spent in vocal (in second)
  • level(x)=0.2 \sqrt{x} where x is the xp
  • level^{-1}(x)=(5x)^2 where x is the level
  • lose(x,y)= x^2\cdot 10^{-2+\ln(x/85)}\cdot\lfloor y/500 +1 \rfloor where x is the inactivity time (hour) and y is the xp

Installation

There are two ways to install the bot: docker and build.

Docker

  1. Clone the repository
$ git clone https://github.com/anhgelus/les-copaings-bot.git
  1. Go into the repository, rename .env.example into .env and customize it: add your token, change the user and the password of the database
  2. Start the compose file
$ docker compose up -d --build

Now you have to edit config/config.toml. You can understand how this config file works below. After editing this file, you have to start again the bot. Every time you edit this file, you must restart the bot.

You can stop the compose file with docker compose down

Build

  1. Clone the repository
$ git clone https://github.com/anhgelus/les-copaings-bot.git
  1. Install Go 1.22+
  2. Go into the repository and build the program
$ go build . 
  1. Run the application through bash (or PowerShell if you are on Windows)

Now you have to edit config/config.toml. You can understand how this config file works below. After editing this file, you have to start again the bot. Every time you edit this file, you must restart the bot.

Config

The main config file is config/config.toml.

The default configuration is

debug = false
author = "anhgelus"

[redis]
address = "localhost:6379"
password = ""
db = 0

[database]
host = "localhost"
user = ""
password = ""
db_name = ""
port = 5432
  • debug is true if the bot is in debug mode (don't turn it on unless you are modifying the source code)
  • author is the author's name
  • [redis].address is the address of redis (using docker, it's redis:6379)
  • [redis].password is the redis's password
  • [redis].db is the db to use
  • [database].host is the host of postgres (using docker, it's postgres)
  • [database].user is the user of postgres to use (using docker, it must be the same value as POSTGRES_USER in .env)
  • [database].password is the user's password of postgres to use (using docker, it must be the same value as POSTGRES_PASSWORD in .env)`
  • [database].db_name is the postgres's database name to use (using docker, it must be the same value as POSTGRES_DB in .env)
  • [database].port is the port of postgres to use (using docker, it's 5432)

Technologies

  • Go 1.22
  • anhgelus/gokord