moderatior
bendn 2024-04-14
parent a97070e · commit 21230f7
-rw-r--r--src/main.rs88
1 files changed, 31 insertions, 57 deletions
diff --git a/src/main.rs b/src/main.rs
index e520117..28076b3 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -14,21 +14,6 @@ macro_rules! send {
};
}
-fn last() -> u64 {
- std::fs::read("last")
- .ok()
- .map(|x| {
- x.into_iter()
- .take_while(u8::is_ascii_digit)
- .fold(0u64, |acc, x| acc * 10 + (x - b'0') as u64)
- })
- .unwrap_or(0)
-}
-
-fn set_last(x: u64) {
- std::fs::write("last", x.to_string()).unwrap();
-}
-
pub fn format(log: AuditLogEntry) -> Option<String> {
use serenity::model::guild::audit_log::Action::*;
use serenity::model::guild::audit_log::Change::*;
@@ -162,44 +147,6 @@ pub fn format(log: AuditLogEntry) -> Option<String> {
))
}
-async fn lop(c: serenity::client::Context) {
- let c = &c;
- let g = c.http().get_guild(925674713429184564.into()).await.unwrap();
- let ch = g.channel_id_from_name(c, "server-logs").unwrap();
- loop {
- let l = last();
- for log in g
- .audit_logs(c, None, None, None, None)
- .await
- .unwrap()
- .entries
- .into_iter()
- .rev()
- .filter(|x| x.id.created_at().unix_timestamp() as u64 > l)
- {
- let Some(h) = format(log.clone()) else {
- continue;
- };
- ch.send_message(
- c,
- CreateMessage::new()
- .allowed_mentions(CreateAllowedMentions::new().empty_users().empty_roles())
- .content(h),
- )
- .await
- .unwrap();
- }
- set_last(
- std::time::SystemTime::now()
- .duration_since(std::time::UNIX_EPOCH)
- .unwrap()
- .as_secs(),
- );
- // every minute
- tokio::time::sleep(Duration::from_secs(60)).await;
- }
-}
-
fn diff(old: &str, new: &str) -> String {
diff::lines(old, new)
.into_iter()
@@ -225,9 +172,36 @@ impl Bot {
event_handler: |c, e, _, _| {
Box::pin(async move {
match e {
- FullEvent::Ready { .. } => {
- tokio::spawn(lop(c.clone()));
+ FullEvent::GuildAuditLogEntryCreate { entry, .. } => {
+ let Some(h) = format(entry.clone()) else {
+ return Ok(());
+ };
+ ChannelId::new(1220060625338761286).send_message(
+ c,
+ CreateMessage::new()
+ .allowed_mentions(CreateAllowedMentions::new().empty_users().empty_roles())
+ .content(h),
+ )
+ .await?;
}
+ FullEvent::GuildMemberRemoval { user, member_data_if_available, .. } => {
+ ChannelId::new(1220060625338761286)
+ .send_message(
+ c,
+ CreateMessage::new()
+ .allowed_mentions(
+ CreateAllowedMentions::new()
+ .empty_users()
+ .empty_roles(),
+ )
+ .content(format!("{LEFT} goodbye {}", match member_data_if_available {
+ Some(x) => x.nick.as_ref().unwrap_or(&user.name),
+ None => &user.name,
+ })),
+ )
+ .await
+ .unwrap();
+ },
FullEvent::Message { new_message } => db::set_m(new_message.clone()),
FullEvent::MessageUpdate { event: MessageUpdateEvent { id, channel_id, content: Some(content), author: Some(User{ id: author, bot, ..}), attachments: Some(attachments), .. }, .. } if !bot => {
if let Some((oc, _, _)) = db::get(id.get()) {
@@ -269,7 +243,7 @@ impl Bot {
if a == 1224510735959462068 { return Ok(()) }
if author.get() != a {
format!(
- "<@{a}> {CANCEL} deleted their own message (in <#{channel_id}>):\n{content}\n\n{}",
+ "<@{a}> {CANCEL} deleted their own message (in <#{channel_id}>):```\n{content}\n```\n{}",
links
.into_iter()
.reduce(|a, b| format!("{a} {b}"))
@@ -277,7 +251,7 @@ impl Bot {
)
} else {
format!(
- "<@{who}> {CANCEL} deleted message by <@{author}> (in <#{channel_id}>):\n{content}\n\n{}",
+ "<@{who}> {CANCEL} deleted message by <@{author}> (in <#{channel_id}>):```\n{content}\n```\n{}",
links
.into_iter()
.reduce(|a, b| format!("{a} {b}"))