package Ġcom . ice c ream qa q . yu q . entity Ċ Ċ import Ġcom . ice c ream qa q . yu q . Yu Q Ċ import Ġcom . ice c ream qa q . yu q . annotation . Dev Ċ import Ġcom . ice c ream qa q . yu q . controller . Context Session Ċ import Ġcom . ice c ream qa q . yu q . message .* Ċ import Ġcom . ice c ream qa q . yu q . message . Message . Companion . to Message Ċ import Ġcom . ice c ream qa q . yu q . m if Ċ import Ġcom . ice c ream qa q . yu q . rain Bot Ċ import Ġcom . ice c ream qa q . yu q . util . Web Helper . Companion . post With QQ Key Ċ import Ġcom . ice c ream qa q . yu q . yu q Ċ import Ġjava . io . File Ċ Ċ interface ĠContact Ġ: ĠUser Ġ{ ĊĊĠĠĠ Ġval Ġy uq : ĠY u Q ĊĊĠĠĠ Ġfun ĠsendMessage ( message : ĠMessage ): ĠMessage Source ĊĠĠĠ Ġfun ĠsendMessage ( message : ĠMessage Line Q ): ĠMessage Source Ġ= ĠsendMessage ( message . message ) ĊĠĠĠ Ġfun ĠsendMessage ( message : ĠString ): ĠMessage Source Ġ= ĠsendMessage ( message . to Message ()) ĊĠĠĠ Ġfun ĠsendMessage ( message Item : ĠMessage Item ): ĠMessage Source Ġ= ĠsendMessage ( message Item . to Message ()) ĊĊĠĠĠ Ġ// ĠĠĠ Ġfun Ġconvert Message ( message : ĠMessage ): ĠMessage ĊĠĠĠ Ġ/** * ĊĠĠĠĠ Ġ* Ġ ä¸Ĭä¼ł ä¸Ģ å¼ł åĽ¾çīĩ ï¼Į è¿ĶåĽŀ ĠImage ( Message Item ) Ġå¯¹è±¡ ãĢĤ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġupload Image ( image File : ĠFile ): ĠImage ĊĊĠĠĠ Ġ/** * ĊĠĠĠĠ Ġ* Ġ åıĳéĢģ æĸĩä»¶ ï¼Į å½ĵ ĠContact Ġä¸º ĠGroup ĠæĹ¶ ï¼Į è¡¨ çİ° ä¸º ä¸Ĭä¼ł æĸĩä»¶ ãĢĤ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġsend File ( file : ĠFile ) ĊĊĠĠĠ Ġfun Ġto Log String (): ĠString ĊĠĠĠ Ġoverride Ġfun Ġcan SendMessage () Ġ= Ġtrue Ċ } Ċ Ċ @ Dev Ċ interface ĠContact User Ġ{ Ċ Ċ } Ċ Ċ // interface ĠBlock Friend { Ċ // ĠĠĠ Ġ@ Jvm Name ("") Ċ // ĠĠĠ Ġfun Ġdelete () Ċ //} Ċ // interface ĠS uspend Friend { Ċ // ĠĠĠ Ġsuspend Ġfun Ġdelete () Ċ //} Ċ // interface ĠX Friend Ġ: Block Friend , Suspend Friend ĊĊ Ċ interface ĠUser Ġ{ ĊĠĠĠ Ġval Ġid : ĠLong ĊĠĠĠ Ġval Ġavatar : ĠString ĊĠĠĠ Ġval Ġname : ĠString ĊĊĠĠĠ Ġfun Ġis Friend (): ĠBoolean ĊĠĠĠ Ġfun Ġcan SendMessage (): ĠBoolean Ċ } Ċ Ċ interface ĠFriend Ġ: ĠContact Ġ{ Ċ Ċ // ĠĠĠ Ġoverride Ġfun Ġconvert Message ( message : ĠMessage ): ĠMessage Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġmessage . temp Ġ= Ġfalse Ċ // ĠĠĠĠĠĠĠ Ġmessage . qq Ġ= Ġid Ċ // ĠĠĠĠĠĠĠ Ġreturn Ġmessage Ċ // ĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġis Friend () Ġ= Ġtrue ĊĠĠĠ Ġoverride Ġfun Ġcan SendMessage () Ġ= Ġtrue ĊĊĠĠĠ Ġoverride Ġfun Ġto Log String () Ġ= Ġ"$ name ($ id )" ĊĊĠĠĠ Ġfun Ġdelete () ĊĠĠĠ Ġfun Ġclick () Ċ } Ċ Ċ interface ĠGroup Ġ: ĠContact Ġ{ ĊĊĠĠĠ Ġval Ġsession : ĠContext Session ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġrain Bot . getContext Session (" g $ id ") ĊĊĠĠĠ Ġval Ġmembers : ĠMap < Long , ĠMember > ĊĠĠĠ Ġval Ġbot : ĠMember ĊĠĠĠ Ġval Ġmax Count : ĠInt ĊĊĠĠĠ Ġval Ġowner : ĠMember ĊĠĠĠ Ġval Ġadmins : ĠList < Member > ĊĊĠĠĠ Ġval Ġnotices : ĠGroup Notice List ĊĊĠĠĠ Ġoverride Ġfun Ġcan SendMessage () Ġ= Ġ! bot . is Ban () ĊĊĠĠĠ Ġoperator Ġfun Ġget ( qq : ĠLong ) Ġ= Ġget OrNull ( qq ) Ġ?: Ġerror (" Member Ġ$ qq ĠNot ĠFound !") ĊĊĠĠĠ Ġfun Ġget OrNull ( qq : ĠLong ): ĠMember ? Ġ= Ġmembers [ qq ] Ġ?: Ġif Ġ( qq Ġ== Ġbot . id ) Ġbot Ġelse Ġnull ĊĊ Ċ // ĠĠĠ Ġoverride Ġfun Ġconvert Message ( message : ĠMessage ): ĠMessage Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġmessage . temp Ġ= Ġfalse Ċ // ĠĠĠĠĠĠĠ Ġmessage . group Ġ= Ġid Ċ // ĠĠĠĠĠĠĠ Ġreturn Ġmessage Ċ // ĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** * ĊĠĠĠĠ Ġ* Ġ ç¦» å¼Ģ æľ¬ ç¾¤ ï¼Į å½ĵ æľºåĻ¨ äºº æĺ¯ ç¾¤ ä¸» çļĦæĹ¶åĢĻ è§£æŀĲ ä¸º è§£ æķ£ ãĢĤ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġleave () ĊĠĠĠ Ġfun Ġban All () ĊĠĠĠ Ġfun Ġun Ban All () Ċ // ĠĠĠ Ġfun ĠgetMax Member Count (): ĠInt ĊĊĠĠĠ Ġoverride Ġfun Ġto Log String () Ġ= Ġ"$ name ($ id )" Ċ Ċ } Ċ Ċ interface ĠMember Ġ: ĠContact , ĠUser Ġ{ ĊĊĠĠĠ Ġval Ġgroup : ĠGroup ĊĠĠĠ Ġval Ġpermission : ĠInt ĊĊĠĠĠ Ġvar Ġname Card : ĠString ĊĠĠĠ Ġvar Ġtitle : ĠString ĊĊĠĠĠ Ġval Ġban : ĠInt ĊĠĠĠ Ġval Ġlast Message Time : ĠLong ĊĊĠĠĠ Ġfun Ġis Ban () Ġ= Ġban Ġ> Ġ( System . currentTimeMillis () Ġ/ Ġ 1 0 0 0 ). toInt () ĊĠĠĠ Ġfun Ġban ( time : ĠInt ) ĊĠĠĠ Ġfun Ġun Ban () ĊĠĠĠ Ġfun Ġname Card Or Name () Ġ= Ġif Ġ( name Card Ġ== Ġ"") Ġname Ġelse Ġname Card ĊĊĠĠĠ Ġfun Ġclick () ĊĠĠĠ Ġfun Ġclick With Temp () Ċ Ċ // ĠĠĠ Ġfun Ġlast Message Time () Ġ= Ġ- 1 L ĊĊĠĠĠ Ġoverride Ġfun Ġis Friend () Ġ= Ġtrue ĊĠĠĠ Ġoverride Ġfun Ġcan SendMessage () Ġ= Ġtrue ĊĊĠĠĠ Ġoverride Ġfun Ġto Log String () Ġ= Ġ"${ name Card Or Name ()} ($ id )[ ${ group . name } (${ group . id }) ]" ĊĠĠĠ Ġfun Ġto Log String Single () Ġ= Ġ"${ name Card Or Name ()} ($ id )" ĊĊĠĠĠ Ġfun Ġat (): ĠAt Ġ= Ġm if . at ( this ) ĊĊĠĠĠ Ġfun Ġis Admin () Ġ= Ġpermission Ġ> Ġ 0 ĊĠĠĠ Ġfun Ġis Owner () Ġ= Ġpermission Ġ== Ġ 2 ĊĊĠĠĠ Ġfun Ġkick () Ġ= Ġkick ("") ĊĠĠĠ Ġfun Ġkick ( message : ĠString Ġ= Ġ"") ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun ĠMember . to Friend (): ĠFriend ? Ġ= Ġy uq . friends [ id ] ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ interface ĠAn onymous Member Ġ: ĠMember Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġcan SendMessage () Ġ= Ġfalse ĊĠĠĠ Ġoverride Ġfun Ġis Friend () Ġ= Ġfalse Ċ Ċ } Ċ Ċ enum Ġclass ĠUser Sex Ġ{ ĊĠĠĠ Ġman , Ġwoman , Ġnone Ċ } Ċ Ċ data Ġclass ĠUserInfo ( ĊĠĠĠ Ġoverride Ġval Ġid : ĠLong , ĊĠĠĠ Ġoverride Ġval Ġavatar : ĠString , ĊĠĠĠ Ġoverride Ġval Ġname : ĠString , ĊĠĠĠ Ġval Ġsex : ĠUser Sex , ĊĠĠĠ Ġval Ġage : ĠInt , ĊĠĠĠ Ġval Ġqq Age : ĠInt , ĊĠĠĠ Ġval Ġlevel : ĠInt , ĊĠĠĠ Ġval Ġlogin Days : ĠInt , ĊĊĠĠĠ Ġval Ġv ips : ĠList < User V ip > Ċ ) Ġ: ĠUser Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġis Friend () Ġ= Ġy uq . friends . containsKey ( id ) ĊĊĠĠĠ Ġoverride Ġfun Ġcan SendMessage () Ġ= Ġfalse Ċ } Ċ Ċ data Ġclass ĠGroup Info ( ĊĠĠĠ Ġval Ġid : ĠLong , ĊĠĠĠ Ġval Ġname : ĠString , ĊĠĠĠ Ġval Ġmax Count : ĠInt , ĊĊĠĠĠ Ġval Ġowner : ĠUser , ĊĠĠĠ Ġval Ġadmin : ĠList < User > Ċ ) Ċ Ċ open Ġclass ĠGroup Notice Ġ{ ĊĊĠĠĠ Ġprotected Ġvar Ġid : ĠLong ? Ġ= Ġnull ĊĠĠĠ Ġfun ĠgetId () Ġ= Ġid Ġ?: Ġ- 1 ĊĊĠĠĠ Ġvar Ġtext : ĠString Ġ= Ġ"" ĊĊĠĠĠ Ġvar Ġis Top Ġ= Ġfalse ĊĠĠĠ Ġvar Ġpop Window Ġ= Ġfalse ĊĠĠĠ Ġvar Ġconfirm Required Ġ= Ġfalse Ċ Ċ } Ċ Ċ open Ġclass ĠGroup Notice List ( protected Ġval Ġgroup : ĠGroup ) Ġ{ ĊĊĠĠĠ Ġinternal Ġval Ġnotice List Ġ= Ġarray ListOf < Group Notice >() ĊĊĠĠĠ Ġoperator Ġfun Ġget ( id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠTODO (" Feature Ġnot Ġsupported ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd ( notice : ĠGroup Notice ) Ġ{ ĊĠĠĠĠĠĠĠ Ġnotice . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġy uq . web . post With QQ Key ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" https :// web . q un . qq . com / cgi - bin / announce / add _ q un _ notice ", Ġmutable Map Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" qid " Ġto Ġgroup . id . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" b kn " Ġto Ġ"{ gtk }", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" text " Ġto Ġtext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" pinned " Ġto Ġif Ġ( is Top ) Ġ" 1 " Ġelse Ġ" 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" type " Ġto Ġ" 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" settings " Ġto Ġ"{\" is _ show _ edit _ card \": 0 ," Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\" tip _ window _ type \": ${ if Ġ( pop Window ) Ġ" 1 " Ġelse Ġ" 0 "}," Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\" confirm _ required \": ${ if Ġ( confirm Required ) Ġ" 1 " Ġelse Ġ" 0 " }}" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ // interface ĠUserInfo Ġ: ĠUser Ġ{ Ċ // Ċ // ĠĠĠ Ġval Ġsex : ĠString Ċ // ĠĠĠ Ġval Ġage : ĠInt Ċ // ĠĠĠ Ġval Ġq Age : ĠInt Ċ // Ċ // ĠĠĠ Ġval Ġlevel : ĠInt Ċ // Ċ // ĠĠĠ Ġval Ġlogin Days : ĠInt Ċ // Ċ // Ċ //} Ċ Ċ data Ġclass ĠUser V ip ( ĊĠĠĠ Ġval Ġid : ĠInt , ĊĠĠĠ Ġval Ġname : ĠInt , ĊĠĠĠ Ġval Ġip Super : ĠInt , ĊĠĠĠ Ġval Ġdesc : ĠString , ĊĠĠĠ Ġval Ġlevel : ĠInt , ĊĠĠĠ Ġval Ġyear Flag : ĠBoolean , ĊĠĠĠ Ġval Ġpara : ĠString Ċ )