Passing #[shuttle_secrets::Secrets] to serenity E...
# help
r
Hello, how can I use secret variables inside the EventHandler using
shuttle_secrets
? snippet:
Copy code
#[async_trait]
impl EventHandler for Handler {
    async fn ready(&self,
                   ctx: Context, ready: Ready) {
        let secret_var = if let Some(token) = secret_store.get("SECRET_VAR") {
            token
        } else {
            return Err(anyhow!("'SECRET_VAR' was not found").into());
        };
      
    }
}

#[shuttle_runtime::main]
async fn serenity(
    #[shuttle_secrets::Secrets] secret_store: SecretStore,
) -> shuttle_serenity::ShuttleSerenity {

    Ok(client.into())
}
e
the short version is: stick it into a field on the Serenity event handler type you're implementing and have it passed in during your
serenity
function that has access to the secrets when you construct that struct
r
Thanks for the tip. I can pass it in
Client::builder
Copy code
#[async_trait]
impl EventHandler for Handler {
    async fn ready(&self,
                   ctx: Context, ready: Ready) {
    println!(self.secret_var)
    }
}

#[shuttle_runtime::main]
async fn serenity(
    #[shuttle_secrets::Secrets] secret_store: SecretStore,
) -> shuttle_serenity::ShuttleSerenity {
    let secret_var = if let Some(secret_var) = secret_store.get("SECRET_VAR") {
        crypto_token
    } else {
        return Err(anyhow!("'SECRET_VAR' was not found").into());
    };
    let mut client = Client::builder(&token, intents)
        .event_handler(Handler {
            secret_var: secret_var,
        }
}