From d62d1feb09e9539a66cb0269370f1afb6ad7d2a0 Mon Sep 17 00:00:00 2001 From: minneelyyyy Date: Tue, 10 Dec 2024 02:19:48 -0500 Subject: [PATCH] use a transaction for name changes --- src/commands/self_roles/name.rs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/commands/self_roles/name.rs b/src/commands/self_roles/name.rs index 7f67cc2..59389e5 100644 --- a/src/commands/self_roles/name.rs +++ b/src/commands/self_roles/name.rs @@ -6,10 +6,10 @@ use poise::serenity_prelude::EditRole; /// Change the name of your personal role #[poise::command(slash_command, prefix_command)] pub async fn name(ctx: Context<'_>, name: String) -> Result<(), Error> { - let db = &ctx.data().database; + let mut tx = ctx.data().database.begin().await?; if let Some(guild) = ctx.guild_id() { - let role = match super::get_user_role(ctx.author().id, guild, db).await? { + let role = match super::get_user_role(ctx.author().id, guild, &mut *tx).await? { Some(role) => role, None => { let role = guild.create_role(ctx, EditRole::new().name(name)).await?; @@ -18,11 +18,13 @@ pub async fn name(ctx: Context<'_>, name: String) -> Result<(), Error> { .bind(ctx.author().id.get() as i64) .bind(role.id.get() as i64) .bind(guild.get() as i64) - .execute(db).await?; + .execute(&mut *tx).await?; let member = guild.member(ctx, ctx.author().id).await?; member.add_role(ctx, role.clone()).await?; + tx.commit().await?; + ctx.reply(format!("You've been given the {} role!", role)).await?; return Ok(());