hotfixes & QOL
This commit is contained in:
+35
-27
@@ -1,10 +1,10 @@
|
||||
use crate::data::{get_mutex_data, update_re_data};
|
||||
use crate::data::{get_mutex_data, get_toml_mutex, update_re_data};
|
||||
use crate::messages::{make_post_embed, make_removed_embed, EmbedOptions};
|
||||
use crate::re_cmds::generic_fns::{is_bk_mod, is_bk_mod_serenity, serenity_edit_msg_embed, serenity_send_msg};
|
||||
use crate::websocket::send_cmd_json;
|
||||
use crate::{lang, rs_println, Data, Error, CFG_DATA_RE};
|
||||
|
||||
use poise::serenity_prelude::{self as serenity, ActivityData, ComponentInteraction, Interaction, Member, Ready};
|
||||
use poise::serenity_prelude::{self as serenity, ActivityData, ChannelId, ComponentInteraction, Interaction, Member, MessageId, Ready};
|
||||
use serde_json::{json, Value};
|
||||
|
||||
use std::future::Future;
|
||||
@@ -18,7 +18,7 @@ pub fn event_handler<'a>(
|
||||
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'a>> {
|
||||
Box::pin(async move {
|
||||
match event {
|
||||
serenity::FullEvent::Ready { data_about_bot } => on_ready(ctx, data_about_bot),
|
||||
serenity::FullEvent::Ready { data_about_bot } => on_ready(ctx, data_about_bot, data).await,
|
||||
serenity::FullEvent::InteractionCreate { interaction } => { let _ = handle_buttons(ctx, data, interaction).await; },
|
||||
_ => {}
|
||||
}
|
||||
@@ -27,15 +27,15 @@ pub fn event_handler<'a>(
|
||||
}
|
||||
|
||||
|
||||
fn on_ready(ctx: &serenity::Context, data_about_bot: &Ready) {
|
||||
async fn on_ready(ctx: &serenity::Context, data_about_bot: &Ready, data: &Data) {
|
||||
rs_println!(
|
||||
"Bot started as user \"{}\" with id {}",
|
||||
data_about_bot.user.name,
|
||||
data_about_bot.user.id
|
||||
);
|
||||
|
||||
let file_text = std::fs::read_to_string("./cfg/status.txt").unwrap();
|
||||
let custom_activity = ActivityData::custom(file_text);
|
||||
let m_data = get_toml_mutex(&data.cfg).await.unwrap();
|
||||
let custom_activity = ActivityData::custom(m_data["general"]["status"].as_str().unwrap());
|
||||
|
||||
ctx.online();
|
||||
ctx.set_activity(Some(custom_activity));
|
||||
@@ -65,6 +65,16 @@ async fn handle_buttons(ctx: &serenity::Context, data: &Data, interaction: &Inte
|
||||
}
|
||||
|
||||
|
||||
async fn update_embed(ctx: &serenity::Context, url: &str, new_data: &Value, c_id: &ChannelId, m_id: &MessageId) {
|
||||
let e: EmbedOptions;
|
||||
let remove = new_data["removed"]["removed"].as_bool().unwrap();
|
||||
if remove { e = make_removed_embed(new_data, url, true); }
|
||||
else { e = make_post_embed (new_data, url, true); }
|
||||
|
||||
serenity_edit_msg_embed(ctx, &c_id, &m_id, e).await;
|
||||
}
|
||||
|
||||
|
||||
async fn approve_btn(ctx: &serenity::Context, data: &Data, c_member: &Member, component: &ComponentInteraction, url: String, approve: bool) -> Result<(), Error> {
|
||||
if !is_bk_mod_serenity(ctx, data, c_member, component).await { return Ok(()); }
|
||||
|
||||
@@ -73,13 +83,11 @@ async fn approve_btn(ctx: &serenity::Context, data: &Data, c_member: &Member, co
|
||||
let c_id = component.channel_id;
|
||||
let m_id = component.message.id;
|
||||
|
||||
update_re_data(data).await;
|
||||
let new_data = &get_mutex_data(&data.reddit_data).await.unwrap()[CFG_DATA_RE][&url];
|
||||
update_embed(ctx, &url, new_data, &c_id, &m_id).await;
|
||||
|
||||
if r["value"].as_bool().unwrap() {
|
||||
update_re_data(data).await;
|
||||
let new_data = &get_mutex_data(&data.reddit_data).await.unwrap()[CFG_DATA_RE][&url];
|
||||
let e = make_post_embed(new_data, &url, true);
|
||||
|
||||
serenity_edit_msg_embed(ctx, &c_id, &m_id, e).await;
|
||||
|
||||
if approve {
|
||||
serenity_send_msg(ctx, component, lang!("dc_msg_re_post_approve_success"), true).await;
|
||||
}
|
||||
@@ -87,6 +95,9 @@ async fn approve_btn(ctx: &serenity::Context, data: &Data, c_member: &Member, co
|
||||
serenity_send_msg(ctx, component, lang!("dc_msg_re_post_disapprove_success"), true).await;
|
||||
}
|
||||
}
|
||||
else {
|
||||
serenity_send_msg(ctx, component, lang!("dc_msg_re_post_approve_remove"), true).await;
|
||||
}
|
||||
|
||||
return Ok(());
|
||||
}
|
||||
@@ -106,16 +117,12 @@ async fn remove_btn(ctx: &serenity::Context, data: &Data, c_member: &Member, com
|
||||
|
||||
let c_id = component.channel_id;
|
||||
let m_id = component.message.id;
|
||||
|
||||
update_re_data(data).await;
|
||||
let new_data = &get_mutex_data(&data.reddit_data).await.unwrap()[CFG_DATA_RE][&url];
|
||||
update_embed(ctx, &url, new_data, &c_id, &m_id).await;
|
||||
|
||||
if r["value"].as_bool().unwrap() {
|
||||
update_re_data(data).await;
|
||||
let new_data = &get_mutex_data(&data.reddit_data).await.unwrap()[CFG_DATA_RE][&url];
|
||||
let e: EmbedOptions;
|
||||
if remove { e = make_removed_embed(new_data, &url, true); }
|
||||
else { e = make_post_embed (new_data, &url, true); }
|
||||
|
||||
serenity_edit_msg_embed(ctx, &c_id, &m_id, e).await;
|
||||
|
||||
if remove {
|
||||
serenity_send_msg(ctx, component, lang!("dc_msg_re_post_remove_success", &url), true).await;
|
||||
}
|
||||
@@ -137,13 +144,11 @@ async fn vote_btn(ctx: &serenity::Context, data: &Data, c_member: &Member, compo
|
||||
let c_id = component.channel_id;
|
||||
let m_id = component.message.id;
|
||||
|
||||
update_re_data(data).await;
|
||||
let new_data = &get_mutex_data(&data.reddit_data).await.unwrap()[CFG_DATA_RE][&url];
|
||||
update_embed(ctx, &url, new_data, &c_id, &m_id).await;
|
||||
|
||||
if r["value"].as_bool().unwrap() {
|
||||
update_re_data(data).await;
|
||||
let new_data = &get_mutex_data(&data.reddit_data).await.unwrap()[CFG_DATA_RE][&url];
|
||||
let e = make_post_embed(new_data, &url, true);
|
||||
|
||||
serenity_edit_msg_embed(ctx, &c_id, &m_id, e).await;
|
||||
|
||||
if vote {
|
||||
if is_mod { serenity_send_msg(ctx, component, lang!("dc_msg_re_vote_mod_success"), true).await; }
|
||||
else { serenity_send_msg(ctx, component, lang!("dc_msg_re_vote_success"), true).await; }
|
||||
@@ -153,7 +158,10 @@ async fn vote_btn(ctx: &serenity::Context, data: &Data, c_member: &Member, compo
|
||||
}
|
||||
}
|
||||
else {
|
||||
if !vote { serenity_send_msg(ctx, component, lang!("dc_msg_re_vote_remove_havent"), true).await; }
|
||||
if new_data["removed"]["removed"].as_bool().unwrap() {
|
||||
serenity_send_msg(ctx, component, lang!("dc_msg_re_post_vote_removed_post"), true).await;
|
||||
}
|
||||
else if !vote { serenity_send_msg(ctx, component, lang!("dc_msg_re_vote_remove_havent"), true).await; }
|
||||
}
|
||||
|
||||
return Ok(());
|
||||
|
||||
Reference in New Issue
Block a user