feat: Add messagelogger module.

This commit is contained in:
2025-08-13 14:41:16 +10:00
parent 9a0d4090f5
commit cf363fd738
6 changed files with 56 additions and 48 deletions

7
.gitmodules vendored
View File

@@ -1,6 +1,9 @@
[submodule "src/modules/voicefix"] [submodule "src/modules/voicefix"]
path = src/modules/voicefix path = src/modules/voicefix
url = git@github.com:Intery/StudyLion-voicefix.git url = https://github.com/Intery/StudyLion-voicefix.git
[submodule "src/modules/streamalerts"] [submodule "src/modules/streamalerts"]
path = src/modules/streamalerts path = src/modules/streamalerts
url = git@github.com:Intery/StudyLion-streamalerts.git url = https://github.com/Intery/StudyLion-streamalerts.git
[submodule "src/modules/messagelogger"]
path = src/modules/messagelogger
url = https://git.thewisewolf.dev/HoloTech/discord-messagelogger-plugin.git

View File

@@ -50,56 +50,59 @@ CREATE TABLE channel_links(
PRIMARY KEY (linkid, channelid) PRIMARY KEY (linkid, channelid)
); );
-- }}} -- }}}
-- Stream Alerts {{{ -- Message Logging {{{
-- DROP TABLE IF EXISTS stream_alerts; CREATE TABLE logging_guilds(
-- DROP TABLE IF EXISTS streams; guildid BIGINT PRIMARY KEY,
-- DROP TABLE IF EXISTS alert_channels; webhook_url TEXT,
-- DROP TABLE IF EXISTS streamers; created_at TIMESTAMPTZ DEFAULT NOW(),
_timestamp TIMESTAMPTZ DEFAULT NOW()
CREATE TABLE streamers(
userid BIGINT PRIMARY KEY,
login_name TEXT NOT NULL,
display_name TEXT NOT NULL
); );
CREATE TABLE alert_channels( CREATE TRIGGER logging_guilds_timestamp BEFORE UPDATE ON logging_guilds
subscriptionid SERIAL PRIMARY KEY, FOR EACH ROW EXECUTE FUNCTION update_timestamp_column();
guildid BIGINT NOT NULL,
CREATE TABLE logged_messages(
messageid BIGINT PRIMARY KEY,
guildid BIGINT NOT NULL REFERENCES logging_guilds ON DELETE CASCADE,
channelid BIGINT NOT NULL, channelid BIGINT NOT NULL,
streamerid BIGINT NOT NULL REFERENCES streamers (userid) ON DELETE CASCADE, userid BIGINT NOT NULL,
created_by BIGINT NOT NULL, created_at TIMESTAMPTZ NOT NULL,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), deleted_at TIMESTAMPTZ,
paused BOOLEAN NOT NULL DEFAULT FALSE, _timestamp TIMESTAMPTZ DEFAULT NOW()
end_delete BOOLEAN NOT NULL DEFAULT FALSE,
live_message TEXT,
end_message TEXT
);
CREATE INDEX alert_channels_guilds ON alert_channels (guildid);
CREATE UNIQUE INDEX alert_channels_channelid_streamerid ON alert_channels (channelid, streamerid);
CREATE TABLE streams(
streamid SERIAL PRIMARY KEY,
streamerid BIGINT NOT NULL REFERENCES streamers (userid) ON DELETE CASCADE,
start_at TIMESTAMPTZ NOT NULL,
twitch_stream_id BIGINT,
game_name TEXT,
title TEXT,
end_at TIMESTAMPTZ
); );
CREATE TABLE stream_alerts( CREATE TRIGGER logged_messages_timestamp BEFORE UPDATE ON logged_messages
alertid SERIAL PRIMARY KEY, FOR EACH ROW EXECUTE FUNCTION update_timestamp_column();
streamid INTEGER NOT NULL REFERENCES streams (streamid) ON DELETE CASCADE,
subscriptionid INTEGER NOT NULL REFERENCES alert_channels (subscriptionid) ON DELETE CASCADE, CREATE TABLE message_states(
sent_at TIMESTAMPTZ NOT NULL, stateid INTEGER PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
messageid BIGINT NOT NULL, messageid BIGINT NOT NULL REFERENCES logged_messages ON DELETE CASCADE,
resolved_at TIMESTAMPTZ content TEXT NOT NULL,
embeds_raw TEXT,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
CREATE INDEX message_states_messageid ON message_states (messageid);
CREATE TABLE logged_attachments(
attachment_id BIGINT PRIMARY KEY,
proxy_url TEXT NOT NULL,
url TEXT NOT NULL,
content_type TEXT NOT NULL,
filesize INTEGER NOT NULL,
filename TEXT NOT NULL,
permalink TEXT,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
); );
CREATE TABLE logged_messages_attachments(
stateid INTEGER NOT NULL REFERENCES message_states(stateid) ON DELETE CASCADE,
attachment_id BIGINT NOT NULL REFERENCES logged_attachments(attachment_id) ON DELETE CASCADE
);
CREATE INDEX logged_messages_attachments_stateid ON logged_messages_attachments (stateid);
-- }}} -- }}}

View File

@@ -1,8 +1,8 @@
aiohttp==3.7.4.post0 aiohttp
cachetools==4.2.2 cachetools
configparser==5.0.2 configparser
discord.py [voice] discord.py [voice]
iso8601==0.1.16 iso8601
psycopg[pool] psycopg[pool]
pytz==2021.1 pytz
twitchAPI twitchAPI

View File

@@ -54,7 +54,7 @@ async def main():
intents = discord.Intents.all() intents = discord.Intents.all()
intents.members = True intents.members = True
intents.message_content = True intents.message_content = True
intents.presences = False intents.presences = True
async with db.open(): async with db.open():
version = await db.version() version = await db.version()

View File

@@ -3,6 +3,7 @@ this_package = 'modules'
active = [ active = [
'.sysadmin', '.sysadmin',
'.voicefix', '.voicefix',
'.messagelogger',
] ]