Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@ src/entity.example
/target
.env
.env.deploy
.claude
3 changes: 3 additions & 0 deletions Justfile
Original file line number Diff line number Diff line change
Expand Up @@ -59,3 +59,6 @@ run:

watch:
cargo watch -s 'just run'

lazysql:
lazysql 'postgresql://postgres:example@localhost:5432/postgres?sslmode=disable'
17 changes: 3 additions & 14 deletions src/telegram/actions/admin_users/details.rs
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ use crate::telegram::inline_buttons_admin::{
};
use crate::user::UserState;
use crate::utils::DurationPrettyFormat as _;
use crate::utils::teloxide::CallbackQueryExt as _;

#[tracing::instrument(skip_all, fields(user_id = %state.user_id(), target_user_id = %user_id))]
pub async fn handle_command(
Expand Down Expand Up @@ -53,21 +52,14 @@ pub async fn handle_command(
pub async fn handle_inline(
app: &'static App,
state: &UserState,
q: CallbackQuery,
_q: CallbackQuery,
m: Message,
user_id: String,
page: u64,
sort_by: AdminUsersSortBy,
sort_order: AdminUsersSortOrder,
status_filter: Option<UserStatus>,
) -> anyhow::Result<()> {
let Some(message) = q.get_message() else {
app.bot()
.answer_callback_query(q.id.clone())
.text("Inaccessible Message")
.await?;
return Ok(());
};

let text = format_user_details(app, &user_id).await?;

let keyboard = InlineKeyboardMarkup::new(vec![vec![
Expand All @@ -80,10 +72,7 @@ pub async fn handle_inline(
.into_inline_keyboard_button(state.locale()),
]]);

app.bot()
.edit_text(&message, text)
.reply_markup(keyboard)
.await?;
app.bot().edit_text(&m, text).reply_markup(keyboard).await?;

Ok(())
}
Expand Down
19 changes: 4 additions & 15 deletions src/telegram/actions/admin_users/list.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ use crate::telegram::inline_buttons_admin::{
AdminUsersSortOrder,
};
use crate::user::UserState;
use crate::utils::teloxide::CallbackQueryExt as _;

const USERS_PER_PAGE: u64 = 10;

Expand Down Expand Up @@ -45,31 +44,21 @@ pub async fn handle_command(
}

#[tracing::instrument(skip_all, fields(user_id = %state.user_id(), %page, ?sort_by, ?sort_order, ?status_filter))]
#[allow(clippy::too_many_arguments)]
pub async fn handle_inline(
app: &'static App,
state: &UserState,
q: CallbackQuery,
_q: CallbackQuery,
m: Message,
page: u64,
sort_by: AdminUsersSortBy,
sort_order: AdminUsersSortOrder,
status_filter: Option<UserStatus>,
) -> anyhow::Result<()> {
let Some(message) = q.get_message() else {
app.bot()
.answer_callback_query(q.id.clone())
.text("Inaccessible Message")
.await?;

return Ok(());
};

let (text, keyboard) =
build_users_page(app, state, page, sort_by, sort_order, status_filter).await?;

app.bot()
.edit_text(&message, text)
.reply_markup(keyboard)
.await?;
app.bot().edit_text(&m, text).reply_markup(keyboard).await?;

Ok(())
}
Expand Down
20 changes: 4 additions & 16 deletions src/telegram/actions/ai_slop_detection.rs
Original file line number Diff line number Diff line change
@@ -1,16 +1,13 @@
use sea_orm::Iterable as _;
use teloxide::payloads::{
AnswerCallbackQuerySetters as _,
EditMessageReplyMarkupSetters as _,
SendMessageSetters as _,
};
use teloxide::payloads::{EditMessageReplyMarkupSetters as _, SendMessageSetters as _};
use teloxide::prelude::Requester as _;
use teloxide::sugar::bot::BotMessagesExt as _;
use teloxide::types::{
CallbackQuery,
ChatId,
InlineKeyboardButton,
InlineKeyboardMarkup,
Message,
ReplyMarkup,
};

Expand All @@ -20,31 +17,22 @@ use crate::services::UserService;
use crate::telegram::handlers::HandleStatus;
use crate::telegram::inline_buttons::InlineButtons;
use crate::user::UserState;
use crate::utils::teloxide::CallbackQueryExt as _;

#[tracing::instrument(skip_all, fields(user_id = %state.user_id()))]
pub async fn handle_inline(
app: &'static App,
state: &UserState,
q: CallbackQuery,
m: Message,
status: UserAISlopDetection,
) -> anyhow::Result<()> {
let Some(message) = q.get_message() else {
app.bot()
.answer_callback_query(q.id.clone())
.text("Inaccessible Message")
.await?;

return Ok(());
};

app.bot().answer_callback_query(q.id).await?;

if status != state.user().cfg_ai_slop_detection {
UserService::set_cfg_ai_slop_detection(app.db(), state.user_id(), status).await?;

app.bot()
.edit_reply_markup(&message)
.edit_reply_markup(&m)
.reply_markup(InlineKeyboardMarkup::new(get_keyboard(
status,
state.locale(),
Expand Down
22 changes: 5 additions & 17 deletions src/telegram/actions/analyze.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ use teloxide::payloads::{
};
use teloxide::prelude::Requester as _;
use teloxide::sugar::bot::BotMessagesExt as _;
use teloxide::types::{CallbackQuery, InlineKeyboardMarkup};
use teloxide::types::{CallbackQuery, InlineKeyboardMarkup, Message};

use crate::app::{AIConfig, App};
use crate::lyrics::SearchResult as _;
Expand All @@ -31,25 +31,16 @@ use crate::telegram::MESSAGE_MAX_LEN;
use crate::telegram::inline_buttons::InlineButtons;
use crate::telegram::utils::link_preview_small_top;
use crate::user::UserState;
use crate::utils::teloxide::CallbackQueryExt as _;
use crate::utils::{DurationPrettyFormat as _, StringUtils as _};

#[tracing::instrument(skip_all, fields(user_id = %state.user_id(), %track_id))]
pub async fn handle_inline(
app: &'static App,
state: &UserState,
q: CallbackQuery,
m: Message,
track_id: &str,
) -> anyhow::Result<()> {
let Some(message) = q.get_message() else {
app.bot()
.answer_callback_query(q.id.clone())
.text("Inaccessible Message")
.await?;

return Ok(());
};

let Some(config) = app.ai() else {
app.bot()
.answer_callback_query(q.id)
Expand Down Expand Up @@ -91,18 +82,15 @@ pub async fn handle_inline(
.await?
else {
app.bot()
.edit_text(
&message,
t!("analysis.lyrics-not-found", locale = state.locale()),
)
.edit_text(&m, t!("analysis.lyrics-not-found", locale = state.locale()))
.await?;

return Ok(());
};

app.bot()
.edit_text(
&message,
&m,
t!(
"analysis.waiting",
locale = state.locale(),
Expand All @@ -116,7 +104,7 @@ pub async fn handle_inline(
let res = perform(app, state, config, &track, &hit.lyrics()).await;

// I don't care about error
app.bot().delete(&message).await.ok();
app.bot().delete(&m).await.ok();

match res {
Ok(()) => {
Expand Down
15 changes: 3 additions & 12 deletions src/telegram/actions/dislike.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ use crate::telegram::handlers::HandleStatus;
use crate::telegram::utils::link_preview_small_top;
use crate::user::UserState;
use crate::utils::DurationPrettyFormat as _;
use crate::utils::teloxide::CallbackQueryExt as _;

#[tracing::instrument(skip_all, fields(user_id = %state.user_id()))]
pub async fn handle(
Expand Down Expand Up @@ -80,7 +79,8 @@ pub async fn handle(
pub async fn handle_inline(
app: &'static App,
state: &UserState,
q: CallbackQuery,
_q: CallbackQuery,
m: Message,
track_id: &str,
) -> anyhow::Result<()> {
let track = state
Expand All @@ -95,17 +95,8 @@ pub async fn handle_inline(
let keyboard =
InlineButtons::from_track_status(TrackStatus::Disliked, track.id(), state.locale());

let Some(message) = q.get_message() else {
app.bot()
.answer_callback_query(q.id.clone())
.text("Inaccessible Message")
.await?;

return Ok(());
};

app.bot()
.edit_text(&message, compose_message_text(&track, state.locale()))
.edit_text(&m, compose_message_text(&track, state.locale()))
.link_preview_options(link_preview_small_top(track.url()))
.reply_markup(InlineKeyboardMarkup::new(keyboard))
.await?;
Expand Down
15 changes: 3 additions & 12 deletions src/telegram/actions/ignore.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,24 +9,15 @@ use crate::entity::prelude::*;
use crate::services::TrackStatusService;
use crate::telegram::utils::link_preview_small_top;
use crate::user::UserState;
use crate::utils::teloxide::CallbackQueryExt as _;

#[tracing::instrument(skip_all, fields(user_id = %state.user_id(), %track_id))]
pub async fn handle_inline(
app: &'static App,
state: &UserState,
q: CallbackQuery,
_q: CallbackQuery,
m: Message,
track_id: &str,
) -> anyhow::Result<()> {
let Some(message) = q.get_message() else {
app.bot()
.answer_callback_query(q.id.clone())
.text("Inaccessible Message")
.await?;

return Ok(());
};

let track = state
.spotify()
.await
Expand All @@ -41,7 +32,7 @@ pub async fn handle_inline(

app.bot()
.edit_text(
&message,
&m,
t!(
"actions.ignore",
track_link = track.track_tg_link(),
Expand Down
19 changes: 5 additions & 14 deletions src/telegram/actions/magic.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ use teloxide::payloads::{
};
use teloxide::prelude::Requester as _;
use teloxide::sugar::bot::BotMessagesExt as _;
use teloxide::types::{CallbackQuery, ChatId, InlineKeyboardMarkup, ReplyMarkup};
use teloxide::types::{CallbackQuery, ChatId, InlineKeyboardMarkup, Message, ReplyMarkup};

use crate::app::App;
use crate::services::{RateLimitAction, RateLimitOutput, RateLimitService, UserService};
Expand All @@ -20,7 +20,6 @@ use crate::telegram::inline_buttons::InlineButtons;
use crate::telegram::utils::link_preview_small_top;
use crate::user::UserState;
use crate::utils::DurationPrettyFormat as _;
use crate::utils::teloxide::CallbackQueryExt as _;

#[allow(clippy::significant_drop_tightening)]
#[tracing::instrument(skip_all, fields(user_id = %state.user_id()))]
Expand Down Expand Up @@ -66,16 +65,8 @@ pub async fn handle_inline(
app: &'static App,
state: &UserState,
q: CallbackQuery,
m: Message,
) -> anyhow::Result<()> {
let Some(message) = q.get_message() else {
app.bot()
.answer_callback_query(q.id.clone())
.text("Inaccessible Message")
.await?;

return Ok(());
};

if !state.is_spotify_authed().await {
actions::login::send_login_invite(app, state).await?;

Expand Down Expand Up @@ -109,7 +100,7 @@ pub async fn handle_inline(

app.bot()
.edit_text(
&message,
&m,
t!("magic.generating", header = header, locale = state.locale()),
)
.await?;
Expand All @@ -120,7 +111,7 @@ pub async fn handle_inline(
Ok(playlist) => {
app.bot()
.edit_text(
&message,
&m,
t!(
"magic.generated",
header = header,
Expand All @@ -137,7 +128,7 @@ pub async fn handle_inline(
Err(err) => {
app.bot()
.edit_text(
&message,
&m,
t!("magic.failed", header = header, locale = state.locale()),
)
.await?;
Expand Down
Loading
Loading