How to access context after setting up the `framework` in Poise (serenity) for a discord bot?

I want to access that Context object, also pass it around into different functions. And use that ctx object into the function send_changes_via_bot, which would send the updates to discord's api using ctx.say().

I am also wondering if I am using rx right, I was thinking if I would recursively call the function the - rx being passed in each call would be different since it's continuously receiving from the tx in main. But now I am wondering if the old rx will just keep being copied as rx doesn't seem like a pointer.

Link to the GitHub repo

 pub async fn bot(rx: &mpsc::Receiver<Value>) { let discord_token = fs::read_to_string("discordtoken.txt") .expect("Issue with token"); let framework = poise::Framework::builder() .options(poise::FrameworkOptions { // Macro takes care of ctx and user commands: vec![account_age(), set_gdrive_channel(), spawn_watcher()], ..Default::default() }) .token(discord_token) .intents(serenity::GatewayIntents::non_privileged()) .setup(|ctx, _ready, framework| { Box::pin(async move { poise::builtins::register_globally(ctx, &framework.options().commands) .await?; Ok(Data {}) }) }); // * ---------------------------------------------------------------- // * ---------------------------------------------------------------- // ! Don't know how to pass context here :( send_changes_via_bot(ctx, rx).await; // * ---------------------------------------------------------------- // * ---------------------------------------------------------------- framework.run().await.unwrap(); } 
2

1 Answer

This did the trick.

 let metacat = framework.build().await.expect("Failed to init metacat"); metacat.client().start().await; let global_ctx = &metacat.client().cache_and_http; send_changes_via_bot(global_ctx, rx); 

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

You Might Also Like