package Ġxyz . gn ar bot . gn ar . listeners Ċ Ċ import Ġcom . pat re on . resources . P ledge Ċ import Ġkotlinx . coroutines . experimental . launch Ċ import Ġnet . dv 8 tion . j da . core . entities . Private Channel Ċ import Ġnet . dv 8 tion . j da . core . events . message . priv . Private Message Received Event Ċ import Ġnet . dv 8 tion . j da . core . hooks . Listener Adapter Ċ import Ġxyz . gn ar bot . gn ar . Bot Ċ import Ġxyz . gn ar bot . gn ar . db . Pat re on Entry Ċ import Ġxyz . gn ar bot . gn ar . db . Prem ium Key Ċ import Ġxyz . gn ar bot . gn ar . utils . Utils Ċ import Ġxyz . gn ar bot . gn ar . utils . response . respond Ċ import Ġjava . awt . Color Ċ import Ġjava . io . IOException Ċ import Ġjava . time . Duration Ċ import Ġjava . time . Instant Ċ import Ġjava . time . Offset DateTime Ċ import Ġjava . time . Zone Id Ċ import Ġjava . time . format . DateTime Formatter Ċ import Ġjava . util .* Ċ Ċ class ĠPat re on Listener ( private Ġval Ġbot : ĠBot ) Ġ: ĠListener Adapter () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġon Private Message Received ( event : ĠPrivate Message Received Event ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( event . author . is Bot ) Ġreturn ĊĊĠĠĠĠĠĠĠ Ġval Ġparts Ġ= ĠUtils . string Split ( event . message . content Raw ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( parts . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( parts [ 0 ]) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"_ pat re on ", Ġ"_ pat ron " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Ġ= Ġevent . author ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġparts . copyOf Range ( 1 , Ġparts . size ). join ToString (" Ġ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . channel . respond (). info (" Looking Ġyou Ġup Ġfrom Ġthe ĠPat ron Ġlist ... "). queue Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlaunch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġp led ges Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget P led ges () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . delete (). queue () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . private Channel . respond (). exception ( e ). queue () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ launch ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġp ledge Ġ= Ġp led ges . find Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser . id Ġ== Ġit . pat ron . discord Id Ġ|| Ġname . equals ( it . pat ron . fullName , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . delete (). queue () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( p ledge Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprocess P ledge ( event . channel , Ġp ledge ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . channel . respond (). error (" ** Sorry ! ĠI Ġdon 't Ġrecognize Ġyou Ġas Ġa Ġpat ron .** \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" You Ġcan Ġsupport ĠG nar 's Ġdevelopment Ġon Ġour Ġ__ **[ Pat re on ]( https :// www . pat re on . com / gn ar bot )** __ .\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" If Ġyou Ġare Ġa Ġpat ron , Ġmake Ġsure Ġyou Ġeither Ġlink Ġyour ĠDiscord Ġaccount Ġor Ġenter Ġyour ĠPat re on Ġname , Ġie . Ġ`_ pat ron ĠBill ĠG ates ` "). queue () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . channel . respond (). error (" Error ĠCode : Ġ" Ġ+ Ġe . message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . message . private Channel . respond (). error (" Invalid Ġcommand . ĠIf Ġyou 're Ġa Ġpat ron , Ġuse Ġ`_ pat re on ` Ġor Ġ`_ pat ron .` "). queue () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġprocess P ledge ( channel : ĠPrivate Channel , Ġp ledge : ĠP ledge ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġentry Ġ= Ġbot . db (). get Pat re on Entry ( p ledge . pat ron . id ) ĊĠĠĠĠĠĠĠ Ġif Ġ( entry Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġclaimed Date Ġ= ĠOffset DateTime . of Instant ( Instant . of Epoch Milli ( entry . time Of Claim ), ĠZone Id . system Default ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsend Keys ( channel , Ġ" You Ġhave Ġalready Ġclaimed Ġyour Ġkeys Ġon Ġ`${ claimed Date . format ( DateTime Formatter . RFC _ 1 1 2 3 _ DATE _ TIME )} `. Ġ\ uD 8 3 D \ u DC 9 F ", Ġentry . keys ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkeys Ġ= ĠArray ( p ledge . reward . amount C ents Ġ/ Ġ 1 0 0 ) Ġ{ Ġcreate Key () Ġ}. toList () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsend Keys ( channel , Ġ" Here Ġare Ġyour Ġbrand Ġnew Ġprem ium Ġkeys . Ġ\ u 2 7 6 4 ", Ġkeys ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPat re on Entry ( p ledge . pat ron . id , ĠSystem . currentTimeMillis (), Ġkeys ). save () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsend Keys ( channel : ĠPrivate Channel , Ġmessage : ĠString , Ġkeys : ĠList < String >) Ġ{ ĊĠĠĠĠĠĠĠ Ġprint (" Sending ĠKey Ġfor Ġuser : Ġ" Ġ+ Ġchannel . user . name Ġ+ Ġ", ĠKEY : Ġ" Ġ+ Ġkeys . toString ()) ĊĠĠĠĠĠĠĠ Ġchannel . respond (). embed (" Prem ium ĠKeys ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdesc Ġ{ Ġ"$ message \ n Re deem Ġthem Ġin Ġyour Ġserver Ġusing Ġ`_ re deem Ġ( key )`. " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ{ ĠColor . OR ANGE Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield (" Keys ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuild String Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkeys . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend (" âĢ¢ Ġ` ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend (" `\ n ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. action (). queue () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Key (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġkey Ġ= ĠPremium Key ( UUID . randomUUID (). toString (), ĠPremium Key . Type . PRE MI UM , ĠDuration . of Days ( 3 6 5 ). to Millis (), Ġfalse ) ĊĠĠĠĠĠĠĠ Ġkey . save () ĊĠĠĠĠĠĠĠ Ġreturn Ġkey . id ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget P led ges (): ĠList < P ledge > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcampaign Ġ= Ġbot . pat re on . fetch Campaign s (). get (). first () ĊĊĠĠĠĠĠĠĠ Ġval Ġp led ges Ġ= Ġmutable ListOf < P ledge >() ĊĊĠĠĠĠĠĠĠ Ġvar Ġcursor : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġdo Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdocument Ġ= Ġbot . pat re on . fetch Page Of P led ges ( campaign . id , Ġ 1 0 0 , Ġcursor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġp led ges Ġ+= Ġdocument . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcursor Ġ= Ġbot . pat re on . getNext Cursor From Document ( document ) ĊĠĠĠĠĠĠĠ Ġ} Ġwhile Ġ( cursor Ġ!= Ġnull ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġp led ges ĊĠĠĠ Ġ} Ċ } Ċ