LiBot ========== LiBot (https://libot.eu.org/) is a multi-purpose Discord bot. This is the parent artifact encompassing all other Maven modules. Get LiBot: . . . . . . . . . . . . https://libot.eu.org/get Or try it out in the support guild: https://discord.gg/asDUrbR Building LiBot -------------- Prerequisites: - Maven 3.2.5 or up (https://maven.apache.org/download.cgi) - JDK 17 or up (https://adoptium.net/) - qalculate-helper (https://git.zajc.tel/libot/qalculate-helper.git, optional if you want *calculator from module-utilities to work) Building: Building LiBot should be rather easy: $ git clone git://git.zajc.tel/libot/authoritative.git libot $ cd libot $ mvn clean package -DoutputLocation=/output/path (change /output/path to your preferred output destination) If you would only like to build one module: ... $ mvn clean package -DoutputLocation=/output/path -pl 'module' -am Setting up the environment: LiBot takes configuration from environment variables, which means they need to be set up before running it. The following variables are required: - BOT_PREFIX: the default command prefix used by the bot - DATA_TYPE: the way LiBot stores runtime data. "file" for persistent storage or "memory" to keep data in RAM. - DATA_PATH: a directory where persistent data is kept if DATA_TYPE is "file" - SHRED_TOKEN_name: discord API tokens for shreds. You can define multiple shreds by changing "name" to the desired shred name, eg. SHRED_TOKEN_APOLLO for a shred named APOLLO The following environment variables are optional: - BOT_SYSADMINS: a comma-separated list of discord user IDs for the bot's administrators. Administrators are permitted to run commands from 'module-administrative'. They are also sent any uncaught exception stacktraces. - RESOURCE_GUILDS: a comma-separated list of "resource guilds", guilds containing emoji used by other commands. Resource guilds exempt from shred clash resolution, and warning messages are issued if any of the shreds is not in a particular resource guild. - QALCULATE_HELPER_PATH: path to the built qalculate-helper binary. Required for *calculator from module-utils to work. - QALCULATE_HOME_PATH: path to the home of the user running qalculate-helper. Required for exchange rate updating to work. - GOOGLE_TOKENS: google search API tokens. Required for *google of module-search to work. - YOUTUBE_EMAIL: a youtube account's email. LiBot may not play age-restricted youtube videos without this, but for some reason it works for me, so it may be geolocked. - YOUTUBE_PASSWORD: a youtube account's password. Same reason as for YOUTUBE_EMAIL. - MANAGEMENT_PORT: the port that LiBot's read-only management server should run on. It has a couple of functions such as choosing the best shred ID to authorize and giving out stats. Running LiBot: The easiest way to run LiBot is to run it directly with Maven: $ ./run This will also take care of building LiBot and setting up the environment by reading it from .env in key=value pairs (so make sure you create that file first). If you would instead like to run built module jars, you need to put them on the classpath and run the libot.Main class: $ java -cp \ /modules/core.jar:\ /modules/module-first.jar:\ /modules/module-second.jar:\ /modules/module-last.jar\ libot.Main You can specify as many modules as you want, while core.jar is mandatory.