React to delete message; cargo clippy --fix

This commit is contained in:
Elnu 2025-03-26 21:26:20 -07:00
parent b3cb507b16
commit feb1142d6e
2 changed files with 52 additions and 30 deletions

View file

@ -11,7 +11,7 @@ type Context<'a> = poise::Context<'a, Data, Error>;
pub struct Data {}
use commands::{challenge::*, kanji::*, meta::*, owner::*};
use poise::serenity_prelude as serenity;
use poise::{serenity_prelude as serenity, Event};
use poise::serenity_prelude::model::gateway::GatewayIntents;
use clap::Parser;
@ -45,9 +45,9 @@ impl Arguments {
domain: env::var("DOMAIN")?,
discord_token: env::var("DISCORD_TOKEN")?,
prefix: env::var("PREFIX")?,
hugo: env::var("HUGO")?.into(),
hugo: env::var("HUGO")?,
build: env::var("BUILD")?,
guild_data: env::var("GUILD_DATA")?.into(),
guild_data: env::var("GUILD_DATA")?,
})
}
}
@ -67,6 +67,24 @@ lazy_static! {
};
}
async fn event_handler(
ctx: &serenity::Context,
event: &Event<'_>,
framework: poise::FrameworkContext<'_, Data, Error>,
_data: &Data,
) -> Result<(), Error> {
if let Event::ReactionAdd { add_reaction, .. } = event {
if !add_reaction.emoji.unicode_eq("") {
return Ok(());
}
let message = add_reaction.message(&ctx.http).await?;
if message.author.id == framework.bot_id && add_reaction.user_id.map(|id| *id.as_u64() == 441283734214279178).unwrap_or(false) {
message.delete(&ctx.http).await?;
}
}
Ok(())
}
#[tokio::main]
async fn main() {
// Initialize the logger to use environment variables.
@ -102,6 +120,9 @@ async fn main() {
hyogai(),
so(),
],
event_handler: |ctx, event, framework, data| {
Box::pin(event_handler(ctx, event, framework, data))
},
prefix_options: poise::PrefixFrameworkOptions {
prefix: Some(ARGS.prefix.clone()),
..Default::default()
@ -113,6 +134,7 @@ async fn main() {
GatewayIntents::GUILD_MESSAGES
| GatewayIntents::DIRECT_MESSAGES
| GatewayIntents::MESSAGE_CONTENT
| GatewayIntents::GUILD_MESSAGE_REACTIONS
| GatewayIntents::GUILDS,
)
.setup(move |_ctx, _ready, _framework| Box::pin(async move { Ok(Data {}) }));

View file

@ -26,31 +26,6 @@ impl User for serenity::User {
}
}
#[cfg(test)]
mod tests {
use crate::serenity::User;
use crate::utils::User as UserTrait;
fn test_user(name: &str, discriminator: u16) -> User {
let mut user = User::default();
user.name = name.to_owned();
user.discriminator = discriminator;
user
}
#[test]
fn test_legacy_username() {
let user = test_user("test", 123);
assert_eq!(user.username(), "test#0123");
}
#[test]
fn test_new_username() {
let user = test_user("test", 0);
assert_eq!(user.username(), "test");
}
}
pub fn get_challenge_number() -> i32 {
let challenge_dir = format!("{}/content/challenges", ARGS.hugo);
let paths = fs::read_dir(challenge_dir).unwrap();
@ -152,14 +127,14 @@ pub fn rebuild_site() {
pub fn get_guild_data() -> Map<String, Value> {
let guild_data_path = &ARGS.guild_data;
let guild_data_json = match File::open(&guild_data_path) {
let guild_data_json = match File::open(guild_data_path) {
Ok(mut file) => {
let mut json = String::new();
file.read_to_string(&mut json).unwrap();
json
}
Err(ref e) if e.kind() == std::io::ErrorKind::NotFound => {
let mut file = File::create(&guild_data_path).unwrap();
let mut file = File::create(guild_data_path).unwrap();
file.write_all(b"{}").unwrap();
file.flush().unwrap();
String::from("{}")
@ -435,3 +410,28 @@ pub async fn leaderboard(ctx: &Context<'_>) -> Result<(), Error> {
file.flush()?;
Ok(())
}
#[cfg(test)]
mod tests {
use crate::serenity::User;
use crate::utils::User as UserTrait;
fn test_user(name: &str, discriminator: u16) -> User {
let mut user = User::default();
user.name = name.to_owned();
user.discriminator = discriminator;
user
}
#[test]
fn test_legacy_username() {
let user = test_user("test", 123);
assert_eq!(user.username(), "test#0123");
}
#[test]
fn test_new_username() {
let user = test_user("test", 0);
assert_eq!(user.username(), "test");
}
}