@@ -4,18 +4,16 @@ use std::ops::Add;
4
4
5
5
use byteorder:: { BigEndian , ReadBytesExt } ;
6
6
7
- use encoding:: { EncoderTrap , DecoderTrap , Encoding } ;
7
+ use encoding:: { DecoderTrap , Encoding } ;
8
8
use encoding:: all:: GB18030 ;
9
9
10
- use crate :: api:: { send_private_msg, get_stranger_info, add_log , CQLogLevel , get_group_member_list, get_group_member_info_v2, get_group_info, send_group_msg, set_group_anonymous_ban, Flag , set_group_card, set_group_anonymous, set_group_whole_ban, set_group_ban, set_group_kick} ;
10
+ use crate :: api:: { send_private_msg, get_stranger_info, get_group_member_list, get_group_member_info_v2, get_group_info, send_group_msg, set_group_anonymous_ban, Flag , set_group_card, set_group_anonymous, set_group_whole_ban, set_group_ban, set_group_kick} ;
11
11
12
12
macro_rules! utf8 {
13
13
( $b: expr) => {
14
- unsafe {
15
- GB18030
16
- . decode( $b, DecoderTrap :: Ignore ) . unwrap( ) [ ..]
17
- . to_string( )
18
- }
14
+ GB18030
15
+ . decode( $b, DecoderTrap :: Ignore ) . unwrap( ) [ ..]
16
+ . to_string( )
19
17
}
20
18
}
21
19
@@ -25,7 +23,7 @@ pub(crate) fn read_multi_object(b: Vec<u8>) -> Vec<Vec<u8>> {
25
23
let mut vs = Vec :: new ( ) ;
26
24
for _ in 0 ..count {
27
25
let mut v = vec ! [ 0u8 ; b. read_i16:: <BigEndian >( ) . unwrap( ) as usize ] ;
28
- b. read_exact ( & mut v) ;
26
+ b. read_exact ( & mut v) . unwrap ( ) ;
29
27
vs. push ( v) ;
30
28
}
31
29
vs
@@ -36,8 +34,8 @@ pub trait ReadString: Read {
36
34
let len = self . read_i16 :: < BigEndian > ( ) ?;
37
35
if len > 0 {
38
36
let mut v = vec ! [ 0u8 ; len as usize ] ;
39
- self . read_exact ( & mut v) ;
40
- Ok ( utf8 ! ( v. as_slice( ) ) )
37
+ self . read_exact ( & mut v) . unwrap ( ) ;
38
+ Ok ( unsafe { utf8 ! ( v. as_slice( ) ) } )
41
39
} else { Ok ( String :: new ( ) ) }
42
40
}
43
41
}
@@ -49,7 +47,7 @@ pub struct File {
49
47
pub id : String ,
50
48
pub name : String ,
51
49
pub size : i64 ,
52
- pub busid : i64
50
+ pub busid : i64 ,
53
51
}
54
52
55
53
impl File {
@@ -59,7 +57,7 @@ impl File {
59
57
id : b. read_string ( ) . unwrap ( ) ,
60
58
name : b. read_string ( ) . unwrap ( ) ,
61
59
size : b. read_i64 :: < BigEndian > ( ) . unwrap ( ) ,
62
- busid : b. read_i64 :: < BigEndian > ( ) . unwrap ( )
60
+ busid : b. read_i64 :: < BigEndian > ( ) . unwrap ( ) ,
63
61
}
64
62
}
65
63
}
@@ -69,11 +67,10 @@ pub struct Anonymous {
69
67
pub group_id : i64 ,
70
68
pub user_id : i64 ,
71
69
pub name : String ,
72
- pub flag : Flag
70
+ pub flag : Flag ,
73
71
}
74
72
75
73
impl Anonymous {
76
-
77
74
pub fn ban ( & self , time : i64 ) {
78
75
set_group_anonymous_ban ( self . group_id , self . flag . clone ( ) , time) ;
79
76
}
@@ -84,7 +81,7 @@ impl Anonymous {
84
81
group_id : group_id,
85
82
user_id : c. read_i64 :: < BigEndian > ( ) . unwrap ( ) ,
86
83
name : c. read_string ( ) . unwrap ( ) ,
87
- flag : unsafe { String :: from_utf8_unchecked ( b) }
84
+ flag : unsafe { String :: from_utf8_unchecked ( b) } ,
88
85
}
89
86
}
90
87
}
@@ -185,7 +182,6 @@ impl Message for Group {
185
182
}
186
183
187
184
impl Group {
188
-
189
185
pub fn new ( group_id : i64 ) -> Group {
190
186
get_group_info ( group_id, false )
191
187
}
@@ -303,14 +299,7 @@ impl User {
303
299
let mut b = Cursor :: new ( base64:: decode ( & b) . unwrap ( ) ) ;
304
300
User {
305
301
user_id : b. read_i64 :: < BigEndian > ( ) . unwrap ( ) ,
306
- nickname : {
307
- let len = b. read_i16 :: < BigEndian > ( ) . unwrap ( ) ;
308
- if len > 0 {
309
- let mut v = vec ! [ 0 ; len as usize ] ;
310
- b. read_exact ( & mut v) ;
311
- utf8 ! ( v. as_slice( ) )
312
- } else { String :: new ( ) }
313
- } ,
302
+ nickname : b. read_string ( ) . unwrap ( ) ,
314
303
sex : UserSex :: from ( b. read_i32 :: < BigEndian > ( ) . unwrap ( ) ) ,
315
304
age : b. read_i32 :: < BigEndian > ( ) . unwrap ( ) ,
316
305
}
@@ -358,10 +347,9 @@ pub trait Message {
358
347
self . send_message ( cqcode:: music_custom ( url, audio, title, content, image) . as_str ( ) )
359
348
}
360
349
361
- fn send_share ( & self , url : & str , title : & str , content : & str , image : & str ) {
350
+ fn send_share ( & self , url : & str , title : & str , content : & str , image : & str ) {
362
351
self . send_message ( cqcode:: share ( url, title, content, image) . as_str ( ) )
363
352
}
364
-
365
353
}
366
354
367
355
pub mod cqcode {
@@ -381,7 +369,7 @@ pub mod cqcode {
381
369
//发送base64编码的图片。"JXU2MThCJXU4QkY0JXU4QkREJXVGRjBDJXU1NDNCJXU2MjEx"
382
370
Base64 ( String ) ,
383
371
//发送二进制图片。"很明显,这个没办法演示给你看"
384
- Binary ( Vec < u8 > )
372
+ Binary ( Vec < u8 > ) ,
385
373
}
386
374
387
375
impl Image {
@@ -392,28 +380,28 @@ pub mod cqcode {
392
380
Image :: Default ( s) => s. clone ( ) ,
393
381
Image :: File ( s) => {
394
382
let filename = Path :: new ( s) . file_name ( ) . unwrap ( ) ;
395
- fs:: copy ( s, data_dir. join ( Path :: new ( filename) ) ) ;
383
+ fs:: copy ( s, data_dir. join ( Path :: new ( filename) ) ) . unwrap ( ) ;
396
384
filename. to_str ( ) . unwrap ( ) . to_string ( )
397
- } ,
385
+ }
398
386
Image :: Binary ( b) => {
399
387
let filename = format ! ( "{}.jpg" , uuid:: Uuid :: new_v4( ) ) ;
400
388
let mut f = fs:: File :: create ( Path :: new ( data_dir) . join ( & filename) ) . unwrap ( ) ;
401
- f. write_all ( b) ;
402
- f. flush ( ) ;
389
+ f. write_all ( b) . unwrap ( ) ;
390
+ f. flush ( ) . unwrap ( ) ;
403
391
filename
404
- } ,
392
+ }
405
393
Image :: Base64 ( s) => {
406
394
let filename = format ! ( "{}.jpg" , uuid:: Uuid :: new_v4( ) ) ;
407
395
let mut f = fs:: File :: create ( Path :: new ( data_dir) . join ( & filename) ) . unwrap ( ) ;
408
- f. write_all ( base64:: decode ( s. as_bytes ( ) ) . unwrap ( ) . as_slice ( ) ) ;
409
- f. flush ( ) ;
396
+ f. write_all ( base64:: decode ( s. as_bytes ( ) ) . unwrap ( ) . as_slice ( ) ) . unwrap ( ) ;
397
+ f. flush ( ) . unwrap ( ) ;
410
398
filename
411
- } ,
399
+ }
412
400
Image :: Http ( s) => {
413
401
let filename = format ! ( "{}.jpg" , uuid:: Uuid :: new_v4( ) ) ;
414
402
let mut f = fs:: File :: create ( Path :: new ( data_dir) . join ( & filename) ) . unwrap ( ) ;
415
- f. write_all ( reqwest:: get ( s. as_str ( ) ) . unwrap ( ) . text ( ) . unwrap ( ) . as_bytes ( ) ) ;
416
- f. flush ( ) ;
403
+ f. write_all ( reqwest:: get ( s. as_str ( ) ) . unwrap ( ) . text ( ) . unwrap ( ) . as_bytes ( ) ) . unwrap ( ) ;
404
+ f. flush ( ) . unwrap ( ) ;
417
405
filename
418
406
}
419
407
}
@@ -491,8 +479,7 @@ pub mod cqcode {
491
479
format ! ( "[CQ:music,type=custom,url={url},audio={audio},title={title},content={content},image={image}]" , url = url, audio = audio, title = title, content = content, image = image)
492
480
}
493
481
494
- pub fn share ( url : & str , title : & str , content : & str , image : & str ) -> String {
495
- format ! ( "[CQ:share,url={url},title={title},content={content},image={image}]" , url= url, title = title, content = content, image = image)
482
+ pub fn share ( url : & str , title : & str , content : & str , image : & str ) -> String {
483
+ format ! ( "[CQ:share,url={url},title={title},content={content},image={image}]" , url = url, title = title, content = content, image = image)
496
484
}
497
-
498
485
}
0 commit comments