feat: can now set the server icon programmatically
This commit is contained in:
parent
4f96c9087f
commit
7bcf30fb3a
1 changed files with 14 additions and 1 deletions
|
@ -15,10 +15,13 @@ use std::process::Command;
|
||||||
use chrono::{Datelike, Utc};
|
use chrono::{Datelike, Utc};
|
||||||
use gdk_pixbuf::{Pixbuf, PixbufFormat, PixbufLoader};
|
use gdk_pixbuf::{Pixbuf, PixbufFormat, PixbufLoader};
|
||||||
use gdk_pixbuf::prelude::PixbufLoaderExt;
|
use gdk_pixbuf::prelude::PixbufLoaderExt;
|
||||||
|
use rand::rngs::SmallRng;
|
||||||
|
use rand::SeedableRng;
|
||||||
use rand::seq::IndexedRandom;
|
use rand::seq::IndexedRandom;
|
||||||
use resvg::usvg;
|
use resvg::usvg;
|
||||||
use serde::Deserialize;
|
use serde::Deserialize;
|
||||||
use serenity::all::GuildId;
|
use serenity::all::GuildId;
|
||||||
|
use serenity::builder::{CreateAttachment, EditGuild};
|
||||||
use tokio::sync::RwLock;
|
use tokio::sync::RwLock;
|
||||||
use skynet_discord_bot::common::renderer::{Args, Renderer};
|
use skynet_discord_bot::common::renderer::{Args, Renderer};
|
||||||
|
|
||||||
|
@ -97,8 +100,10 @@ async fn update_icon_main(ctx: Arc<Context>) {
|
||||||
// filter them so only the current season (if any) are active
|
// filter them so only the current season (if any) are active
|
||||||
let logos_filtered = logos_filter(&festival_data, logos);
|
let logos_filtered = logos_filter(&festival_data, logos);
|
||||||
|
|
||||||
let mut rng = rand::rng();
|
let mut rng = SmallRng::from_os_rng();
|
||||||
let logo_selected = logos_filtered.choose(&mut rng).unwrap();
|
let logo_selected = logos_filtered.choose(&mut rng).unwrap();
|
||||||
|
|
||||||
|
logo_set(&ctx, &server, logo_selected).await;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct FestivalData{
|
struct FestivalData{
|
||||||
|
@ -299,4 +304,12 @@ fn logos_filter(festival_data: &FestivalData, existing: Vec<LogoData>) -> Vec<L
|
||||||
}
|
}
|
||||||
|
|
||||||
filtered
|
filtered
|
||||||
|
}
|
||||||
|
|
||||||
|
async fn logo_set(ctx: &Arc<Context>, server: &GuildId, logo_selected: &LogoData){
|
||||||
|
let icon = CreateAttachment::path(logo_selected.path.to_str().unwrap_or_default()).await.unwrap();
|
||||||
|
|
||||||
|
// assuming a `guild` has already been bound
|
||||||
|
let builder = EditGuild::new().icon(Some(&icon));
|
||||||
|
server.edit(ctx, builder).await.unwrap();
|
||||||
}
|
}
|
Loading…
Add table
Add a link
Reference in a new issue