đģ Example Config
# ===========================================================================
# Basic Settings
# You must not leave them as blank!
# ===========================================================================
BasicSettings:
Token: "TOKEN" # Discord bot's token, required to log into Discord. Keep this secure and never share it.
GuildID: "GUILD_ID" # The ID of the Discord server (Guild) the bot will run in.
MongoURI: "mongodb+srv://<username>:<password>@your-cluster.mongodb.net/?retryWrites=true&w=majority&appName=YourApp" # MongoDB connection URI for database access.
ShowStats: false # Whether or not to show stats (like total products, licenses, etc.) at bot startup.
License: "" # License key for your bot (optional if using license system).
# ===========================================================================
# Presence Settings
# Customize how the bot appears in the Discord user list.
# ===========================================================================
Presence:
Status: "idle" # Bot's online status: "idle", "dnd", "invisible", or "online".
Activity:
Enabled: true # Whether the bot should display an activity status (Playing, Watching, etc.).
Type: "Competing" # Type of activity: "Playing", "Competing", "Watching", or "Listening".
Intervall: 5 # How often (in seconds) the bot should update its activity status.
Texts:
# Variables:
# {total-channels} - Total Channels
# {total-members} - Total Members (Bots included)
# {total-user} - Total Members (No Bots)
# {total-products} - Total Products
# {total-licenses} - Total Licenses
# {total-requests} - Total Requests
# {successful-requests} - Successful Requests
# {rejected-requests} - Rejected Requests
- "{total-products} - Total Products"
- "{total-user} - Total Members"
- "{total-members} - Total Members (Bots included)"
- "{total-channels} - Total Channels"
- "{total-licenses} - Total Licenses"
- "{total-requests} - Total Requests"
- "{successful-requests} - Successful Requests"
- "{rejected-requests} - Rejected Requests"
# ===========================================================================
# API Settings
# Configuration for the bot's license API, used for license authentication.
# ===========================================================================
ApiSettings:
Port: 3000 # The port the API will run on.
APIKey: "API_KEY" # The API key to use for license validation. Use Password Generator but do not use backslashes (\\) in the key.
Ratelimit:
Enabled: true # Whether to enable rate limiting for API requests.
Max: 100 # Maximum number of API requests allowed per minute.
RequireHWID: true # Whether to require HWID (Hardware ID) in the API requests.
# ===========================================================================
# Role Settings
# Role-based access control for different features.
# Staff Licenses are licenses that work for all products.
# ===========================================================================
Roles:
ClientRole: "ROLE_ID" # Role ID to assign to users when they receive a license. They will also recieve the product license. (Leave Blank to disable)
ListProducts: ["ROLE_ID"] # Roles that can list products.
CreateProduct: ["ROLE_ID"] # Roles that can create products.
DeleteProduct: ["ROLE_ID"] # Roles that can delete products.
ChangeVersion: ["ROLE_ID"] # Roles that can change product versions.
ListLicenses: ["ROLE_ID"] # Roles that can list licenses.
CreateLicense: ["ROLE_ID"] # Roles that can create licenses.
EditLicense: ["ROLE_ID"] # Roles that can edit licenses.
SearchLicense: ["ROLE_ID"] # Roles that can search licenses.
DeleteLicense: ["ROLE_ID"] # Roles that can delete licenses.
ListBlacklist: ["ROLE_ID"] # Roles that can list blacklist entries.
CreateBlacklist: ["ROLE_ID"] # Roles that can create blacklist entries.
RemoveBlacklist: ["ROLE_ID"] # Roles that can remove blacklist entries.
CreateStaffLicense: ["ROLE_ID"] # Roles that can create staff licenses.
RemoveStaffLicense: ["ROLE_ID"] # Roles that can remove staff licenses.
EditStaffLicense: ["ROLE_ID"] # Roles that can edit staff licenses.
# ===========================================================================
# Logging Settings
# Logging configuration for various events in the bot.
# This includes channels for different types of logs such as errors, requests, and statistics.
# ===========================================================================
Logging:
Enabled: true
AdvancedLogging: # This only applies to License Logs. (And ofcourse Requests will be stored in this file too.)
Enabled: true # Whether to enable advanced logging features.
PostName: "{userid}-logs" # The name of the post for the user in the Forum Channel. | NOTE: To enable this feature for any Logging type below, you must set the ChannelID to a Forum Channel ID.
ForumChannelID: "CHANNEL_ID" # The ID of the Forum Channel where logs will be posted.
StoreRequests: true # Wether to store requests in the Thread of the user.
StoreLicenses: true # Wether to store licenses in the Thread of the user.
# Available variables for PostName:
# {userid} - Discord User ID
# {username} - Discord Username
# {discriminator} - Discord Discriminator (0000)
# {tag} - Full Discord Tag (username#discriminator)
# {licensekey} - License Key
# {product} - Product Name
# {timestamp} - Current Date (YYYY-MM-DD)
# Note: If you already created Licenses, it will not automatically create the Forum Channel for you. You must set it in the MongoDB dashboard manually.
# Note2: If you do set "StoreLicenses" to true, but you still have Channels set for License Creation, etc. it will store them in the Thread AND in the specified Channel.
Product:
ProductCreation: "CHANNEL_ID" # Channel for logging product creation events. | Leave blank to disable.
ProductDeletion: "CHANNEL_ID" # Channel for logging product deletion events. | Leave blank to disable.
ProductVersionChange: "CHANNEL_ID" # Channel for logging product version change events. | Leave blank to disable.
License:
LicenseCreation: "CHANNEL_ID" # Channel for logging license creation events. | Leave blank to disable.
LicenseDeletion: "CHANNEL_ID" # Channel for logging license deletion events. | Leave blank to disable.
LicenseUpdate: "CHANNEL_ID" # Channel for logging license update events. | Leave blank to disable.
StaffLicenseCreation: "CHANNEL_ID" # Channel for logging staff license creation events. | Leave blank to disable.
StaffLicenseDeletion: "CHANNEL_ID" # Channel for logging staff license deletion events. | Leave blank to disable.
StaffLicenseUpdate: "CHANNEL_ID" # Channel for logging staff license update events. | Leave blank to disable.
Blacklist:
BlacklistCreation: "CHANNEL_ID" # Channel for logging blacklist creation events. | Leave blank to disable.
BlacklistRemoval: "CHANNEL_ID" # Channel for logging blacklist removal events. | Leave blank to disable.
Request:
RequestSuccess: "CHANNEL_ID" # Channel for logging successful requests. | Leave blank to disable.
RequestRejected: "CHANNEL_ID" # Channel for logging rejected requests. | Leave blank to disable.
# ===========================================================================
# Product Settings
# Settings related to products in the system.
# ===========================================================================
ProductSettings:
ListEph: true # Whether to display the product list in an ephemeral message (only visible to the user).
CreateEph: true # Whether to send the product creation confirmation in an ephemeral message.
DeleteEph: true # Whether to send the product deletion confirmation in an ephemeral message.
VersionEph: true # Whether to send the version change confirmation in an ephemeral message.
# ===========================================================================
# License Settings
# We recommend keeping ephemeral messages enabled to protect sensitive information.
# ===========================================================================
LicenseSettings:
ListEph: true # Whether to send the license list in an ephemeral message.
SearchEph: true # Whether to send the license search result in an ephemeral message.
DeleteEph: true # Whether to send the license deletion confirmation in an ephemeral message.
LicensePrefix: "TKI - " # The prefix added to license keys.
Amount: 15 # Total number of characters (numbers and/or letters) in the license key.
IncludeLetters: true # Whether to include letters in the license key.
IncludeNumbers: true # Whether to include numbers in the license key.
UseHyphens: true # Whether to include hyphens in the license key.
HyphenEvery: 5 # Insert a hyphen after every N characters.
# ===========================================================================
# Chart Settings
# Basic configuration for chart text and colors.
# ===========================================================================
ChartSettings:
Labels:
TotalRequests: "Total Requests"
SuccessfulRequests: "Successful Requests"
RejectedRequests: "Rejected Requests"
Colors:
TotalRequests: "rgb(255, 99, 132)"
SuccessfulRequests: "rgb(75, 192, 192)"
RejectedRequests: "rgb(255, 159, 64)"
AxisTitles:
XAxis: "Date" # Title for the X-axis
YAxis: "Number of Requests" # Title for the Y-axis
# ===========================================================================
# Command Settings
# Enable or disable commands and provide descriptions.
# ===========================================================================
Commands:
License:
Enabled: true # Enable or disable the License command.
Description: "Create, Edit, Delete Licenses." # Description of the License command.
Product:
Enabled: true # Enable or disable the Product command.
Description: "Create, Edit, Delete Products." # Description of the Product command.
MyLicense:
Enabled: true # Enable or disable the MyLicense command.
Description: "View your Licenses." # Description of the MyLicense command.
Blacklist:
Enabled: true # Enable or disable the Blacklist command.
Description: "Add or Remove Blacklists." # Description of the Blacklist command.
Statistic:
Enabled: true # Enable or disable the Stats command.
Description: "View the Statistics of the License Bot." # Description of the Stats command.
# ===========================================================================
# Language Settings
# Customize language settings for blacklist command responses.
# ===========================================================================
Locale:
License:
permission_create: "You don't have permission to create licenses." # Message when a user lacks permission to create licenses.
permission_edit: "You don't have permission to edit licenses." # Message when a user lacks permission to edit licenses.
permission_search: "You don't have permission to search for licenses." # Message when a user lacks permission to search licenses.
permission_list: "You don't have permission to list licenses." # Message when a user lacks permission to list licenses.
permission_delete: "You don't have permission to delete licenses." # Message when a user lacks permission to delete licenses.
license_not_found: "License with key {licenseKey} not found." # Message when the specified license isn't found. | Variables: {licenseKey}
delete_confirm_description: "You are about to delete the following license:\n\n> - License Key: ||{licenseKey}||\n> - Product: {product}\n> - User: {userId}\n> - Created By: {createdBy}\n> - Latest IP: ||{latestIP}||\n> - Latest HWID: ||{latestHWID}||" # Description for the license deletion confirmation. | Variables: {licenseKey}, {product}, {userId}, {createdBy}, {latestIP}, {latestHWID}
no_permission_action: "You're not allowed to do that!" # Message shown when a user attempts an action they are not allowed to perform. | EX. pressing a button if they did not execute the command
delete_success: "License has been successfully deleted." # Message when a license is successfully deleted.
delete_error: "An error occurred while deleting the license." # Message when an error occurs while deleting a license.
delete_declined: "License deletion got declined!" # Message when the deletion process is declined by the user.
invalid_expiry_value: "Invalid expiry value. It should be a number." # Message when expiry value is invalid.
invalid_ip_cap_value: "Invalid IP Cap value. It should be a number." # Message when IP Cap value is invalid.
invalid_hwid_cap_value: "Invalid HWID Cap value. It should be a number." # Message when HWID Cap value is invalid.
invalid_discord_id: "Invalid Discord ID. It should be a valid ID with max 20 digits." # Message when Discord ID is invalid.
invalid_field_selected: "Invalid field selected." # Message when an invalid field is selected.
license_update_success: "License {licenseKey} has been updated successfully." # Message when license is updated successfully.
invalid_search_criteria: "Invalid search criteria." # Message for invalid search criteria.
no_licenses_found: "No licenses found for the provided {criteria}." # Message when no licenses are found.
search_title: "License Search {index}/{totalLicenses}" # Title of the license search result page. | Variables: {index}, {totalLicenses}
search_description: "> - Key: ||{licenseKey}||\n> - Product: {product}\n> - User: <@{discord_id}>\n> - Latest IP: ||{latest_ip}||\n> - Latest HWID: ||{latest_hwid}||\n> - Expiry: {expiryText}\n> - Created by: <@{createdBy}>\n> - Total Requests: {total_requests}" # Description of the license search result. | Variables: {licenseKey}, {product}, {discord_id}, {latest_ip}, {latest_hwid}, {expiryText}, {createdBy}, {total_requests}
search_error: "An error occurred while searching for the license." # Message when an error occurs during license search.
no_products_found: "No products available to create a license for." # Message when no products are found for license creation.
select_product_prompt: "Please select a product for the license:" # Prompt message for selecting a product when creating a license.
no_product_found: "Selected product not found." # Message shown when a selected product cannot be found.
enter_user_id: "{userMention}, Please enter the User ID (only numbers, max 20 digits):" # Message when asking the user to input a valid User ID.
enter_user_id_empty: "You did not enter anything. Please enter a valid User ID or mention a user." # Message when the user input is empty.
invalid_user_id: "Invalid input. Please enter a User ID (max. 20 digits and only numbers) or mention a user." # Message when the user input is invalid.
user_not_found: "User not found on the server. Please try again." # Message when a user is not found on the server.
no_user_input: "No User was mentioned or the user ID was entered. Please try again." # Message when no user was mentioned or entered.
LicenseDMEmbed:
Title: "License for {product} created for you!" # Configurable title. Supported variables: {product}, {creatorUserid}, {licenseKey}.
Color: "#0099ff" # Hex color code for the embed.
ThumbnailEnabled: true # Enables or disables the thumbnail.
CustomThumbnail: "{userPfp}" # Custom thumbnail (e.g., user avatar, URL). Supported variables: {serverPfp}, {userPfp}, {creatorPfp}.
Description: "You've received a new License!\n\n> - Product: {product}\n> - License: ||{licenseKey}||" # Configurable description with variables.
Fields: # List of fields in the embed. Supported variables: {product}, {licenseKey}, {creatorId}, {creatorId2} - Use this if you've alread.
- name: "âĸ License Details:"
value: "> - Product: **{product}**\n> - License: ||{licenseKey}||\n> - Created by: <@{creatorId}> ( {creatorId2} )"
- name: "âĸ Expiry"
value: "This license will expire: **{expiry}**"
Timestamp: true # Shows the timestamp in the embed.
save_success: "License for product **{product}** has been saved successfully! " # Message when license is saved successfully
dm_success: "The user has been DM'd." # Message when the DM is sent successfully
dm_failed: "The user could not be DM'd. Please send him his License directly. He can also use /mylicenses." # Message when the DM fails
fetch_error: "An error occurred while fetching the licenses. Please try again later." # Configurable message for license fetching errors
Product:
permission_create: "You don't have permission to create products." # Message when the user lacks permission to create a product
permission_list: "You don't have permission to list products." # Message when the user lacks permission to list products
permission_delete: "You don't have permission to delete products." # Message when the user lacks permission to delete a product
permission_version: "You don't have permission to change the version of products." # Message when the user lacks permission to change the version of a product
invalid_product_name_length: "Product name must be between 3 and 25 characters." # Message for invalid product name length
invalid_description_length: "Description must be between 10 and 200 characters." # Message for invalid description length
invalid_version_format: "Invalid version format! Please use the format x.x.x (e.g., 1.0.0)." # Message for invalid version format
no_products_found_list: "No products found." # Message when no products are found for the List Command
no_product_found_delete: "No product found with the name {productName}." # Message when no product is found delete command | Variables: {productName}
delete_success: "Product **{productName}** and **{deletedLicenses}** associated license(s) have been deleted successfully." # Message when a product and its licenses are deleted | Variables: {productName}, {deletedLicenses}
delete_cancelled: "Product deletion cancelled." # Message when product deletion is cancelled
no_products_available_change_version: "No products available to change version." # Message when no products are found for the version change
selected_product_not_found: "Selected product not found." # Message when a selected product cannot be found
no_permission_action: "You're not allowed to do this!" # Message when a user attempts an action they are not allowed to perform.
same_version_error: "The version you entered is the same as the current version (**{currentVersion}**). Please enter a different version." # Message when the entered version is the same as the current one. | Variables: {currentVersion}
version_change_success: "Version successfully changed from: **{oldVersion}** to **{newVersion}**." # Message for successful version change. | Variables: {oldVersion}, {newVersion}
Blacklist:
already_blacklisted: "This {type} is already blacklisted." # Message shown when the entry is already blacklisted. | Variables: {type}
successfully_blacklisted: "Successfully blacklisted the {type}: {value}." # Message when an entry is successfully blacklisted. | Variables: {type}, {value}
no_blacklist_entries: "No blacklist entries found." # Message when there are no blacklist entries to display. | No variables
successfully_removed: "Successfully removed the {type} from the blacklist: {value}." # Message when an entry is successfully removed from the blacklist. | Variables: {type}, {value}
not_found: "No blacklist entry found for {type}: {value}." # Message when trying to remove an entry that doesn't exist. | Variables: {type}, {value}
MyLicense:
no_licenses: "You don't have any licenses." # Message when the user doesn't have any licenses. | No variables
fetch_error: "An error occurred while fetching your licenses." # Message when there's an error fetching licenses. | No variables
license_embed_title: "License {index}/{total}" # Title of the embed showing license information. | Variables: {index}, {total}
license_embed_description: "> - **License Key:** ||{licenseKey}||\n> - **Product:** {product}\n> - **IP Cap:** {ipCap}\n> - **HWID Cap:** {hwidCap}\n> - **Expiry:** {expiry}" # Description of the license embed. | Variables: {licenseKey}, {product}, {ipCap}, {hwidCap}, {expiry}
button_first: "âĒ" # Label for the "First" button. | No variables
button_previous: "âī¸" # Label for the "Previous" button. | No variables
button_next: "âļī¸" # Label for the "Next" button. | No variables
button_last: "âŠ" # Label for the "Last" button. | No variables
page_indicator: "{currentPage}/{totalPages}" # Label for the page indicator button. | Variables: {currentPage}, {totalPages}
no_pages: "No pages available." # Message when there are no pages available. | No variables
Statistic:
no_requests: "No requests were made for this date." # Message when no requests are found for the selected period.
fetching_error: "An error occurred while fetching the statistics data." # Message shown if there's an error fetching statistics data.
stats_embed_title: "Request Statistics - {period}" # Embed title for the statistics. | Variables: {period} (All-Time, Last 7 Days, Today)
stats_embed_description: "Statistics for {period}." # Description of the statistics embed. | Variables: {period}
stats_total_products: "Total Products" # Label for total products in the embed.
stats_total_licenses: "Total Licenses" # Label for total licenses in the embed.
stats_total_requests: "Total Requests" # Label for total requests in the embed.
stats_successful_requests: "Successful Requests" # Label for successful requests in the embed.
stats_rejected_requests: "Rejected Requests" # Label for rejected requests in the embed.
no_permission_action: "You're not allowed to do that!" # Message shown if a user attempts an unauthorized action.
StatisticsEmbed:
Title: "Request Statistics - {period}" # Embed title with variables. | Variables: {period}
Color: "#0099ff" # Embed color in hex.
ThumbnailEnabled: false # Enable/disable thumbnail.
CustomThumbnail: "{serverPfp}" # Custom thumbnail, supports variables like {serverPfp}, {userPfp}.
Description: "Statistics for {period}." # Embed description. | Variables: {period}
Fields: # List of fields in the embed with configurable names and values.
- name: "{stats_total_products}"
value: "{totalProducts}"
inline: true
- name: "{stats_total_licenses}"
value: "{totalLicenses}"
inline: true
- name: "{stats_total_requests}"
value: "{total_requests}"
inline: true
- name: "{stats_successful_requests}"
value: "{successful_requests}"
inline: true
- name: "{stats_rejected_requests}"
value: "{rejected_requests}"
inline: true
Timestamp: true # Show timestamp in the embed.