Merge branch 'master' of https://git.uwaterloo.ca/csc/discord-bot
This commit is contained in:
commit
b26716f550
|
@ -0,0 +1,14 @@
|
||||||
|
# Set the default behavior, in case people don't have core.autocrlf set.
|
||||||
|
* text=auto
|
||||||
|
|
||||||
|
# Explicitly declare text files you want to always be normalized and converted
|
||||||
|
# to native line endings on checkout.
|
||||||
|
*.c text
|
||||||
|
*.h text
|
||||||
|
|
||||||
|
# Declare files that will always have CRLF line endings on checkout.
|
||||||
|
*.sln text eol=crlf
|
||||||
|
|
||||||
|
# Denote all files that are truly binary and should not be modified.
|
||||||
|
*.png binary
|
||||||
|
*.jpg binary
|
|
@ -2,3 +2,4 @@
|
||||||
.env
|
.env
|
||||||
/logs
|
/logs
|
||||||
/dist
|
/dist
|
||||||
|
/db
|
|
@ -0,0 +1,68 @@
|
||||||
|
import sqlite3 = require('sqlite3')
|
||||||
|
import { open, Database } from 'sqlite'
|
||||||
|
import Discord from 'discord.js'
|
||||||
|
|
||||||
|
let db : Database | null = null;
|
||||||
|
|
||||||
|
export async function openDB () {
|
||||||
|
if(db == null){
|
||||||
|
db = await open({
|
||||||
|
filename: './db/bot.db',
|
||||||
|
driver: sqlite3.Database
|
||||||
|
})
|
||||||
|
await db.run('CREATE TABLE IF NOT EXISTS saved_data (msg_id INTEGER PRIMARY KEY,data TEXT NOT NULL);')
|
||||||
|
}
|
||||||
|
return db;
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function testDb(message: Discord.Message, command: string, args: string[]){
|
||||||
|
switch(command){
|
||||||
|
case 'save':
|
||||||
|
if (args.length < 1) {
|
||||||
|
await message.channel.send('no args');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
await openDB().then((db) => {
|
||||||
|
db.run('INSERT INTO saved_data (msg_id,data)' + 'VALUES(?,?)', [message.id, args[0]]);
|
||||||
|
});
|
||||||
|
await message.channel.send('Saved ' + args[0] + ' with id ' + message.id);
|
||||||
|
break;
|
||||||
|
case 'dump':
|
||||||
|
await openDB().then(async (db) => {
|
||||||
|
let flag: boolean = true;
|
||||||
|
let outEmbed = new Discord.MessageEmbed()
|
||||||
|
.setColor('#0099ff')
|
||||||
|
.setTitle('Database Dump')
|
||||||
|
.setURL('https://www.youtube.com/watch?v=dQw4w9WgXcQ');
|
||||||
|
const res = await db.all('SELECT * FROM saved_data');
|
||||||
|
for(const rows of res){
|
||||||
|
console.log(rows['msg_id'], rows['data']);
|
||||||
|
outEmbed = outEmbed.addField(rows['msg_id'], rows['data'], true);
|
||||||
|
console.log(outEmbed);
|
||||||
|
}
|
||||||
|
console.log(outEmbed);
|
||||||
|
if (flag) {
|
||||||
|
if (outEmbed.fields.length == 0) {
|
||||||
|
await message.channel.send('empty');
|
||||||
|
} else {
|
||||||
|
await message.channel.send(outEmbed);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
await message.channel.send('error');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
case 'clear':
|
||||||
|
openDB()
|
||||||
|
.then((db) => {
|
||||||
|
return db.run('DELETE FROM saved_data');
|
||||||
|
})
|
||||||
|
.then(async () => {
|
||||||
|
await message.channel.send('cleared');
|
||||||
|
})
|
||||||
|
.catch();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log('connected to db')
|
7
index.ts
7
index.ts
|
@ -3,7 +3,7 @@ dotenv.config();
|
||||||
|
|
||||||
import Discord from 'discord.js';
|
import Discord from 'discord.js';
|
||||||
import _ from 'lodash';
|
import _ from 'lodash';
|
||||||
|
import { openDB, testDb } from './components/db';
|
||||||
import logger from './logger';
|
import logger from './logger';
|
||||||
|
|
||||||
import { pingCmd } from './commands/ping';
|
import { pingCmd } from './commands/ping';
|
||||||
|
@ -48,6 +48,11 @@ const handleCommand = async (message: Discord.Message, command: string, args: st
|
||||||
case 'ping':
|
case 'ping':
|
||||||
pingCmd(message, command, args);
|
pingCmd(message, command, args);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//dev testing
|
||||||
|
if (process.env.NODE_ENV == 'dev') {
|
||||||
|
testDb(message, command, args);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleAnonCommand = async (message: Discord.Message, command: string, args: string[]) => {
|
const handleAnonCommand = async (message: Discord.Message, command: string, args: string[]) => {
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "concurrently \"yarn run-dev\" \"yarn watch\"",
|
"dev": "concurrently \"yarn run-dev\" \"yarn watch\"",
|
||||||
"run-dev": "nodemon index.ts",
|
"run-dev": "cross-env NODE_ENV=dev nodemon index.ts",
|
||||||
"watch": "tsc --watch",
|
"watch": "tsc --watch",
|
||||||
"build": "tsc",
|
"build": "tsc",
|
||||||
"test": "echo \"Error: no test specified\" && exit 1"
|
"test": "echo \"Error: no test specified\" && exit 1"
|
||||||
|
@ -18,17 +18,21 @@
|
||||||
"dotenv": "^8.2.0",
|
"dotenv": "^8.2.0",
|
||||||
"lodash": "^4.17.21",
|
"lodash": "^4.17.21",
|
||||||
"moment": "^2.29.1",
|
"moment": "^2.29.1",
|
||||||
|
"sqlite": "^4.0.22",
|
||||||
|
"sqlite3": "^5.0.2",
|
||||||
"typescript": "^4.2.4",
|
"typescript": "^4.2.4",
|
||||||
"winston": "^3.3.3",
|
"winston": "^3.3.3",
|
||||||
"winston-daily-rotate-file": "^4.5.5"
|
"winston-daily-rotate-file": "^4.5.5"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"@types/sqlite3": "^3.1.7",
|
||||||
"@tsconfig/node14": "^1.0.0",
|
"@tsconfig/node14": "^1.0.0",
|
||||||
"@types/lodash": "^4.14.168",
|
"@types/lodash": "^4.14.168",
|
||||||
"@types/node": "^15.0.1",
|
"@types/node": "^15.0.1",
|
||||||
"@types/winston": "^2.4.4",
|
"@types/winston": "^2.4.4",
|
||||||
"@typescript-eslint/eslint-plugin": "^4.22.0",
|
"@typescript-eslint/eslint-plugin": "^4.22.0",
|
||||||
"@typescript-eslint/parser": "^4.22.0",
|
"@typescript-eslint/parser": "^4.22.0",
|
||||||
|
"cross-env": "^7.0.3",
|
||||||
"eslint": "^7.25.0",
|
"eslint": "^7.25.0",
|
||||||
"eslint-config-prettier": "^8.3.0",
|
"eslint-config-prettier": "^8.3.0",
|
||||||
"eslint-plugin-prettier": "^3.4.0",
|
"eslint-plugin-prettier": "^3.4.0",
|
||||||
|
|
Loading…
Reference in New Issue