create db module with opendb function
This commit is contained in:
parent
c3b9d2d2dd
commit
cd92da309f
|
@ -1,11 +1,16 @@
|
|||
import sqlite3 = require('sqlite3')
|
||||
import { open } from 'sqlite'
|
||||
import { open, Database } from 'sqlite'
|
||||
|
||||
let db : Database | null = null;
|
||||
|
||||
export async function openDb () {
|
||||
return open({
|
||||
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;
|
||||
}
|
||||
console.log('connected to db')
|
||||
|
|
85
index.ts
85
index.ts
|
@ -1,15 +1,13 @@
|
|||
import dotenv from 'dotenv';
|
||||
dotenv.config();
|
||||
import { Database } from 'sqlite'
|
||||
|
||||
import Discord from 'discord.js';
|
||||
import _ from 'lodash';
|
||||
import { openDb } from './components/db'
|
||||
import { openDb } from './components/db';
|
||||
import logger from './logger';
|
||||
|
||||
const NOTIF_CHANNEL_ID: string = process.env.NOTIF_CHANNEL_ID || '.';
|
||||
const BOT_TOKEN: string = process.env.BOT_TOKEN || '.';
|
||||
let db : Database;
|
||||
const BOT_PREFIX = '.';
|
||||
const client = new Discord.Client();
|
||||
|
||||
|
@ -45,53 +43,55 @@ const handleCommand = async (message: Discord.Message, command: string, args: st
|
|||
switch (command) {
|
||||
case 'ping':
|
||||
await message.channel.send('pong');
|
||||
break;
|
||||
|
||||
|
||||
//dev testing commands
|
||||
case 'save':
|
||||
if (args.length < 1) {
|
||||
await message.channel.send('no args')
|
||||
return
|
||||
await message.channel.send('no args');
|
||||
return;
|
||||
}
|
||||
await db.run('INSERT INTO saved_data (msg_id,data)' +
|
||||
'VALUES(?,?)', [message.id, args[0]]).then((stmt : any, lastID : any, changes : any) => {
|
||||
consoel
|
||||
})
|
||||
break
|
||||
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':
|
||||
//TODO: make messages be embeds to test
|
||||
let flag: boolean = true
|
||||
let outEmbed = new Discord.MessageEmbed().setColor('#0099ff').setTitle('Database Dump').setURL('https://www.youtube.com/watch?v=dQw4w9WgXcQ').addField("test", "test", true)
|
||||
db.each('SELECT * FROM saved_data', (err, rows) => {
|
||||
if (err) {
|
||||
flag = false;
|
||||
return;
|
||||
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(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.values.length == 0) {
|
||||
await message.channel.send("empty")
|
||||
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');
|
||||
}
|
||||
else {
|
||||
await message.channel.send(outEmbed)
|
||||
}
|
||||
}
|
||||
else {
|
||||
await message.channel.send("error")
|
||||
}
|
||||
});
|
||||
break;
|
||||
case 'clear':
|
||||
db.run('DELETE FROM saved_data', async (err : any) => {
|
||||
if (err) {
|
||||
await message.channel.send(err.message)
|
||||
return
|
||||
}
|
||||
await message.channel.send("Cleared.")
|
||||
|
||||
})
|
||||
openDb()
|
||||
.then((db) => {
|
||||
return db.run('DELETE FROM saved_data');
|
||||
})
|
||||
.then(async () => {
|
||||
await message.channel.send('cleared');
|
||||
})
|
||||
.catch();
|
||||
break;
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -125,12 +125,7 @@ const startBot = async () => {
|
|||
const notif = (await client.channels.fetch(NOTIF_CHANNEL_ID)) as Discord.TextChannel;
|
||||
notif.send('Codey is up!');
|
||||
});
|
||||
|
||||
db = await openDb();
|
||||
console.log(db)
|
||||
client.on('message', handleMessage);
|
||||
|
||||
client.login(BOT_TOKEN);
|
||||
};
|
||||
|
||||
startBot();
|
||||
|
|
56
yarn.lock
56
yarn.lock
|
@ -112,14 +112,14 @@
|
|||
integrity sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==
|
||||
|
||||
"@types/lodash@^4.14.168":
|
||||
version "4.14.169"
|
||||
resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.169.tgz#83c217688f07a4d9ef8f28a3ebd1d318f6ff4cbb"
|
||||
integrity sha512-DvmZHoHTFJ8zhVYwCLWbQ7uAbYQEk52Ev2/ZiQ7Y7gQGeV9pjBqjnQpECMHfKS1rCYAhMI7LHVxwyZLZinJgdw==
|
||||
version "4.14.170"
|
||||
resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.170.tgz#0d67711d4bf7f4ca5147e9091b847479b87925d6"
|
||||
integrity sha512-bpcvu/MKHHeYX+qeEN8GE7DIravODWdACVA1ctevD8CN24RhPZIKMn9ntfAsrvLfSX3cR5RrBKAbYm9bGs0A+Q==
|
||||
|
||||
"@types/node@*", "@types/node@^15.0.1":
|
||||
version "15.3.1"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-15.3.1.tgz#23a06b87eedb524016616e886b116b8fdcb180af"
|
||||
integrity sha512-weaeiP4UF4XgF++3rpQhpIJWsCTS4QJw5gvBhQu6cFIxTwyxWIe3xbnrY/o2lTCQ0lsdb8YIUDUvLR4Vuz5rbw==
|
||||
version "15.6.0"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-15.6.0.tgz#f0ddca5a61e52627c9dcb771a6039d44694597bc"
|
||||
integrity sha512-gCYSfQpy+LYhOFTKAeE8BkyGqaxmlFxe+n4DKM6DR0wzw/HISUE/hAmkC/KT8Sw5PCJblqg062b3z9gucv3k0A==
|
||||
|
||||
"@types/normalize-package-data@^2.4.0":
|
||||
version "2.4.0"
|
||||
|
@ -243,9 +243,9 @@ ajv@^6.10.0, ajv@^6.12.3, ajv@^6.12.4:
|
|||
uri-js "^4.2.2"
|
||||
|
||||
ajv@^8.0.1:
|
||||
version "8.4.0"
|
||||
resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.4.0.tgz#48984fdb2ce225cab15795f0772a8d85669075e4"
|
||||
integrity sha512-7QD2l6+KBSLwf+7MuYocbWvRPdOu63/trReTLu2KFwkgctnub1auoF+Y1WYcm09CTM7quuscrzqmASaLHC/K4Q==
|
||||
version "8.5.0"
|
||||
resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.5.0.tgz#695528274bcb5afc865446aa275484049a18ae4b"
|
||||
integrity sha512-Y2l399Tt1AguU3BPRP9Fn4eN+Or+StUGWCUpbnFyXSo8NZ9S4uj+AG2pjs5apK+ZMOwYOz1+a+VKvKH7CudXgQ==
|
||||
dependencies:
|
||||
fast-deep-equal "^3.1.1"
|
||||
json-schema-traverse "^1.0.0"
|
||||
|
@ -835,6 +835,11 @@ escape-string-regexp@^1.0.5:
|
|||
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
|
||||
integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
|
||||
|
||||
escape-string-regexp@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
|
||||
integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
|
||||
|
||||
eslint-config-prettier@^8.3.0:
|
||||
version "8.3.0"
|
||||
resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz#f7471b20b6fe8a9a9254cc684454202886a2dd7a"
|
||||
|
@ -873,9 +878,9 @@ eslint-visitor-keys@^2.0.0:
|
|||
integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==
|
||||
|
||||
eslint@^7.25.0:
|
||||
version "7.26.0"
|
||||
resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.26.0.tgz#d416fdcdcb3236cd8f282065312813f8c13982f6"
|
||||
integrity sha512-4R1ieRf52/izcZE7AlLy56uIHHDLT74Yzz2Iv2l6kDaYvEu9x+wMB5dZArVL8SYGXSYV2YAg70FcW5Y5nGGNIg==
|
||||
version "7.27.0"
|
||||
resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.27.0.tgz#665a1506d8f95655c9274d84bd78f7166b07e9c7"
|
||||
integrity sha512-JZuR6La2ZF0UD384lcbnd0Cgg6QJjiCwhMD6eU4h/VGPcVGwawNNzKU41tgokGXnfjOOyI6QIffthhJTPzzuRA==
|
||||
dependencies:
|
||||
"@babel/code-frame" "7.12.11"
|
||||
"@eslint/eslintrc" "^0.4.1"
|
||||
|
@ -885,12 +890,14 @@ eslint@^7.25.0:
|
|||
debug "^4.0.1"
|
||||
doctrine "^3.0.0"
|
||||
enquirer "^2.3.5"
|
||||
escape-string-regexp "^4.0.0"
|
||||
eslint-scope "^5.1.1"
|
||||
eslint-utils "^2.1.0"
|
||||
eslint-visitor-keys "^2.0.0"
|
||||
espree "^7.3.1"
|
||||
esquery "^1.4.0"
|
||||
esutils "^2.0.2"
|
||||
fast-deep-equal "^3.1.3"
|
||||
file-entry-cache "^6.0.1"
|
||||
functional-red-black-tree "^1.0.1"
|
||||
glob-parent "^5.0.0"
|
||||
|
@ -902,7 +909,7 @@ eslint@^7.25.0:
|
|||
js-yaml "^3.13.1"
|
||||
json-stable-stringify-without-jsonify "^1.0.1"
|
||||
levn "^0.4.1"
|
||||
lodash "^4.17.21"
|
||||
lodash.merge "^4.6.2"
|
||||
minimatch "^3.0.4"
|
||||
natural-compare "^1.4.0"
|
||||
optionator "^0.9.1"
|
||||
|
@ -911,7 +918,7 @@ eslint@^7.25.0:
|
|||
semver "^7.2.1"
|
||||
strip-ansi "^6.0.0"
|
||||
strip-json-comments "^3.1.0"
|
||||
table "^6.0.4"
|
||||
table "^6.0.9"
|
||||
text-table "^0.2.0"
|
||||
v8-compile-cache "^2.0.3"
|
||||
|
||||
|
@ -978,7 +985,7 @@ extsprintf@^1.2.0:
|
|||
resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f"
|
||||
integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8=
|
||||
|
||||
fast-deep-equal@^3.1.1:
|
||||
fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
|
||||
version "3.1.3"
|
||||
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
|
||||
integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
|
||||
|
@ -1578,6 +1585,11 @@ lodash.clonedeep@^4.5.0:
|
|||
resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef"
|
||||
integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=
|
||||
|
||||
lodash.merge@^4.6.2:
|
||||
version "4.6.2"
|
||||
resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
|
||||
integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
|
||||
|
||||
lodash.truncate@^4.4.2:
|
||||
version "4.4.2"
|
||||
resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193"
|
||||
|
@ -1981,9 +1993,9 @@ performance-now@^2.1.0:
|
|||
integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=
|
||||
|
||||
picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3:
|
||||
version "2.2.3"
|
||||
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.3.tgz#465547f359ccc206d3c48e46a1bcb89bf7ee619d"
|
||||
integrity sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg==
|
||||
version "2.3.0"
|
||||
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972"
|
||||
integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==
|
||||
|
||||
prelude-ls@^1.2.1:
|
||||
version "1.2.1"
|
||||
|
@ -2356,9 +2368,9 @@ spdx-expression-parse@^3.0.0:
|
|||
spdx-license-ids "^3.0.0"
|
||||
|
||||
spdx-license-ids@^3.0.0:
|
||||
version "3.0.8"
|
||||
resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.8.tgz#eb1e97ad99b11bf3f82a3b71a0472dd9a00f2ecf"
|
||||
integrity sha512-NDgA96EnaLSvtbM7trJj+t1LUR3pirkDCcz9nOUlPb5DMBGsH7oES6C3hs3j7R9oHEa1EMvReS/BUAIT5Tcr0g==
|
||||
version "3.0.9"
|
||||
resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.9.tgz#8a595135def9592bda69709474f1cbeea7c2467f"
|
||||
integrity sha512-Ki212dKK4ogX+xDo4CtOZBVIwhsKBEfsEEcwmJfLQzirgc2jIWdzg40Unxz/HzEUqM1WFzVlQSMF9kZZ2HboLQ==
|
||||
|
||||
sprintf-js@~1.0.2:
|
||||
version "1.0.3"
|
||||
|
@ -2508,7 +2520,7 @@ supports-color@^8.1.0:
|
|||
dependencies:
|
||||
has-flag "^4.0.0"
|
||||
|
||||
table@^6.0.4:
|
||||
table@^6.0.9:
|
||||
version "6.7.1"
|
||||
resolved "https://registry.yarnpkg.com/table/-/table-6.7.1.tgz#ee05592b7143831a8c94f3cee6aae4c1ccef33e2"
|
||||
integrity sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==
|
||||
|
|
Loading…
Reference in New Issue