···10 #[description = "# of sides"] sides: Option<u32>,
11) -> Result<()> {
12 let sides = sides.unwrap_or(6);
13- let roll = rand::thread_rng().gen_range(1..=sides);
14 ctx.say(format!("You rolled a **{roll}**")).await?;
15 Ok(())
16}
···2829 let mut find_member = false;
30 while !find_member {
31- let selected = rand::thread_rng().gen_range(1..=members.len());
32 let memeber = &members[selected].user;
33 memeberid = memeber.id;
34
···10 #[description = "# of sides"] sides: Option<u32>,
11) -> Result<()> {
12 let sides = sides.unwrap_or(6);
13+ let roll = rand::rng().random_range(1..=sides);
14 ctx.say(format!("You rolled a **{roll}**")).await?;
15 Ok(())
16}
···2829 let mut find_member = false;
30 while !find_member {
31+ let selected = rand::rng().random_range(1..=members.len());
32 let memeber = &members[selected].user;
33 memeberid = memeber.id;
34
+1-1
src/commands/fun/nix.rs
···60/// nix fixes this
61#[poise::command(slash_command)]
62pub async fn nix(ctx: Context<'_>) -> Result<()> {
63- let select = rand::thread_rng().gen_range(0..=MEMES.len());
64 let img = MEMES[select];
6566 ctx.say(format!("https://raw.githubusercontent.com/gytis-ivaskevicius/high-quality-nix-content/master/memes/{img}")).await?;
···60/// nix fixes this
61#[poise::command(slash_command)]
62pub async fn nix(ctx: Context<'_>) -> Result<()> {
63+ let select = rand::rng().random_range(0..=MEMES.len());
64 let img = MEMES[select];
6566 ctx.say(format!("https://raw.githubusercontent.com/gytis-ivaskevicius/high-quality-nix-content/master/memes/{img}")).await?;
+11-11
src/commands/misc/nixpkgs.rs
···1use color_eyre::eyre::Result;
2-use nixpkgs_track::{branch_contains_commit, fetch_nixpkgs_pull_request};
3use poise::{serenity_prelude::CreateEmbed, CreateReply};
4use std::env;
5···2526 let github_token = env::var("GITHUB_TOKEN").expect("GITHUB_TOKEN not set");
2728- let pull_request = tokio::task::spawn_blocking({
29- let github_token = github_token.clone();
30- move || fetch_nixpkgs_pull_request(pr, Some(&github_token))
31- })
32- .await??;
3334 let Some(commit_sha) = pull_request.merge_commit_sha else {
35 ctx.say("This pull request is very old. I can't track it!")
···42 let github_token = github_token.clone();
43 let commit_sha = commit_sha.clone();
4445- let has_pull_request = tokio::task::spawn_blocking(move || {
46- branch_contains_commit(branch, &commit_sha, Some(&github_token))
47- })
48- .await
49- .unwrap_or(Ok(false))?;
005051 embed_description.push_str(&format!(
52 "{}: {}\n",
···1use color_eyre::eyre::Result;
2+use nixpkgs_track_lib::{branch_contains_commit, fetch_nixpkgs_pull_request};
3use poise::{serenity_prelude::CreateEmbed, CreateReply};
4use std::env;
5···2526 let github_token = env::var("GITHUB_TOKEN").expect("GITHUB_TOKEN not set");
2728+ let pull_request =
29+ fetch_nixpkgs_pull_request(crate::W(ctx.data().client.clone()), pr, Some(&github_token))
30+ .await?;
003132 let Some(commit_sha) = pull_request.merge_commit_sha else {
33 ctx.say("This pull request is very old. I can't track it!")
···40 let github_token = github_token.clone();
41 let commit_sha = commit_sha.clone();
4243+ let has_pull_request = branch_contains_commit(
44+ crate::W(ctx.data().client.clone()),
45+ branch,
46+ &commit_sha,
47+ Some(&github_token),
48+ )
49+ .await?;
5051 embed_description.push_str(&format!(
52 "{}: {}\n",
+9-1
src/main.rs
···34use dotenv::dotenv;
5use reqwest::Client;
6-use std::env;
78use color_eyre::eyre::{Report, Result};
9use poise::serenity_prelude::{ActivityData, ClientBuilder, GatewayIntents};
···12// User data, which is stored and accessible in all command invocations
13pub struct Data {
14 client: Client,
0000000015}
1617pub type Context<'a> = poise::Context<'a, Data, Report>;
···34use dotenv::dotenv;
5use reqwest::Client;
6+use std::{convert::AsRef, env};
78use color_eyre::eyre::{Report, Result};
9use poise::serenity_prelude::{ActivityData, ClientBuilder, GatewayIntents};
···12// User data, which is stored and accessible in all command invocations
13pub struct Data {
14 client: Client,
15+}
16+17+pub struct W<T>(T);
18+19+impl AsRef<Client> for W<Client> {
20+ fn as_ref(&self) -> &reqwest::Client {
21+ &self.0
22+ }
23}
2425pub type Context<'a> = poise::Context<'a, Data, Report>;