1
0
Fork 0
mirror of https://gitlab.com/niansa/dpplogger.git synced 2025-03-06 20:48:29 +01:00
dpplogger/main.cpp
2023-01-07 00:05:43 +01:00

102 lines
3.9 KiB
C++

#include "sqlite_modern_cpp/sqlite_modern_cpp.h"
#include <iostream>
#include <dpp/dpp.h>
int main() {
// Initialize Sqlite3
sqlite::database db("log.sqlite3");
// Create tables
{
db << "CREATE TABLE IF NOT EXISTS messages ("
" id TEXT PRIMARY KEY NOT NULL,"
" type INTEGER NOT NULL,"
" channel_id TEXT NOT NULL,"
" author_id TEXT NOT NULL,"
" replied_to_id TEXT,"
" is_deleted INTEGER DEFAULT 0 NOT NULL,"
" is_edited INTEGER DEFAULT 0 NOT NULL,"
" creation_timestamp TEXT NOT NULL,"
" update_timestamp TEXT DEFAULT '0' NOT NULL,"
" UNIQUE(id)"
");";
db << "CREATE TABLE IF NOT EXISTS message_contents ("
" message_id TEXT NOT NULL,"
" is_initial INTEGER DEFAULT 1 NOT NULL,"
" timestamp TEXT NOT NULL,"
" content TEXT NOT NULL"
");";
db << "CREATE TABLE IF NOT EXISTS users ("
" id TEXT NOT NULL,"
" is_initial INTEGER DEFAULT 1 NOT NULL,"
" timestamp TEXT NOT NULL,"
" full_username TEXT NOT NULL," // Username#Discriminator
" avatar TEXT,"
" bio TEXT,"
" has_nitro INTEGER NOT NULL,"
" is_bot INTEGER NOT NULL"
");";
db << "CREATE TABLE IF NOT EXISTS user_statuses ("
" user_id TEXT NOT NULL,"
" is_initial INTEGER DEFAULT 1 NOT NULL,"
" timestamp TEXT NOT NULL,"
" status TEXT," // JSON array or null if not updated: [int:online/dnd/afk/offline enum, ?:emoji (null/empty if none), string:text (empty if none)]
" presence TEXT" // Discord JSON presence object
");";
db << "CREATE TABLE IF NOT EXISTS members ("
" user_id TEXT NOT NULL,"
" guild_id TEXT NOT NULL,"
" is_initial INTEGER DEFAULT 1 NOT NULL,"
" timestamp TEXT NOT NULL,"
" nickname TEXT,"
" in_guild INTEGER NOT NULL,"
" is_untracked INTEGER NOT NULL"
");";
db << "CREATE TABLE IF NOT EXISTS member_voice_connections ("
" channel_id TEXT NOT NULL,"
" user_id TEXT NOT NULL,"
" is_initial INTEGER DEFAULT 1 NOT NULL,"
" timestamp TEXT NOT NULL,"
" voice_channel_id TEXT,"
" self_muted INTEGER NOT NULL,"
" self_deafened INTEGER NOT NULL,"
" server_muted INTEGER NOT NULL,"
" server_deafened INTEGER NOT NULL"
");";
db << "CREATE TABLE IF NOT EXISTS channels ("
" id TEXT NOT NULL,"
" guild_id TEXT NOT NULL,"
" category_channel_id TEXT NOT NULL,"
" timestamp TEXT NOT NULL,"
" is_initial INTEGER DEFAULT 1 NOT NULL,"
" type INTEGER NOT NULL,"
" name TEXT NOT NULL,"
" topic TEXT,"
" has_access INTEGER NOT NULL"
");";
db << "CREATE TABLE IF NOT EXISTS guilds ("
" id TEXT NOT NULL,"
" timestamp TEXT NOT NULL,"
" is_initial INTEGER DEFAULT 1 NOT NULL,"
" name TEXT NOT NULL,"
" icon TEXT,"
" owner_user_id TEXT NOT NULL"
");";
}
// Initialize bot
dpp::cluster cluster("token", dpp::i_all_intents);
// Set up callbacks
// Useful: https://discord.com/developers/docs/topics/gateway-events
cluster.on_guild_create([&](const dpp::guild_create_t& event) {
});
cluster.on_message_create([&](const dpp::message_create_t& event) {
});
}