mirror of
http://shenjack.top:5100/shenjack/icalingua-python-bot.git
synced 2024-11-23 12:41:05 +08:00
喜报, img API
This commit is contained in:
parent
1eba64bf9e
commit
c65a2229cc
2
Cargo.lock
generated
2
Cargo.lock
generated
|
@ -653,7 +653,7 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "ica-rs"
|
||||
version = "0.6.1"
|
||||
version = "0.6.2"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"base64 0.22.1",
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[package]
|
||||
name = "ica-rs"
|
||||
version = "0.6.1"
|
||||
version = "0.6.2"
|
||||
edition = "2021"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
|
||||
from typing import Callable, Tuple
|
||||
|
||||
|
||||
"""
|
||||
ica.rs
|
||||
pub type RoomId = i64;
|
||||
|
@ -78,6 +77,13 @@ class IcaSendMessage:
|
|||
"""
|
||||
self.content = content
|
||||
return self
|
||||
def set_img(self, file: bytes, file_type: str, as_sticker: bool):
|
||||
"""
|
||||
设置消息的图片
|
||||
@param file: 图片文件 (实际上是 vec<u8>)
|
||||
@param file_type: 图片类型 (MIME) (image/png; image/jpeg)
|
||||
@param as_sticker: 是否作为贴纸发送
|
||||
"""
|
||||
|
||||
|
||||
class IcaDeleteMessage:
|
||||
|
|
|
@ -4,6 +4,8 @@ import time
|
|||
import requests
|
||||
import traceback
|
||||
|
||||
# import PIL
|
||||
|
||||
from typing import TYPE_CHECKING, TypeVar, Optional, Tuple
|
||||
|
||||
if TYPE_CHECKING:
|
||||
|
@ -198,9 +200,17 @@ def bmcl_rank_general(msg, client):
|
|||
# 显示前3名
|
||||
ranks = rank_data[:3]
|
||||
# ranks = rank_data
|
||||
|
||||
# image = PIL.Image.new("RGB", (100, 100), (255, 255, 255))
|
||||
# img_cache = io.BytesIO()
|
||||
# image.save(img_cache, format="JPEG")
|
||||
# raw_img = img_cache.getvalue()
|
||||
# img_cache.close()
|
||||
|
||||
report_msg = display_rank_full(ranks, req_time)
|
||||
client.info(report_msg)
|
||||
reply = msg.reply_with(display_rank_full(ranks, req_time))
|
||||
# reply.set_img(raw_img, "image/jpeg", False)
|
||||
client.send_message(reply)
|
||||
|
||||
|
||||
|
|
|
@ -275,7 +275,7 @@ impl NewMessage {
|
|||
|
||||
/// 创建一条对这条消息的回复
|
||||
pub fn reply_with(&self, content: &String) -> SendMessage {
|
||||
SendMessage::new(content.clone(), self.room_id, Some(self.msg.as_reply()))
|
||||
SendMessage::new(content.clone(), self.room_id, Some(self.msg.as_reply()), false)
|
||||
}
|
||||
|
||||
/// 作为被删除的消息
|
||||
|
@ -289,26 +289,56 @@ impl NewMessage {
|
|||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
pub struct SendMessage {
|
||||
/// 就是消息内容
|
||||
pub content: String,
|
||||
/// 发送的房间 id
|
||||
#[serde(rename = "roomId")]
|
||||
pub room_id: RoomId,
|
||||
/// 回复的消息
|
||||
#[serde(rename = "replyMessage")]
|
||||
pub reply_to: Option<ReplyMessage>,
|
||||
/// @ 谁
|
||||
#[serde(rename = "at")]
|
||||
pub at: JsonValue,
|
||||
/// base64 的图片
|
||||
#[serde(rename = "b64img")]
|
||||
file_data: Option<String>,
|
||||
/// 是否当作表情发送
|
||||
///
|
||||
/// 默认 false
|
||||
pub sticker: bool,
|
||||
}
|
||||
|
||||
impl SendMessage {
|
||||
pub fn new(content: String, room_id: RoomId, reply_to: Option<ReplyMessage>) -> Self {
|
||||
pub fn new(
|
||||
content: String,
|
||||
room_id: RoomId,
|
||||
reply_to: Option<ReplyMessage>,
|
||||
sticker: bool,
|
||||
) -> Self {
|
||||
Self {
|
||||
content,
|
||||
room_id,
|
||||
reply_to,
|
||||
at: json!([]),
|
||||
file_data: None,
|
||||
sticker,
|
||||
}
|
||||
}
|
||||
|
||||
pub fn as_value(&self) -> JsonValue { serde_json::to_value(self).unwrap() }
|
||||
|
||||
/// 设置消息的图片
|
||||
///
|
||||
/// as_sticker: 是否当作表情发送
|
||||
/// file: 图片数据
|
||||
/// file_type: 图片类型(MIME) (image/png; image/jpeg)
|
||||
pub fn set_img(&mut self, file: &Vec<u8>, file_type: &str, as_sticker: bool) {
|
||||
self.sticker = as_sticker;
|
||||
use base64::{engine::general_purpose, Engine as _};
|
||||
let base64_data = general_purpose::STANDARD.encode(file);
|
||||
self.file_data = Some(format!("data:{};base64,{}", file_type, base64_data));
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
|
|
|
@ -51,6 +51,7 @@ pub async fn start_ica(config: &IcaConfig, stop_reciver: StopGetter) -> ClientRe
|
|||
format!("shenbot v {}\nica-async-rs v{}", crate::VERSION, crate::ICA_VERSION),
|
||||
*room,
|
||||
None,
|
||||
false,
|
||||
);
|
||||
tokio::time::sleep(std::time::Duration::from_secs(1)).await;
|
||||
|
||||
|
|
|
@ -141,6 +141,10 @@ impl SendMessagePy {
|
|||
pub fn get_content(&self) -> String { self.msg.content.clone() }
|
||||
#[setter]
|
||||
pub fn set_content(&mut self, content: String) { self.msg.content = content; }
|
||||
/// 设置消息图片
|
||||
pub fn set_img(&mut self, file: Vec<u8>, file_type: String, as_sticker: bool) {
|
||||
self.msg.set_img(&file, &file_type, as_sticker);
|
||||
}
|
||||
}
|
||||
|
||||
impl SendMessagePy {
|
||||
|
|
Loading…
Reference in New Issue
Block a user