Apply patreon sharing across web/bot
This commit is contained in:
@@ -23,28 +23,12 @@ impl Recordable for Options {
|
||||
return Ok(());
|
||||
}
|
||||
|
||||
let existing_link = sqlx::query!(
|
||||
"SELECT linked_at FROM patreon_link WHERE user_id = ? AND linked_at > NOW() - INTERVAL 4 WEEK",
|
||||
user_id.get()
|
||||
)
|
||||
.fetch_optional(&ctx.data().database)
|
||||
.await?;
|
||||
|
||||
if existing_link.is_some() {
|
||||
ctx.send(
|
||||
CreateReply::default()
|
||||
.content("❌ You can only link once every 4 weeks. Please try again later.")
|
||||
.ephemeral(true),
|
||||
)
|
||||
.await?;
|
||||
return Ok(());
|
||||
}
|
||||
|
||||
// Insert or update the patreon_link entry
|
||||
sqlx::query!(
|
||||
"INSERT INTO patreon_link (user_id, guild_id, linked_at) VALUES (?, ?, NOW())
|
||||
ON DUPLICATE KEY UPDATE user_id = user_id",
|
||||
ON DUPLICATE KEY UPDATE guild_id = ?",
|
||||
user_id.get(),
|
||||
guild_id.get(),
|
||||
guild_id.get()
|
||||
)
|
||||
.execute(&ctx.data().database)
|
||||
@@ -61,7 +45,7 @@ impl Recordable for Options {
|
||||
}
|
||||
}
|
||||
|
||||
/// Link your Patreon subscription to this server. This command can be run once every four weeks
|
||||
/// Link your Patreon subscription to this server to allow other users Patreon access.
|
||||
#[poise::command(
|
||||
slash_command,
|
||||
rename = "link",
|
||||
|
||||
@@ -11,29 +11,24 @@ pub struct Options;
|
||||
|
||||
impl Recordable for Options {
|
||||
async fn run(self, ctx: Context<'_>) -> Result<(), Error> {
|
||||
let guild_id = ctx.guild_id().ok_or("This command must be used in a server")?;
|
||||
let user_id = ctx.author().id;
|
||||
|
||||
// Remove the patreon_link entry
|
||||
let result = sqlx::query!(
|
||||
"DELETE FROM patreon_link WHERE user_id = ? AND guild_id = ?",
|
||||
user_id.get(),
|
||||
guild_id.get()
|
||||
)
|
||||
.execute(&ctx.data().database)
|
||||
.await?;
|
||||
let result = sqlx::query!("DELETE FROM patreon_link WHERE user_id = ?", user_id.get())
|
||||
.execute(&ctx.data().database)
|
||||
.await?;
|
||||
|
||||
if result.rows_affected() > 0 {
|
||||
ctx.send(
|
||||
CreateReply::default()
|
||||
.content("✅ Successfully unlinked your Patreon subscription from this server!")
|
||||
.content("✅ Successfully unlinked your Patreon subscription!")
|
||||
.ephemeral(true),
|
||||
)
|
||||
.await?;
|
||||
} else {
|
||||
ctx.send(
|
||||
CreateReply::default()
|
||||
.content("❌ No existing Patreon link found for this server.")
|
||||
.content("❌ No existing Patreon link found.")
|
||||
.ephemeral(true),
|
||||
)
|
||||
.await?;
|
||||
@@ -43,12 +38,12 @@ impl Recordable for Options {
|
||||
}
|
||||
}
|
||||
|
||||
/// Unlink your Patreon subscription from this server
|
||||
/// Unlink your Patreon subscription
|
||||
#[poise::command(
|
||||
slash_command,
|
||||
rename = "unlink",
|
||||
identifying_name = "patreon_unlink",
|
||||
guild_only = true
|
||||
guild_only = false
|
||||
)]
|
||||
pub async fn unlink(ctx: Context<'_>) -> Result<(), Error> {
|
||||
(Options {}).run(ctx).await
|
||||
|
||||
Reference in New Issue
Block a user