Added base project files.
This commit is contained in:
parent
396a8adf72
commit
62976908f2
12 changed files with 4232 additions and 0 deletions
9
.dockerignore
Normal file
9
.dockerignore
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
.DS_Store
|
||||||
|
node_modules/
|
||||||
|
.git/
|
||||||
|
.vscode/
|
||||||
|
docs/
|
||||||
|
*.log
|
||||||
|
*.tar.gz
|
||||||
|
*.tar
|
||||||
|
.env
|
24
.env.example
Normal file
24
.env.example
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
@@ -1,23 +0,0 @@
|
||||||
|
# Bot Token [Required]
|
||||||
|
BOT_TOKEN=
|
||||||
|
|
||||||
|
# Mongo Database Connection String [Required]
|
||||||
|
MONGO_CONNECTION=
|
||||||
|
|
||||||
|
# Webhooks [Optional]
|
||||||
|
ERROR_LOGS=
|
||||||
|
JOIN_LEAVE_LOGS=
|
||||||
|
|
||||||
|
# Dashboard [Required for dashboard]
|
||||||
|
BOT_SECRET=
|
||||||
|
SESSION_PASSWORD=
|
||||||
|
|
||||||
|
# Required for Weather Command (https://weatherstack.com)
|
||||||
|
WEATHERSTACK_KEY=
|
||||||
|
|
||||||
|
# Required for image commands (https://strangeapi.fun/docs)
|
||||||
|
STRANGE_API_KEY=
|
||||||
|
|
||||||
|
# SPOTFIY [Required for Spotify Support]
|
||||||
|
SPOTIFY_CLIENT_ID=
|
||||||
|
SPOTIFY_CLIENT_SECRET=
|
24
.eslintrc.json
Normal file
24
.eslintrc.json
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
{
|
||||||
|
"env": {
|
||||||
|
"node": true,
|
||||||
|
"commonjs": true,
|
||||||
|
"es2021": true
|
||||||
|
},
|
||||||
|
"extends": "eslint:recommended",
|
||||||
|
"parserOptions": {
|
||||||
|
"ecmaVersion": 12
|
||||||
|
},
|
||||||
|
"plugins": [
|
||||||
|
"jsdoc"
|
||||||
|
],
|
||||||
|
"rules": {
|
||||||
|
"no-unused-vars": [
|
||||||
|
"error",
|
||||||
|
{
|
||||||
|
"args": "none"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"jsdoc/no-undefined-types": 1,
|
||||||
|
"no-cond-assign": 0
|
||||||
|
}
|
||||||
|
}
|
8
.gitattributes
vendored
Normal file
8
.gitattributes
vendored
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
# Files that shouldn't be exported
|
||||||
|
.gitattributes export-ignore
|
||||||
|
.gitignore export-ignore
|
||||||
|
.vscode export-ignore
|
||||||
|
README.md export-ignore
|
||||||
|
|
||||||
|
# Line endings
|
||||||
|
* text=auto
|
6
.gitignore
vendored
Normal file
6
.gitignore
vendored
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
.DS_Store
|
||||||
|
.vscode/
|
||||||
|
node_modules/
|
||||||
|
*.log
|
||||||
|
*.tar.gz
|
||||||
|
.env
|
11
.prettierrc.json
Normal file
11
.prettierrc.json
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
{
|
||||||
|
"trailingComma": "es5",
|
||||||
|
"tabWidth": 2,
|
||||||
|
"useTabs": false,
|
||||||
|
"semi": true,
|
||||||
|
"singleQuote": false,
|
||||||
|
"printWidth": 120,
|
||||||
|
"bracketSpacing": true,
|
||||||
|
"arrowParens": "always",
|
||||||
|
"endOfLine": "lf"
|
||||||
|
}
|
134
config.js
Normal file
134
config.js
Normal file
|
@ -0,0 +1,134 @@
|
||||||
|
module.exports = {
|
||||||
|
OWNER_IDS: [""], // Bot owner ID's
|
||||||
|
SUPPORT_SERVER: "", // Your bot support server
|
||||||
|
PREFIX_COMMANDS: {
|
||||||
|
ENABLED: true, // Enable/Disable prefix commands
|
||||||
|
DEFAULT_PREFIX: "!", // Default prefix for the bot
|
||||||
|
},
|
||||||
|
INTERACTIONS: {
|
||||||
|
SLASH: false, // Should the interactions be enabled
|
||||||
|
CONTEXT: false, // Should contexts be enabled
|
||||||
|
GLOBAL: false, // Should the interactions be registered globally
|
||||||
|
TEST_GUILD_ID: "xxxxxxxxxxx", // Guild ID where the interactions should be registered. [** Test you commands here first **]
|
||||||
|
},
|
||||||
|
EMBED_COLORS: {
|
||||||
|
BOT_EMBED: "#068ADD",
|
||||||
|
TRANSPARENT: "#36393F",
|
||||||
|
SUCCESS: "#00A56A",
|
||||||
|
ERROR: "#D61A3C",
|
||||||
|
WARNING: "#F7E919",
|
||||||
|
},
|
||||||
|
CACHE_SIZE: {
|
||||||
|
GUILDS: 100,
|
||||||
|
USERS: 10000,
|
||||||
|
MEMBERS: 10000,
|
||||||
|
},
|
||||||
|
MESSAGES: {
|
||||||
|
API_ERROR: "Unexpected Backend Error! Try again later or contact support server",
|
||||||
|
},
|
||||||
|
|
||||||
|
// PLUGINS
|
||||||
|
|
||||||
|
AUTOMOD: {
|
||||||
|
ENABLED: false,
|
||||||
|
LOG_EMBED: "#36393F",
|
||||||
|
DM_EMBED: "#36393F",
|
||||||
|
},
|
||||||
|
|
||||||
|
DASHBOARD: {
|
||||||
|
enabled: false, // enable or disable dashboard
|
||||||
|
baseURL: "http://localhost:8080", // base url
|
||||||
|
failureURL: "http://localhost:8080", // failure redirect url
|
||||||
|
port: "8080", // port to run the bot on
|
||||||
|
},
|
||||||
|
|
||||||
|
ECONOMY: {
|
||||||
|
ENABLED: false,
|
||||||
|
CURRENCY: "₪",
|
||||||
|
DAILY_COINS: 100, // coins to be received by daily command
|
||||||
|
MIN_BEG_AMOUNT: 100, // minimum coins to be received when beg command is used
|
||||||
|
MAX_BEG_AMOUNT: 2500, // maximum coins to be received when beg command is used
|
||||||
|
},
|
||||||
|
|
||||||
|
MUSIC: {
|
||||||
|
ENABLED: false,
|
||||||
|
IDLE_TIME: 60, // Time in seconds before the bot disconnects from an idle voice channel
|
||||||
|
MAX_SEARCH_RESULTS: 5,
|
||||||
|
DEFAULT_SOURCE: "SC", // YT = Youtube, YTM = Youtube Music, SC = SoundCloud
|
||||||
|
// Add any number of lavalink nodes here
|
||||||
|
// Refer to https://github.com/freyacodes/Lavalink to host your own lavalink server
|
||||||
|
LAVALINK_NODES: [
|
||||||
|
{
|
||||||
|
host: "localhost",
|
||||||
|
port: 2333,
|
||||||
|
password: "youshallnotpass",
|
||||||
|
id: "Local Node",
|
||||||
|
secure: false,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
|
||||||
|
GIVEAWAYS: {
|
||||||
|
ENABLED: false,
|
||||||
|
REACTION: "🎁",
|
||||||
|
START_EMBED: "#FF468A",
|
||||||
|
END_EMBED: "#FF468A",
|
||||||
|
},
|
||||||
|
|
||||||
|
IMAGE: {
|
||||||
|
ENABLED: false,
|
||||||
|
BASE_API: "https://strangeapi.hostz.me/api",
|
||||||
|
},
|
||||||
|
|
||||||
|
INVITE: {
|
||||||
|
ENABLED: false,
|
||||||
|
},
|
||||||
|
|
||||||
|
MODERATION: {
|
||||||
|
ENABLED: false,
|
||||||
|
EMBED_COLORS: {
|
||||||
|
TIMEOUT: "#102027",
|
||||||
|
UNTIMEOUT: "#4B636E",
|
||||||
|
KICK: "#FF7961",
|
||||||
|
SOFTBAN: "#AF4448",
|
||||||
|
BAN: "#D32F2F",
|
||||||
|
UNBAN: "#00C853",
|
||||||
|
VMUTE: "#102027",
|
||||||
|
VUNMUTE: "#4B636E",
|
||||||
|
DEAFEN: "#102027",
|
||||||
|
UNDEAFEN: "#4B636E",
|
||||||
|
DISCONNECT: "RANDOM",
|
||||||
|
MOVE: "RANDOM",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
PRESENCE: {
|
||||||
|
ENABLED: false, // Whether or not the bot should update its status
|
||||||
|
STATUS: "online", // The bot's status [online, idle, dnd, invisible]
|
||||||
|
TYPE: "WATCHING", // Status type for the bot [PLAYING | LISTENING | WATCHING | COMPETING]
|
||||||
|
MESSAGE: "{members} members in {servers} servers", // Your bot status message
|
||||||
|
},
|
||||||
|
|
||||||
|
STATS: {
|
||||||
|
ENABLED: false,
|
||||||
|
XP_COOLDOWN: 5, // Cooldown in seconds between messages
|
||||||
|
DEFAULT_LVL_UP_MSG: "{member:tag}, You just advanced to **Level {level}**",
|
||||||
|
},
|
||||||
|
|
||||||
|
SUGGESTIONS: {
|
||||||
|
ENABLED: false, // Should the suggestion system be enabled
|
||||||
|
EMOJI: {
|
||||||
|
UP_VOTE: "⬆️",
|
||||||
|
DOWN_VOTE: "⬇️",
|
||||||
|
},
|
||||||
|
DEFAULT_EMBED: "#4F545C",
|
||||||
|
APPROVED_EMBED: "#43B581",
|
||||||
|
DENIED_EMBED: "#F04747",
|
||||||
|
},
|
||||||
|
|
||||||
|
TICKET: {
|
||||||
|
ENABLED: false,
|
||||||
|
CREATE_EMBED: "#068ADD",
|
||||||
|
CLOSE_EMBED: "#068ADD",
|
||||||
|
},
|
||||||
|
};
|
38
docker-compose.yml
Normal file
38
docker-compose.yml
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
version: "4"
|
||||||
|
|
||||||
|
services:
|
||||||
|
discord-js-bot:
|
||||||
|
image: toastie_t0ast/discord-bot:5.5.0
|
||||||
|
container_name: discord-js-bot
|
||||||
|
restart: unless-stopped
|
||||||
|
networks:
|
||||||
|
- discord-js-net
|
||||||
|
volumes:
|
||||||
|
- ./config.js:/usr/src/app/config.js:ro
|
||||||
|
- ./logs:/usr/src/app/logs:rw
|
||||||
|
|
||||||
|
lavalink:
|
||||||
|
image: fredboat/lavalink:dev
|
||||||
|
container_name: discord-js-lavalink
|
||||||
|
hostname: lavalink
|
||||||
|
restart: unless-stopped
|
||||||
|
networks:
|
||||||
|
- discord-js-net
|
||||||
|
volumes:
|
||||||
|
- ./application.yml:/opt/Lavalink/application.yml:ro
|
||||||
|
|
||||||
|
mongodb:
|
||||||
|
image: mongo:latest
|
||||||
|
container_name: discord-js-mongodb
|
||||||
|
restart: unless-stopped
|
||||||
|
networks:
|
||||||
|
- discord-js-net
|
||||||
|
environment:
|
||||||
|
- MONGO_INITDB_ROOT_USERNAME=root
|
||||||
|
- MONGO_INITDB_ROOT_PASSWORD=supersecretpassword
|
||||||
|
volumes:
|
||||||
|
- ./data:/data/db:rw
|
||||||
|
|
||||||
|
networks:
|
||||||
|
discord-js-net:
|
||||||
|
name: discord-js-net
|
32
dockerfile
Normal file
32
dockerfile
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
# Base image
|
||||||
|
FROM node:18-alpine
|
||||||
|
|
||||||
|
# Set the working directory in the container
|
||||||
|
WORKDIR /usr/src/app
|
||||||
|
|
||||||
|
# Copy package.json and package-lock.json to the container
|
||||||
|
COPY package*.json ./
|
||||||
|
|
||||||
|
# Install only production dependencies
|
||||||
|
RUN npm ci --omit=dev
|
||||||
|
|
||||||
|
# Bundle rest of the source code
|
||||||
|
COPY . .
|
||||||
|
|
||||||
|
# Environment variables
|
||||||
|
ENV BOT_TOKEN=
|
||||||
|
ENV MONGO_CONNECTION=
|
||||||
|
ENV ERROR_LOGS=
|
||||||
|
ENV JOIN_LEAVE_LOGS=
|
||||||
|
ENV BOT_SECRET=
|
||||||
|
ENV SESSION_PASSWORD=
|
||||||
|
ENV WEATHERSTACK_KEY=
|
||||||
|
ENV STRANGE_API_KEY=
|
||||||
|
ENV SPOTIFY_CLIENT_ID=
|
||||||
|
ENV SPOTIFY_CLIENT_SECRET=
|
||||||
|
|
||||||
|
# Expose port 8080 for dashboard
|
||||||
|
EXPOSE 8080
|
||||||
|
|
||||||
|
# Define the command to run your Node.js application
|
||||||
|
CMD [ "node", "bot.js" ]
|
28
jsconfig.json
Normal file
28
jsconfig.json
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"module": "CommonJS",
|
||||||
|
"target": "ES6",
|
||||||
|
"baseUrl": "./",
|
||||||
|
"paths": {
|
||||||
|
"@root/*": [
|
||||||
|
"./*"
|
||||||
|
],
|
||||||
|
"@handlers/*": [
|
||||||
|
"./src/handlers/*"
|
||||||
|
],
|
||||||
|
"@helpers/*": [
|
||||||
|
"./src/helpers/*"
|
||||||
|
],
|
||||||
|
"@schemas/*": [
|
||||||
|
"./src/database/schemas/*"
|
||||||
|
],
|
||||||
|
"@src/*": [
|
||||||
|
"./src/*"
|
||||||
|
],
|
||||||
|
"@structures/*": [
|
||||||
|
"./src/structures/*"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"exclude": ["node_modules", "**/node_modules/*"]
|
||||||
|
}
|
3835
package-lock.json
generated
Normal file
3835
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load diff
83
package.json
Normal file
83
package.json
Normal file
|
@ -0,0 +1,83 @@
|
||||||
|
{
|
||||||
|
"name": "discord-bot",
|
||||||
|
"version": "5.5.0",
|
||||||
|
"description": "An open-source, multipurpose discord bot built using discord.js",
|
||||||
|
"main": "bot.js",
|
||||||
|
"author": "toastie_t0ast",
|
||||||
|
"license": "ISC",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=18.0.0"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"dev": "nodemon .",
|
||||||
|
"start": "node .",
|
||||||
|
"format": "prettier --write src",
|
||||||
|
"docker:package": "tar -cf discord-bot.tar dashboard logs src bot.js config.js dockerfile package.json package-lock.json",
|
||||||
|
"docker:build": "docker build -t toastie_t0ast/discord-bot:5.5.0 ."
|
||||||
|
},
|
||||||
|
"homepage": "https://toastielab.dev/toastie_t0ast/discord-bot#readme",
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://toastielab.dev/toastie_t0ast/discord-bot.git"
|
||||||
|
},
|
||||||
|
"bugs": {
|
||||||
|
"url": "https://toastielab.dev/toastie_t0ast/discord-bot/issues"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@lavaclient/queue": "^2.1.1",
|
||||||
|
"@lavaclient/spotify": "^3.1.0",
|
||||||
|
"@vitalets/google-translate-api": "^9.2.0",
|
||||||
|
"ascii-table": "0.0.9",
|
||||||
|
"btoa": "^1.2.1",
|
||||||
|
"common-tags": "^1.8.2",
|
||||||
|
"connect-mongo": "^5.1.0",
|
||||||
|
"country-emoji-languages": "^1.0.0",
|
||||||
|
"discord-giveaways": "^6.0.1",
|
||||||
|
"discord-together": "^1.3.31",
|
||||||
|
"discord.js": "^14.11.0",
|
||||||
|
"dotenv": "^16.3.1",
|
||||||
|
"ejs": "^3.1.9",
|
||||||
|
"enhanced-ms": "^2.3.0",
|
||||||
|
"express": "^4.18.2",
|
||||||
|
"express-session": "^1.18.0",
|
||||||
|
"fixedsize-map": "^1.0.1",
|
||||||
|
"iso-639-1": "^3.1.0",
|
||||||
|
"lavaclient": "^4.1.1",
|
||||||
|
"module-alias": "^2.2.3",
|
||||||
|
"moment": "^2.30.1",
|
||||||
|
"mongoose": "^8.1.1",
|
||||||
|
"nekos.life": "^3.0.0",
|
||||||
|
"node-fetch": "^2.7.0",
|
||||||
|
"os": "^0.1.2",
|
||||||
|
"pino": "^8.18.0",
|
||||||
|
"pino-pretty": "^10.3.1",
|
||||||
|
"pretty-ms": "^7.0.1",
|
||||||
|
"snakecord": "^1.0.9",
|
||||||
|
"sourcebin_js": "^0.0.3-ignore",
|
||||||
|
"string-progressbar": "^1.0.4",
|
||||||
|
"table": "^6.8.1",
|
||||||
|
"timestamp-to-date": "^1.1.0",
|
||||||
|
"twemoji-parser": "^14.0.0"
|
||||||
|
},
|
||||||
|
"optionalDependencies": {
|
||||||
|
"bufferutil": "^4.0.8",
|
||||||
|
"erlpack": "^0.1.4",
|
||||||
|
"utf-8-validate": "^6.0.3",
|
||||||
|
"zlib-sync": "^0.1.9"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"eslint": "^8.56.0",
|
||||||
|
"eslint-plugin-jsdoc": "^46.4.3",
|
||||||
|
"node": "^18.18.2",
|
||||||
|
"nodemon": "^3.0.3",
|
||||||
|
"prettier": "3.2.5"
|
||||||
|
},
|
||||||
|
"_moduleAliases": {
|
||||||
|
"@root": ".",
|
||||||
|
"@handlers": "src/handlers/",
|
||||||
|
"@helpers": "src/helpers/",
|
||||||
|
"@schemas": "src/database/schemas/",
|
||||||
|
"@src": "src/",
|
||||||
|
"@structures": "src/structures/"
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue