Made changes
This commit is contained in:
parent
5c5fe202e7
commit
181e50e57b
7 changed files with 3690 additions and 3 deletions
18
.github/dependabot.yml
vendored
Normal file
18
.github/dependabot.yml
vendored
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
# To get started with Dependabot version updates, you'll need to specify which
|
||||||
|
# package ecosystems to update and where the package manifests are located.
|
||||||
|
# Please see the documentation for all configuration options:
|
||||||
|
# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
|
||||||
|
|
||||||
|
version: 2
|
||||||
|
updates:
|
||||||
|
- package-ecosystem: "npm" # See documentation for possible values
|
||||||
|
directory: "/" # Location of package manifests
|
||||||
|
schedule:
|
||||||
|
interval: "daily"
|
||||||
|
open-pull-requests-limit: 5
|
||||||
|
reviewers:
|
||||||
|
- EmotionChild
|
||||||
|
target-branch: "development"
|
||||||
|
labels:
|
||||||
|
- "npm"
|
||||||
|
- "dependencies"
|
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -1,5 +1,4 @@
|
||||||
node_modules
|
node_modules
|
||||||
package-lock.json
|
|
||||||
giveaways.js
|
giveaways.js
|
||||||
config.json
|
config.json
|
||||||
giveaways.json
|
giveaways.json
|
18
Database Examples/README.md
Normal file
18
Database Examples/README.md
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
# Custom/External Database
|
||||||
|
you can use the pre-built available database example in your bot as your need. Read the following carefully to understand the Custom Databases.
|
||||||
|
|
||||||
|
## Database Setup
|
||||||
|
```md
|
||||||
|
SQL Database Setup
|
||||||
|
- Copy the code from the given file from: ./Database Examples/index4mysql.js.
|
||||||
|
- Install the mysql package: `npm i mysql`.
|
||||||
|
- Insert your DB values.
|
||||||
|
and that's it start the bot and it should work.
|
||||||
|
```
|
||||||
|
```md
|
||||||
|
MongoDB Setup
|
||||||
|
- Copy the code from the given file from: ./Database Examples/index4mongo.js.
|
||||||
|
- Install the quickmongo package: npm i quickmongo
|
||||||
|
- Add your connection string in the config file with the following variable: "mongo_url": "your-mongo-connection-string"
|
||||||
|
and that's it start the bot and it should work.
|
||||||
|
```
|
159
Database Examples/index4mysql.js
Normal file
159
Database Examples/index4mysql.js
Normal file
|
@ -0,0 +1,159 @@
|
||||||
|
const fs = require('fs');
|
||||||
|
|
||||||
|
const { Client, Intents } = require('discord.js');
|
||||||
|
const client = new Client({
|
||||||
|
intents: [
|
||||||
|
Intents.FLAGS.GUILDS,
|
||||||
|
Intents.FLAGS.GUILD_MEMBERS,
|
||||||
|
Intents.FLAGS.GUILD_MESSAGE_REACTIONS
|
||||||
|
]
|
||||||
|
});
|
||||||
|
const config = require('./config.json');
|
||||||
|
client.config = config;
|
||||||
|
|
||||||
|
// Load MySQL
|
||||||
|
const MySQL = require('mysql');
|
||||||
|
const sql = MySQL.createConnection({
|
||||||
|
host: 'localhost',
|
||||||
|
user: 'Your MySQL user',
|
||||||
|
password: 'Your MySQL password',
|
||||||
|
database: 'Your MySQL database',
|
||||||
|
charset: 'utf8mb4' // In order to save emojis in the database correctly
|
||||||
|
});
|
||||||
|
sql.connect((err) => {
|
||||||
|
if (err) {
|
||||||
|
// Stop the process if we can't connect to the MySQL server
|
||||||
|
throw new Error('Impossible to connect to MySQL server. Code: ' + err.code);
|
||||||
|
} else {
|
||||||
|
console.log('[SQL] Connection to the MySQL server! Connection ID: ' + sql.threadId);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Create giveaways table
|
||||||
|
sql.query(`
|
||||||
|
CREATE TABLE IF NOT EXISTS \`giveaways\`
|
||||||
|
(
|
||||||
|
\`id\` INT(1) NOT NULL AUTO_INCREMENT,
|
||||||
|
\`message_id\` VARCHAR(20) NOT NULL,
|
||||||
|
\`data\` JSON NOT NULL,
|
||||||
|
PRIMARY KEY (\`id\`)
|
||||||
|
);
|
||||||
|
`, (err) => {
|
||||||
|
if (err) console.error(err);
|
||||||
|
console.log('[SQL] Created table `giveaways`');
|
||||||
|
});
|
||||||
|
|
||||||
|
const { GiveawaysManager } = require('discord-giveaways');
|
||||||
|
const GiveawaysManagerWithOwnDatabase = class extends GiveawaysManager {
|
||||||
|
// This function is called when the manager needs to get all giveaways which are stored in the database
|
||||||
|
async getAllGiveaways() {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
sql.query('SELECT `data` FROM `giveaways`', (err, res) => {
|
||||||
|
if (err) {
|
||||||
|
console.error(err);
|
||||||
|
return reject(err);
|
||||||
|
}
|
||||||
|
const giveaways = res.map((row) =>
|
||||||
|
JSON.parse(row.data, (_, v) => (typeof v === 'string' && /BigInt\("(-?\d+)"\)/.test(v)) ? eval(v) : v)
|
||||||
|
);
|
||||||
|
resolve(giveaways);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// This function is called when a giveaway needs to be saved in the database.
|
||||||
|
async saveGiveaway(messageId, giveawayData) {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
sql.query(
|
||||||
|
'INSERT INTO `giveaways` (`message_id`, `data`) VALUES (?,?)',
|
||||||
|
[messageId, JSON.stringify(giveawayData, (_, v) => typeof v === 'bigint' ? `BigInt("${v}")` : v)],
|
||||||
|
(err, res) => {
|
||||||
|
if (err) {
|
||||||
|
console.error(err);
|
||||||
|
return reject(err);
|
||||||
|
}
|
||||||
|
resolve(true);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// This function is called when a giveaway needs to be edited in the database.
|
||||||
|
async editGiveaway(messageId, giveawayData) {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
sql.query(
|
||||||
|
'UPDATE `giveaways` SET `data` = ? WHERE `message_id` = ?',
|
||||||
|
[JSON.stringify(giveawayData, (_, v) => typeof v === 'bigint' ? `BigInt("${v}")` : v), messageId],
|
||||||
|
(err, res) => {
|
||||||
|
if (err) {
|
||||||
|
console.error(err);
|
||||||
|
return reject(err);
|
||||||
|
}
|
||||||
|
resolve(true);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// This function is called when a giveaway needs to be deleted from the database.
|
||||||
|
async deleteGiveaway(messageId) {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
sql.query('DELETE FROM `giveaways` WHERE `message_id` = ?', messageId, (err, res) => {
|
||||||
|
if (err) {
|
||||||
|
console.error(err);
|
||||||
|
return reject(err);
|
||||||
|
}
|
||||||
|
resolve(true);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create a new instance of your class
|
||||||
|
const manager = new GiveawaysManagerWithOwnDatabase(cclient, {
|
||||||
|
default: {
|
||||||
|
botsCanWin: false,
|
||||||
|
embedColor: '#FF0000',
|
||||||
|
embedColorEnd: '#000000',
|
||||||
|
reaction: '🎉',
|
||||||
|
}
|
||||||
|
});
|
||||||
|
// We now have a giveawaysManager property to access the manager everywhere!
|
||||||
|
client.giveawaysManager = manager;
|
||||||
|
|
||||||
|
/* Load all commands */
|
||||||
|
client.commands = new Discord.Collection();
|
||||||
|
fs.readdir('./commands/', (_err, files) => {
|
||||||
|
files.forEach((file) => {
|
||||||
|
if (!file.endsWith('.js')) return;
|
||||||
|
let props = require(`./commands/${file}`);
|
||||||
|
let commandName = file.split('.')[0];
|
||||||
|
client.commands.set(commandName, {
|
||||||
|
name: commandName,
|
||||||
|
...props
|
||||||
|
});
|
||||||
|
client.log(`👌 Command loaded: ${commandName}`);
|
||||||
|
});
|
||||||
|
syncroniseSlashCommands(client, client.commands.map((c) => ({
|
||||||
|
name: c.name,
|
||||||
|
description: c.description,
|
||||||
|
options: c.options,
|
||||||
|
type: 'CHAT_INPUT'
|
||||||
|
})), {
|
||||||
|
debug: true
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
/* Load all events */
|
||||||
|
fs.readdir('./events/', (_err, files) => {
|
||||||
|
files.forEach((file) => {
|
||||||
|
if (!file.endsWith('.js')) return;
|
||||||
|
const event = require(`./events/${file}`);
|
||||||
|
let eventName = file.split('.')[0];
|
||||||
|
console.log(`👌 Event loaded: ${eventName}`);
|
||||||
|
client.on(eventName, event.bind(null, client));
|
||||||
|
delete require.cache[require.resolve(`./events/${file}`)];
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
client.login(config.token);
|
11
README.md
11
README.md
|
@ -1,24 +1,32 @@
|
||||||
# Giveaway-Child
|
# Giveaway-Child
|
||||||
|
|
||||||
## Requirements
|
## Requirements
|
||||||
|
|
||||||
- Nodejs v16
|
- Nodejs v16
|
||||||
- Invite your bot with bot and applications scope
|
- Invite your bot with bot and applications scope
|
||||||
|
|
||||||
## Features
|
## Features
|
||||||
|
|
||||||
- Fast giveaways created using the best databases, like: mongodb, quick.db, .etc
|
- Fast giveaways created using the best databases, like: mongodb, quick.db, .etc
|
||||||
- LAST CHANCE TO ENTER warning when a giveaway is about to end.
|
- LAST CHANCE TO ENTER warning when a giveaway is about to end.
|
||||||
- Slash commands for faster giveaway creating.
|
- Slash commands for faster giveaway creating.
|
||||||
Drop giveaway ability, drop giveaways anytime in your server with the drop command.
|
Drop giveaway ability, drop giveaways anytime in your server with the drop command.
|
||||||
- Pause and un-Pause giveaway feature.
|
- Pause and un-pause giveaway feature.
|
||||||
|
|
||||||
|
|
||||||
## Links
|
## Links
|
||||||
|
|
||||||
- 🔗 [Invite Link](https://discord.com/api/oauth2/authorize?client_id=726333575091454002&permissions=8&scope=bot)
|
- 🔗 [Invite Link](https://discord.com/api/oauth2/authorize?client_id=726333575091454002&permissions=8&scope=bot)
|
||||||
- ℹ [Support Server Link](https://discord.gg/SVQVzJq)
|
- ℹ [Support Server Link](https://discord.gg/SVQVzJq)
|
||||||
- 📑 [Commands](https://docs.emotionchild.com/coming_soon)
|
- 📑 [Commands](https://docs.emotionchild.com/coming_soon)
|
||||||
- 🌐 [Website](https://docs.emotionchild.com/coming_soon)
|
- 🌐 [Website](https://docs.emotionchild.com/coming_soon)
|
||||||
|
|
||||||
|
## Custom/External Database setup
|
||||||
|
|
||||||
|
- Read the [README](Database%20Examples/README.md) file and you are good to go to use custom db's.
|
||||||
|
|
||||||
## Setup
|
## Setup
|
||||||
|
|
||||||
- `npm i`
|
- `npm i`
|
||||||
- Pick a database from the Database Examples folder.
|
- Pick a database from the Database Examples folder.
|
||||||
- Just copy and paste it into the [index file](index.js)
|
- Just copy and paste it into the [index file](index.js)
|
||||||
|
@ -26,4 +34,5 @@ Drop giveaway ability, drop giveaways anytime in your server with the drop comma
|
||||||
- Then run the bot with `npm run start`
|
- Then run the bot with `npm run start`
|
||||||
|
|
||||||
## Credits
|
## Credits
|
||||||
|
|
||||||
**Thanks to [Androz](https://github.com/Androz2091) for his package which make this bot possible [discord-giveaways](https://www.npmjs.com/package/discord-giveaways) give him a star for his work.**
|
**Thanks to [Androz](https://github.com/Androz2091) for his package which make this bot possible [discord-giveaways](https://www.npmjs.com/package/discord-giveaways) give him a star for his work.**
|
3484
package-lock.json
generated
Normal file
3484
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load diff
|
@ -24,7 +24,7 @@
|
||||||
"beautify": "^0.0.8",
|
"beautify": "^0.0.8",
|
||||||
"discord-giveaways": "^5.0.1",
|
"discord-giveaways": "^5.0.1",
|
||||||
"discord-sync-commands": "^0.3.0",
|
"discord-sync-commands": "^0.3.0",
|
||||||
"discord.js": "^13.3.1",
|
"discord.js": "^13.6.0",
|
||||||
"fero-ms": "^2.0.7",
|
"fero-ms": "^2.0.7",
|
||||||
"ms": "^2.1.3",
|
"ms": "^2.1.3",
|
||||||
"quickdb": "^1.0.5",
|
"quickdb": "^1.0.5",
|
||||||
|
|
Loading…
Reference in a new issue