package Ġcom . er is u . cloud . meg umi . pc r . basic . logic Ċ Ċ import Ġcom . er is u . cloud . meg umi . pc r . basic . mapper . P cr Avatar Mapper Ċ import Ġcom . er is u . cloud . meg umi . pc r . basic . pojo . P cr Pr in cess Ċ import Ġcom . er is u . cloud . meg umi . pc r . basic . util . Character Field Ċ import Ġcom . er is u . cloud . meg umi . util . File Util Ċ import Ġcom . er is u . cloud . meg umi . util . Stream Message Util Ċ import Ġnet . mam oe . mir ai . contact . Group Ċ import Ġnet . mam oe . mir ai . contact . User Ċ import Ġnet . mam oe . mir ai . message . data .* Ċ import Ġorg . springframework . stereotype . Component Ċ import Ġjavax . annotation . Resource Ċ Ċ /** Ċ Ġ*@ Description ĠNAME çĽ¸åħ³ Ċ Ġ*@ Author Ġalice Ċ Ġ*@ Date Ġ 2 0 2 1 / 6 / 2 4 Ġ 1 0 : 1 8 Ċ Ġ**/ Ċ @ Component Ċ class ĠName Logic Ġ{ ĊĊĠĠĠ Ġ@ Resource ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġavatar Mapper : ĠP cr Avatar Mapper ĊĊĠĠĠ Ġ@ Resource ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġp cr Init Data : ĠP cr Init Data ĊĊĠĠĠ Ġ@ Resource ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġg acha Logic : ĠG acha Logic ĊĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġsuspend Ġfun Ġget Avatar ( sender : ĠUser , Ġgroup : ĠGroup , Ġpr in cess Id : ĠString ): ĠMessage Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġavatar Image Ġ= Ġget Avatar Image ( group , Ġpr in cess Id ) ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( avatar Image Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Chain Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAt ( sender . id ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPlain Text ( pc r Init Data . id Map [ pr in cess Id ] ! ![ 0 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Chain Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAt ( sender . id ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġavatar Image , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPlain Text ( pc r Init Data . id Map [ pr in cess Id ] ! ![ 0 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġsuspend Ġfun Ġget Avatar Image ( group : ĠGroup , Ġpr in cess Id : ĠString ): ĠMessage ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġ(_, Ġ_, Ġ_, Ġavatar Url ) Ġ= Ġavatar Mapper . search Max Star Avatar ( pr in cess Id ) ĊĠĠĠĠĠĠĠ Ġval Ġimage Response Ġ= ĠFile Util . download Http Url ( avatar Url , Ġ" image ", Ġnull , Ġnull ) Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġif Ġ( image Response . code Ġ!= Ġ 2 0 0 ) Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġreturn ĠStream Message Util . generate Image ( group , Ġimage Response . path !!. to File (), Ġtrue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġfind Character ( sender : ĠUser , Ġraw Message : ĠString , Ġgroup : ĠGroup , Ġregex Str : ĠString ): ĠMessage Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġregex Ġ= ĠRegex ( regex Str ) ĊĠĠĠĠĠĠĠ Ġval Ġtype Ġ= Ġregex . find ( raw Message ) !!. group Values [ 1 ] ĊĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġregex . find ( raw Message ) !!. group Values [ 2 ] ĊĠĠĠĠĠĠĠ Ġval Ġcharacter Field Ġ= ĠCharacter Field . values (). first Ġ{ Ġit . key Ġ== Ġtype Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġproperties Ġ= ĠP cr Pr in cess :: class . java . declared Fields ĊĠĠĠĠĠĠĠ Ġval Ġresult List : ĠMutable List < Int > Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠ Ġp cr Init Data . pr in cess Map . forEach Ġ{ Ġ( t , Ġu ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġget Ġ= Ġproperties . first Ġ{ Ġit . name Ġ== Ġcharacter Field . field Ġ}. get ( u ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( get Ġ== Ġvalue ) Ġresult List . add ( t . toInt ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( result List . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠPlain Text (" æľª æī¾åĪ° ç¬¦åĲĪ çļĦäºº éĢī ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġsp lice Cache Image Ġ= Ġg acha Logic . splice Cache Image ( result List , Ġgroup ) ĊĠĠĠĠĠĠĠ Ġreturn Ġmessage Chain Of ( At ( sender . id ), ĠPlain Text (" æĤ¨ åı¯èĥ½ åľ¨ æī¾ :" ), Ġsp lice Cache Image ) ĊĠĠĠ Ġ} Ċ Ċ } Ċ