From b06bb882a8d36520834653bfc175441cdffe2048 Mon Sep 17 00:00:00 2001 From: Elias Wendland <193786789+eliaswen@users.noreply.github.com> Date: Sat, 4 Jul 2026 23:27:05 +0200 Subject: [PATCH] Add version command, implement Docker support, make sqlx offline work --- .github/workflows/ci.yml | 3 ++ .gitignore | 3 +- ...cc33baf557a366d1092b6c7cb507e3678e5d4.json | 29 +++++++++++ ...6afd9edf1ab08c721a768aeffe6c0d6b31d4c.json | 28 ++++++++++ ...ed7dd1b50f588d03c5dbaa24ea8a5f461b527.json | 15 ++++++ ...4ddf70ca3d1086cccb5df401d66fd8c25bd0d.json | 15 ++++++ ...0fd8ab8db848a6a8e099e47cd16062b28f24a.json | 15 ++++++ ...e546a0d22801cd655ebe78a11d0046974077a.json | 28 ++++++++++ ...6bd843b8672b719467d70aebf5e328fc552ef.json | 15 ++++++ ...869a0fb3e68cbbb6663cba45d31af473a2047.json | 52 +++++++++++++++++++ ...d48ba64ca89117d8c717170d969861e2e77a5.json | 15 ++++++ ...ba34c1bc45c61e0d1a8b6f84d344727b4e659.json | 28 ++++++++++ ...008fcd400ebac195e46ffa1b4ae790486c59b.json | 28 ++++++++++ ...09aa372adc28161996a66034f3d9d0f4cd2fa.json | 28 ++++++++++ ...d0674d6d9329040f408e295f42ed2188acca5.json | 15 ++++++ ...b3f01172d93f22df62715b01e769781a13b20.json | 15 ++++++ Cargo.toml | 2 +- DOCKERFILE | 9 ++++ ...-compose-dev.yml => docker-compose.dev.yml | 0 docker-compose.example.yml | 34 ++++++++++++ src/commands/mod.rs | 2 + src/commands/ping.rs | 12 ++++- src/commands/version.rs | 16 ++++++ src/main.rs | 4 +- 24 files changed, 405 insertions(+), 6 deletions(-) create mode 100644 .sqlx/query-0c8f32cf64dc47758f2f8a46e94cc33baf557a366d1092b6c7cb507e3678e5d4.json create mode 100644 .sqlx/query-38f5e0b163af3bcbf798b03a6806afd9edf1ab08c721a768aeffe6c0d6b31d4c.json create mode 100644 .sqlx/query-45366b9229d05e7807d8ffcc7c0ed7dd1b50f588d03c5dbaa24ea8a5f461b527.json create mode 100644 .sqlx/query-46c3745dede4d63c3c3af709d254ddf70ca3d1086cccb5df401d66fd8c25bd0d.json create mode 100644 .sqlx/query-49ed234a3f4bc1b1fa4536507240fd8ab8db848a6a8e099e47cd16062b28f24a.json create mode 100644 .sqlx/query-5acd90d552bf8c84510bdfaa924e546a0d22801cd655ebe78a11d0046974077a.json create mode 100644 .sqlx/query-5b795c3345490c840df662e7b196bd843b8672b719467d70aebf5e328fc552ef.json create mode 100644 .sqlx/query-92926fc1d382bfe17a5d59dee41869a0fb3e68cbbb6663cba45d31af473a2047.json create mode 100644 .sqlx/query-bc03a95110e097a105d826771ccd48ba64ca89117d8c717170d969861e2e77a5.json create mode 100644 .sqlx/query-c6f456f23b18ede825326b1c810ba34c1bc45c61e0d1a8b6f84d344727b4e659.json create mode 100644 .sqlx/query-d6b3a99d36ac18c2b566c510972008fcd400ebac195e46ffa1b4ae790486c59b.json create mode 100644 .sqlx/query-dadde8070c69694e2b28f94bc0e09aa372adc28161996a66034f3d9d0f4cd2fa.json create mode 100644 .sqlx/query-e7dfaed40c69930178c568b4c38d0674d6d9329040f408e295f42ed2188acca5.json create mode 100644 .sqlx/query-f16fb5cebae76c9cf8ce0a18ba0b3f01172d93f22df62715b01e769781a13b20.json create mode 100644 DOCKERFILE rename docker-compose-dev.yml => docker-compose.dev.yml (100%) create mode 100644 docker-compose.example.yml create mode 100644 src/commands/version.rs diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b1889e9..4411b96 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -11,6 +11,7 @@ env: CARGO_TERM_COLOR: always DATABASE_URL: postgres://postgres:postgres@postgres:5432/tg_dev_srv_bot DISCORD_TOKEN: testing + SQLX_OFFLINE: true jobs: test: @@ -40,6 +41,8 @@ jobs: - name: Set up Rust uses: actions-rust-lang/setup-rust-toolchain@v1 + with: + cache: false - name: Run tests run: cargo test --verbose diff --git a/.gitignore b/.gitignore index 9e2e5d8..3549fae 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,3 @@ /target Cargo.lock -.env -.sqlx \ No newline at end of file +.env \ No newline at end of file diff --git a/.sqlx/query-0c8f32cf64dc47758f2f8a46e94cc33baf557a366d1092b6c7cb507e3678e5d4.json b/.sqlx/query-0c8f32cf64dc47758f2f8a46e94cc33baf557a366d1092b6c7cb507e3678e5d4.json new file mode 100644 index 0000000..ab3d3c7 --- /dev/null +++ b/.sqlx/query-0c8f32cf64dc47758f2f8a46e94cc33baf557a366d1092b6c7cb507e3678e5d4.json @@ -0,0 +1,29 @@ +{ + "db_name": "PostgreSQL", + "query": "SELECT enabled FROM auto_roles WHERE guild_id = $1 AND role_id = $2;", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "enabled", + "type_info": "Bool", + "origin": { + "Table": { + "table": "auto_roles", + "name": "enabled" + } + } + } + ], + "parameters": { + "Left": [ + "Int8", + "Int8" + ] + }, + "nullable": [ + false + ] + }, + "hash": "0c8f32cf64dc47758f2f8a46e94cc33baf557a366d1092b6c7cb507e3678e5d4" +} diff --git a/.sqlx/query-38f5e0b163af3bcbf798b03a6806afd9edf1ab08c721a768aeffe6c0d6b31d4c.json b/.sqlx/query-38f5e0b163af3bcbf798b03a6806afd9edf1ab08c721a768aeffe6c0d6b31d4c.json new file mode 100644 index 0000000..54552e9 --- /dev/null +++ b/.sqlx/query-38f5e0b163af3bcbf798b03a6806afd9edf1ab08c721a768aeffe6c0d6b31d4c.json @@ -0,0 +1,28 @@ +{ + "db_name": "PostgreSQL", + "query": "SELECT role_id FROM auto_roles WHERE guild_id = $1", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "role_id", + "type_info": "Int8", + "origin": { + "Table": { + "table": "auto_roles", + "name": "role_id" + } + } + } + ], + "parameters": { + "Left": [ + "Int8" + ] + }, + "nullable": [ + false + ] + }, + "hash": "38f5e0b163af3bcbf798b03a6806afd9edf1ab08c721a768aeffe6c0d6b31d4c" +} diff --git a/.sqlx/query-45366b9229d05e7807d8ffcc7c0ed7dd1b50f588d03c5dbaa24ea8a5f461b527.json b/.sqlx/query-45366b9229d05e7807d8ffcc7c0ed7dd1b50f588d03c5dbaa24ea8a5f461b527.json new file mode 100644 index 0000000..1ba7c58 --- /dev/null +++ b/.sqlx/query-45366b9229d05e7807d8ffcc7c0ed7dd1b50f588d03c5dbaa24ea8a5f461b527.json @@ -0,0 +1,15 @@ +{ + "db_name": "PostgreSQL", + "query": "INSERT INTO admin_users (guild_id, user_id) VALUES ($1, $2);", + "describe": { + "columns": [], + "parameters": { + "Left": [ + "Int8", + "Int8" + ] + }, + "nullable": [] + }, + "hash": "45366b9229d05e7807d8ffcc7c0ed7dd1b50f588d03c5dbaa24ea8a5f461b527" +} diff --git a/.sqlx/query-46c3745dede4d63c3c3af709d254ddf70ca3d1086cccb5df401d66fd8c25bd0d.json b/.sqlx/query-46c3745dede4d63c3c3af709d254ddf70ca3d1086cccb5df401d66fd8c25bd0d.json new file mode 100644 index 0000000..9c0e999 --- /dev/null +++ b/.sqlx/query-46c3745dede4d63c3c3af709d254ddf70ca3d1086cccb5df401d66fd8c25bd0d.json @@ -0,0 +1,15 @@ +{ + "db_name": "PostgreSQL", + "query": "INSERT INTO auto_roles (guild_id, role_id, enabled) VALUES ($1, $2, false) ON CONFLICT (guild_id) DO UPDATE SET role_id = $2;", + "describe": { + "columns": [], + "parameters": { + "Left": [ + "Int8", + "Int8" + ] + }, + "nullable": [] + }, + "hash": "46c3745dede4d63c3c3af709d254ddf70ca3d1086cccb5df401d66fd8c25bd0d" +} diff --git a/.sqlx/query-49ed234a3f4bc1b1fa4536507240fd8ab8db848a6a8e099e47cd16062b28f24a.json b/.sqlx/query-49ed234a3f4bc1b1fa4536507240fd8ab8db848a6a8e099e47cd16062b28f24a.json new file mode 100644 index 0000000..6a288ea --- /dev/null +++ b/.sqlx/query-49ed234a3f4bc1b1fa4536507240fd8ab8db848a6a8e099e47cd16062b28f24a.json @@ -0,0 +1,15 @@ +{ + "db_name": "PostgreSQL", + "query": "INSERT INTO admin_roles (guild_id, role_id) VALUES ($1, $2);", + "describe": { + "columns": [], + "parameters": { + "Left": [ + "Int8", + "Int8" + ] + }, + "nullable": [] + }, + "hash": "49ed234a3f4bc1b1fa4536507240fd8ab8db848a6a8e099e47cd16062b28f24a" +} diff --git a/.sqlx/query-5acd90d552bf8c84510bdfaa924e546a0d22801cd655ebe78a11d0046974077a.json b/.sqlx/query-5acd90d552bf8c84510bdfaa924e546a0d22801cd655ebe78a11d0046974077a.json new file mode 100644 index 0000000..8f22ba2 --- /dev/null +++ b/.sqlx/query-5acd90d552bf8c84510bdfaa924e546a0d22801cd655ebe78a11d0046974077a.json @@ -0,0 +1,28 @@ +{ + "db_name": "PostgreSQL", + "query": "SELECT role_id FROM admin_roles WHERE guild_id = $1;", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "role_id", + "type_info": "Int8", + "origin": { + "Table": { + "table": "admin_roles", + "name": "role_id" + } + } + } + ], + "parameters": { + "Left": [ + "Int8" + ] + }, + "nullable": [ + false + ] + }, + "hash": "5acd90d552bf8c84510bdfaa924e546a0d22801cd655ebe78a11d0046974077a" +} diff --git a/.sqlx/query-5b795c3345490c840df662e7b196bd843b8672b719467d70aebf5e328fc552ef.json b/.sqlx/query-5b795c3345490c840df662e7b196bd843b8672b719467d70aebf5e328fc552ef.json new file mode 100644 index 0000000..605b387 --- /dev/null +++ b/.sqlx/query-5b795c3345490c840df662e7b196bd843b8672b719467d70aebf5e328fc552ef.json @@ -0,0 +1,15 @@ +{ + "db_name": "PostgreSQL", + "query": "UPDATE auto_roles SET enabled = true WHERE guild_id = $1 AND role_id = $2;", + "describe": { + "columns": [], + "parameters": { + "Left": [ + "Int8", + "Int8" + ] + }, + "nullable": [] + }, + "hash": "5b795c3345490c840df662e7b196bd843b8672b719467d70aebf5e328fc552ef" +} diff --git a/.sqlx/query-92926fc1d382bfe17a5d59dee41869a0fb3e68cbbb6663cba45d31af473a2047.json b/.sqlx/query-92926fc1d382bfe17a5d59dee41869a0fb3e68cbbb6663cba45d31af473a2047.json new file mode 100644 index 0000000..8b08ccd --- /dev/null +++ b/.sqlx/query-92926fc1d382bfe17a5d59dee41869a0fb3e68cbbb6663cba45d31af473a2047.json @@ -0,0 +1,52 @@ +{ + "db_name": "PostgreSQL", + "query": "SELECT * FROM auto_roles WHERE guild_id = $1", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "guild_id", + "type_info": "Int8", + "origin": { + "Table": { + "table": "auto_roles", + "name": "guild_id" + } + } + }, + { + "ordinal": 1, + "name": "role_id", + "type_info": "Int8", + "origin": { + "Table": { + "table": "auto_roles", + "name": "role_id" + } + } + }, + { + "ordinal": 2, + "name": "enabled", + "type_info": "Bool", + "origin": { + "Table": { + "table": "auto_roles", + "name": "enabled" + } + } + } + ], + "parameters": { + "Left": [ + "Int8" + ] + }, + "nullable": [ + false, + false, + false + ] + }, + "hash": "92926fc1d382bfe17a5d59dee41869a0fb3e68cbbb6663cba45d31af473a2047" +} diff --git a/.sqlx/query-bc03a95110e097a105d826771ccd48ba64ca89117d8c717170d969861e2e77a5.json b/.sqlx/query-bc03a95110e097a105d826771ccd48ba64ca89117d8c717170d969861e2e77a5.json new file mode 100644 index 0000000..70fd406 --- /dev/null +++ b/.sqlx/query-bc03a95110e097a105d826771ccd48ba64ca89117d8c717170d969861e2e77a5.json @@ -0,0 +1,15 @@ +{ + "db_name": "PostgreSQL", + "query": "DELETE FROM admin_roles WHERE guild_id = $1 AND role_id = $2;", + "describe": { + "columns": [], + "parameters": { + "Left": [ + "Int8", + "Int8" + ] + }, + "nullable": [] + }, + "hash": "bc03a95110e097a105d826771ccd48ba64ca89117d8c717170d969861e2e77a5" +} diff --git a/.sqlx/query-c6f456f23b18ede825326b1c810ba34c1bc45c61e0d1a8b6f84d344727b4e659.json b/.sqlx/query-c6f456f23b18ede825326b1c810ba34c1bc45c61e0d1a8b6f84d344727b4e659.json new file mode 100644 index 0000000..43013d3 --- /dev/null +++ b/.sqlx/query-c6f456f23b18ede825326b1c810ba34c1bc45c61e0d1a8b6f84d344727b4e659.json @@ -0,0 +1,28 @@ +{ + "db_name": "PostgreSQL", + "query": "SELECT role_id FROM auto_roles WHERE guild_id = $1 AND enabled = true", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "role_id", + "type_info": "Int8", + "origin": { + "Table": { + "table": "auto_roles", + "name": "role_id" + } + } + } + ], + "parameters": { + "Left": [ + "Int8" + ] + }, + "nullable": [ + false + ] + }, + "hash": "c6f456f23b18ede825326b1c810ba34c1bc45c61e0d1a8b6f84d344727b4e659" +} diff --git a/.sqlx/query-d6b3a99d36ac18c2b566c510972008fcd400ebac195e46ffa1b4ae790486c59b.json b/.sqlx/query-d6b3a99d36ac18c2b566c510972008fcd400ebac195e46ffa1b4ae790486c59b.json new file mode 100644 index 0000000..8db6937 --- /dev/null +++ b/.sqlx/query-d6b3a99d36ac18c2b566c510972008fcd400ebac195e46ffa1b4ae790486c59b.json @@ -0,0 +1,28 @@ +{ + "db_name": "PostgreSQL", + "query": "SELECT user_id FROM admin_users WHERE guild_id = $1;", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "user_id", + "type_info": "Int8", + "origin": { + "Table": { + "table": "admin_users", + "name": "user_id" + } + } + } + ], + "parameters": { + "Left": [ + "Int8" + ] + }, + "nullable": [ + false + ] + }, + "hash": "d6b3a99d36ac18c2b566c510972008fcd400ebac195e46ffa1b4ae790486c59b" +} diff --git a/.sqlx/query-dadde8070c69694e2b28f94bc0e09aa372adc28161996a66034f3d9d0f4cd2fa.json b/.sqlx/query-dadde8070c69694e2b28f94bc0e09aa372adc28161996a66034f3d9d0f4cd2fa.json new file mode 100644 index 0000000..1db59bc --- /dev/null +++ b/.sqlx/query-dadde8070c69694e2b28f94bc0e09aa372adc28161996a66034f3d9d0f4cd2fa.json @@ -0,0 +1,28 @@ +{ + "db_name": "PostgreSQL", + "query": "SELECT role_id FROM admin_roles WHERE guild_id = $1", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "role_id", + "type_info": "Int8", + "origin": { + "Table": { + "table": "admin_roles", + "name": "role_id" + } + } + } + ], + "parameters": { + "Left": [ + "Int8" + ] + }, + "nullable": [ + false + ] + }, + "hash": "dadde8070c69694e2b28f94bc0e09aa372adc28161996a66034f3d9d0f4cd2fa" +} diff --git a/.sqlx/query-e7dfaed40c69930178c568b4c38d0674d6d9329040f408e295f42ed2188acca5.json b/.sqlx/query-e7dfaed40c69930178c568b4c38d0674d6d9329040f408e295f42ed2188acca5.json new file mode 100644 index 0000000..5b46c68 --- /dev/null +++ b/.sqlx/query-e7dfaed40c69930178c568b4c38d0674d6d9329040f408e295f42ed2188acca5.json @@ -0,0 +1,15 @@ +{ + "db_name": "PostgreSQL", + "query": "UPDATE auto_roles SET enabled = false WHERE guild_id = $1 AND role_id = $2;", + "describe": { + "columns": [], + "parameters": { + "Left": [ + "Int8", + "Int8" + ] + }, + "nullable": [] + }, + "hash": "e7dfaed40c69930178c568b4c38d0674d6d9329040f408e295f42ed2188acca5" +} diff --git a/.sqlx/query-f16fb5cebae76c9cf8ce0a18ba0b3f01172d93f22df62715b01e769781a13b20.json b/.sqlx/query-f16fb5cebae76c9cf8ce0a18ba0b3f01172d93f22df62715b01e769781a13b20.json new file mode 100644 index 0000000..9c845c9 --- /dev/null +++ b/.sqlx/query-f16fb5cebae76c9cf8ce0a18ba0b3f01172d93f22df62715b01e769781a13b20.json @@ -0,0 +1,15 @@ +{ + "db_name": "PostgreSQL", + "query": "DELETE FROM admin_users WHERE guild_id = $1 AND user_id = $2;", + "describe": { + "columns": [], + "parameters": { + "Left": [ + "Int8", + "Int8" + ] + }, + "nullable": [] + }, + "hash": "f16fb5cebae76c9cf8ce0a18ba0b3f01172d93f22df62715b01e769781a13b20" +} diff --git a/Cargo.toml b/Cargo.toml index d95f7eb..e450278 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "tg-dev-srv-bot" -version = "0.0.1" +version = "0.0.2" edition = "2024" [dependencies] diff --git a/DOCKERFILE b/DOCKERFILE new file mode 100644 index 0000000..92f51bd --- /dev/null +++ b/DOCKERFILE @@ -0,0 +1,9 @@ +FROM rust:latest AS builder +WORKDIR /usr/src/tg-dev-srv-bot +COPY . . +RUN SQLX_OFFLINE=true cargo install --path . + +FROM debian:bullseye-slim +RUN apt-get update && apt-get install -y ca-certificates && rm -rf /var/lib/apt/lists/* +COPY --from=builder /usr/local/cargo/bin/tg-dev-srv-bot /usr/local/bin/tg-dev-srv-bot +CMD ["tg-dev-srv-bot"] diff --git a/docker-compose-dev.yml b/docker-compose.dev.yml similarity index 100% rename from docker-compose-dev.yml rename to docker-compose.dev.yml diff --git a/docker-compose.example.yml b/docker-compose.example.yml new file mode 100644 index 0000000..8dc36d8 --- /dev/null +++ b/docker-compose.example.yml @@ -0,0 +1,34 @@ +services: + postgres: + image: postgres:16-alpine + container_name: tg-dev-srv-bot-postgres + restart: always + environment: + POSTGRES_USER: ${TG_BOT_POSTGRES_USER:-postgres} + POSTGRES_PASSWORD: ${TG_BOT_POSTGRES_PASSWORD:-postgres} + POSTGRES_DB: ${TG_BOT_POSTGRES_DB:-tg_dev_srv_bot} + ports: + - "5432:5432" + volumes: + - postgres_data:/var/lib/postgresql/data + healthcheck: + test: [ "CMD-SHELL", "pg_isready -U $${POSTGRES_USER:-postgres} -d $${POSTGRES_DB:-tg_dev_srv_bot}" ] + interval: 5s + timeout: 5s + retries: 5 + tg-dev-srv-bot: + build: + context: . + dockerfile: DOCKERFILE + container_name: tg-dev-srv-bot + restart: always + depends_on: + - postgres + environment: + TG_BOT_DISCORD_TOKEN: ${TG_BOT_DISCORD_TOKEN} + TG_BOT_DATABASE_URL: ${TG_BOT_DATABASE_URL} + TG_BOT_LOG: ${TG_BOT_LOG} + +volumes: + postgres_data: + driver: local diff --git a/src/commands/mod.rs b/src/commands/mod.rs index 7519661..a7caa33 100644 --- a/src/commands/mod.rs +++ b/src/commands/mod.rs @@ -2,8 +2,10 @@ pub mod ping; pub mod calc; pub mod manage_admins; pub mod manage_auto_role; +pub mod version; pub use ping::ping; pub use calc::calc; pub use manage_admins::manage_admins; pub use manage_auto_role::manage_auto_role; +pub use version::version; diff --git a/src/commands/ping.rs b/src/commands/ping.rs index 3087d16..6ca0913 100644 --- a/src/commands/ping.rs +++ b/src/commands/ping.rs @@ -1,14 +1,24 @@ use crate::{Context, Error}; use poise::serenity_prelude as sere; +use tracing::{trace, debug}; +use crate::shared_functions::trace_message; /// Get the bot's current ping (back and forth) #[poise::command(slash_command, prefix_command)] pub async fn ping(ctx: Context<'_>) -> Result<(), Error> { + trace!("ping command called by user {} in guild {}", ctx.author().id.get(), ctx.guild_id().unwrap().get()); + trace!("Calculating ping"); let command_time_in_microseconds = ctx.created_at().timestamp_micros(); + trace!("Saved command time in microseconds"); let current_time_in_microseconds = sere::Timestamp::now().timestamp_micros(); + trace!("Saved current time in microseconds"); let ping = (current_time_in_microseconds - command_time_in_microseconds) / 500; + trace!("Calculated ping: {}", ping); // We divide by 1000 since we get the time in microseconds, and then multiply by 2 to get the roundtrip time // This is arguably not the best way to calculate ping, since it assumes perfect clock accuracy, but I'm lazy - ctx.say(format!("Current ping: {} ms", ping)).await?; + let msg = format!("Current ping: {} ms", ping); + trace_message(msg.clone(), ctx.channel_id().to_string(), ctx.guild_id().unwrap().to_string()).await; + ctx.say(msg).await?; + debug!("Ping command performed for user {} with ping {}", ctx.author().name, ping); Ok(()) } diff --git a/src/commands/version.rs b/src/commands/version.rs new file mode 100644 index 0000000..8776498 --- /dev/null +++ b/src/commands/version.rs @@ -0,0 +1,16 @@ +use crate::{Context, Error}; +use tracing::{trace, debug}; +use crate::shared_functions::trace_message; + +/// Get the bot's current version +#[poise::command(slash_command, prefix_command)] +pub async fn version(ctx: Context<'_>) -> Result<(), Error> { + trace!("version command called by user {} in guild {}", ctx.author().id.get(), ctx.guild_id().unwrap().get()); + trace!("Loading version from environment"); + let version = std::env::var("CARGO_PKG_VERSION").unwrap_or_else(|_| "Unknown".to_string()); + let msg = format!("Current version: {}", version); + trace_message(msg.clone(), ctx.channel_id().to_string(), ctx.guild_id().unwrap().to_string()).await; + ctx.say(msg).await?; + debug!("Version command performed for user {} with version {}", ctx.author().name, version); + Ok(()) +} \ No newline at end of file diff --git a/src/main.rs b/src/main.rs index f4d99a6..5e63c4f 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,6 +1,6 @@ use std::env; use poise::serenity_prelude as sere; -use tracing::{info, warn, error, debug, trace}; +use tracing::{info, error, debug, trace}; use tracing_subscriber::EnvFilter; pub mod commands; pub mod event_handler; @@ -72,7 +72,7 @@ async fn main() { event_handler: |ctx, event, framework, user_data| { Box::pin(event_handler::event_handler(ctx, event, framework, user_data)) }, - commands: vec![commands::ping(), commands::calc(), commands::manage_admins(), commands::manage_auto_role()], + commands: vec![commands::ping(), commands::calc(), commands::manage_admins(), commands::manage_auto_role(), commands::version()], ..Default::default() }) .setup(|ctx, _ready, framework| {