This commit is contained in:
2025-02-22 14:57:51 +01:00
parent d82e455bd5
commit f17f6e0c16
10 changed files with 40 additions and 31 deletions
+11 -7
View File
@@ -1,5 +1,5 @@
use crate::websocket::send_cmd_json;
use crate::{rs_println, websocket, Context, Data, Error, BK_WEEK};
use crate::{cmds, rs_println, websocket, Context, Data, Error, BK_WEEK};
use crate::messages::*;
use crate::data::{self, dc_bind_bk};
@@ -172,35 +172,38 @@ pub async fn bk_week_add(
return Ok(());
}
let shorturl_u = cmds::to_shorturl(&url);
let shorturl = if shorturl_u.is_ok() { shorturl_u.unwrap() } else { url };
data::update_re_data(ctx.data()).await;
let reddit_data = get_reddit_data(ctx.data()).await.unwrap();
if let Some(bk_week) = reddit_data.get(BK_WEEK) {
let a = approve.unwrap_or_else(|| false);
let r = websocket::send_cmd_json("add_post_url", Some(json!([&url, a, true]))).await.unwrap();
let r = websocket::send_cmd_json("add_post_url", Some(json!([&shorturl, a, true]))).await.unwrap();
if !r["value"].as_bool().unwrap() {
send_msg(
ctx,
r#"Unknown error!
Error trace: `bk_week_cmds.rs -> bk_week_add() -> Unknown error`.
Common reason: The URL provided was likely invalid."#.to_string(),
Common reasons: The URL provided was likely invalid or 403: forbidden (e.g a private subreddit)."#.to_string(),
true,
true
).await;
return Ok(());
}
if let Some(post) = bk_week.get(&url) {
if let Some(post) = bk_week.get(&shorturl) {
if post.get("removed").is_some() {
send_unremove_msg(ctx, &url).await;
send_unremove_msg(ctx, &shorturl).await;
}
else {
send_updated_msg(ctx, &url).await;
send_updated_msg(ctx, &shorturl).await;
}
}
else {
send_msg(ctx, format!("Added post with URL \"<{}>\"!", &url), true, true).await;
send_msg(ctx, format!("Added post with URL \"<{}>\"!", &shorturl), true, true).await;
}
if a {
@@ -284,6 +287,7 @@ async fn approve_cmd(ctx: Context<'_>, url: &str, reddit_data: &Value, approve:
if let Some(post) = reddit_data.get(BK_WEEK).unwrap().get(&url) {
if post.get("removed").is_some() {
send_post_removed_message(ctx, &url, post.get("removed_by").unwrap().as_str().unwrap()).await;
return;
}
let r = websocket::send_cmd_json("set_approve_post", Some(json!([approve, &url]))).await.unwrap();
+1 -1
View File
@@ -165,7 +165,7 @@ pub async fn re_shorturl(
}
fn to_shorturl(url: &str) -> Result<String, &str> {
pub fn to_shorturl(url: &str) -> Result<String, &str> {
let re = Regex::new(r"comments/([a-zA-Z0-9]+)").unwrap();
if let Some(caps) = re.captures(url) {
-4
View File
@@ -118,9 +118,6 @@ pub async fn dc_add_server(data: &Data, server_id: u64) -> Result<(), ()> {
if !servers.contains_key(&server_id.to_string()) {
servers.insert(server_id.to_string(), json!({ "bk_week_channel": 0, "bk_mod_role": "bk mod", "bk_mods": [] }));
}
println!("moo");
write_dc_data(data).await;
println!("muu");
return Ok(());
}
@@ -141,7 +138,6 @@ pub async fn dc_bind_bk(data: &Data, server_id: u64, channel_id: u64) -> Result<
let server = servers[&server_id.to_string()].as_object_mut().unwrap();
server.insert("bk_week_channel".to_string(), channel_id.into());
write_dc_data(data).await;
return Ok(());
}
+1 -1
View File
@@ -28,7 +28,7 @@ class Bot:
self.data: dict = {}
async def initialize(self):
self.sr = await self.r.subreddit("bytedicetesting")#boykisser")
self.sr = await self.r.subreddit("bytedicetesting")
async def set_args(self, args: dict):
self.args = args
+4 -1
View File
@@ -1,4 +1,3 @@
import asyncpraw as praw
import asyncpraw.models as models
from macros import *
@@ -40,6 +39,10 @@ async def respond_to_mention(bot: botPy.Bot) -> bool:
async def bk_week_add(mention: models.Comment, bot: botPy.Bot):
if not mention.subreddit.display_name not in bot.sr:
await mention.mark_read()
return
await mention.submission.load()
author = mention.author
+1 -1
View File
@@ -97,7 +97,7 @@ async def from_url(bot: botPy.Bot, url: str) -> tuple[bool, models.Submission]:
try:
post: models.Submission = await bot.r.submission(url=url)
return True, post
except (prawcore.NotFound, prawcore.BadRequest, exc.InvalidURL):
except (prawcore.NotFound, prawcore.BadRequest, exc.InvalidURL, prawcore.Forbidden):
return False, None
except Exception as e:
py_error(f"Unexpected error at posts.py -> from_url():\n{e}")