Compare commits
1 Commits
main
...
99e5a44e40
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
99e5a44e40 |
4
.envrc
4
.envrc
@@ -1,4 +1,4 @@
|
||||
use flake
|
||||
|
||||
export DISCORD_TOKEN_FILE=./token
|
||||
export DB_FILE=db.sqlite
|
||||
export DISCORD_TOKEN_FILE=./token-prod
|
||||
export DB_FILE=db-prod.sqlite
|
||||
|
||||
32
src/main.rs
32
src/main.rs
@@ -1,4 +1,4 @@
|
||||
use std::{io, path::Path, time::Duration};
|
||||
use std::{io, path::Path};
|
||||
|
||||
use ::serenity::all::{ChannelId, EditMessage, GuildId, Mentionable, UserId};
|
||||
use eyre::{Context as _, Error, OptionExt, Result};
|
||||
@@ -392,17 +392,12 @@ async fn register_commands(
|
||||
}
|
||||
|
||||
#[tracing::instrument(skip(ctx))]
|
||||
async fn handle_message(
|
||||
ctx: impl AsRef<serenity::Http>,
|
||||
message: &serenity::Message,
|
||||
) -> Result<()> {
|
||||
tracing::info!("Got message: {}", message.content);
|
||||
if message.content.contains("https://clocktower.live") {
|
||||
async fn handle_message(ctx: impl AsRef<serenity::Http>, message: &serenity::Message) -> Result<()> {
|
||||
for embed in &message.embeds {
|
||||
if embed.url.as_ref().is_some_and(|url| url.contains("https://clocktower.live")) {
|
||||
let mut message = message.clone();
|
||||
tokio::time::sleep(Duration::from_secs(2)).await;
|
||||
message
|
||||
.edit(&ctx.as_ref(), EditMessage::new().suppress_embeds(true))
|
||||
.await?;
|
||||
message.edit(&ctx.as_ref(), EditMessage::new().suppress_embeds(true)).await?;
|
||||
}
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
@@ -414,13 +409,8 @@ async fn on_event(
|
||||
_: &Data,
|
||||
) -> Result<()> {
|
||||
match event {
|
||||
serenity::FullEvent::GuildCreate { guild, is_new: _ } => {
|
||||
register_commands(ctx, framework.options, guild.id).await?
|
||||
}
|
||||
serenity::FullEvent::Message { new_message: msg }
|
||||
| serenity::FullEvent::MessageUpdate { new: Some(msg), .. } => {
|
||||
handle_message(ctx, msg).await?
|
||||
}
|
||||
serenity::FullEvent::GuildCreate { guild, is_new: _ } => register_commands(ctx, framework.options, guild.id).await?,
|
||||
serenity::FullEvent::Message { new_message: msg } | serenity::FullEvent::MessageUpdate { new: Some(msg), .. } => handle_message(ctx, msg).await?,
|
||||
_ => {}
|
||||
}
|
||||
Ok(())
|
||||
@@ -446,10 +436,8 @@ async fn main() -> Result<()> {
|
||||
)
|
||||
.wrap_err("A Discord token is required")?;
|
||||
let dbfile = std::env::var_os("DB_FILE").ok_or_eyre("A database file is required")?;
|
||||
let intents = serenity::GatewayIntents::non_privileged()
|
||||
| serenity::GatewayIntents::GUILD_MEMBERS
|
||||
| serenity::GatewayIntents::GUILD_MESSAGES
|
||||
| serenity::GatewayIntents::MESSAGE_CONTENT;
|
||||
let intents =
|
||||
serenity::GatewayIntents::non_privileged() | serenity::GatewayIntents::GUILD_MEMBERS | serenity::GatewayIntents::GUILD_MESSAGES;
|
||||
|
||||
let framework = poise::Framework::builder()
|
||||
.options(poise::FrameworkOptions {
|
||||
|
||||
Reference in New Issue
Block a user