package Ġcom . dong tr onic . di abot . data . mongodb Ċ Ċ import Ġcom . dong tr onic . di abot . util .* Ċ import Ġcom . mongodb . client . model . Filters . and Ċ import Ġcom . mongodb . client . model . Find One AndUpdate Options Ċ import Ġcom . mongodb . client . model . Index Options Ċ import Ġcom . mongodb . client . model . Return Document Ċ import Ġcom . mongodb . client . model . Updates Ċ import Ġcom . mongodb . client . result . Delete Result Ċ import Ġcom . mongodb . client . result . Update Result Ċ import Ġcom . mongodb . reactiv est ream s . client . Mongo Collection Ċ import Ġkotlinx . coroutines . reactor . await Single OrNull Ċ import Ġnet . dv 8 tion . j da . api . entities . Text Channel Ċ import Ġorg . bson . conversions . B son Ċ import Ġorg . lit ote . km ongo . desc ending Ċ import Ġorg . lit ote . km ongo . eq Ċ import Ġorg . lit ote . km ongo . reactiv est ream s . update One Ċ import Ġreactor . core . publisher . Flux Ċ import Ġreactor . core . publisher . Mono Ċ import Ġreactor . core . scheduler . Schedulers Ċ import Ġreactor . kotlin . core . publisher . to Mono Ċ Ċ class ĠQuote DAO Ġprivate Ġconstructor () Ġ{ ĊĠĠĠ Ġval Ġcollection : ĠMongo Collection < Quote DTO > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ= ĠMongoDB . getInstance (). database . get Collection ( Di abot Collection . QUOT ES . get Env (), ĠQuote DTO :: class . java ) ĊĠĠĠ Ġval Ġquote Indexes : ĠMongo Collection < Quote Index DTO > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ= ĠMongoDB . getInstance (). database . get Collection ( Di abot Collection . QUOTE _ INDEX . get Env (), ĠQuote Index DTO :: class . java ) ĊĊĠĠĠ Ġprivate Ġval Ġscheduler Ġ= ĠS chedulers . bounded Elastic () ĊĠĠĠ Ġprivate Ġval Ġlogger Ġ= Ġlogger () ĊĠĠĠ Ġval Ġenabled Guild s Ġ= ĠSystem . getenv (). get OrDefault (" QUOTE _ ENABLE _ GU IL DS ", Ġ""). split (",") ĊĠĠĠ Ġval Ġmax Quotes Ġ= ĠSystem . getenv (). get OrDefault (" QUOTE _ MAX ", Ġ" 5 0 0 0 "). toInt OrNull () Ġ?: Ġ 5 0 0 0 ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠCreate Ġa Ġunique Ġindex ĊĠĠĠĠĠĠĠ Ġval Ġoptions Ġ= ĠIndex Options (). unique ( true ). name ( Quote DTO :: guild Id . name ) ĊĠĠĠĠĠĠĠ Ġquote Indexes . create Index ( desc ending ( Quote DTO :: guild Id ), Ġoptions ). to Mono () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( scheduler ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGets Ġa Ġ[ Quote DTO ] Ġfrom Ġa Ġquote ĠID ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġguild Id Ġguild ĠID ĊĠĠĠĠ Ġ* Ġ@ param Ġquote Id Ġquote ĠID ĊĠĠĠĠ Ġ* Ġ@ return Ġ[ Quote DTO ] Ġinstance Ġmatching Ġthe Ġquote ĠID ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Quote ( guild Id : ĠString , Ġquote Id : ĠString ): ĠMono < Quote DTO > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcollection . findOne ( filter ( guild Id , Ġquote Id )). subscribe On ( scheduler ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġall Ġquotes Ġdefined Ġunder Ġa Ġguild Ġmatching Ġthe Ġgiven Ġfilter , Ġif Ġany ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġguild Id Ġguild ĠID ĊĠĠĠĠ Ġ* Ġ@ param Ġfilter Ġthe Ġmongo Ġfilter Ġto Ġmatch Ġagainst , Ġif Ġany ĊĠĠĠĠ Ġ* Ġ@ return Ġall Ġquotes Ġmatching Ġthe Ġfilter Ġfor Ġthe Ġspecified Ġguild ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Quotes ( guild Id : ĠString , Ġfilter : ĠB son ? Ġ= Ġnull ): ĠFlux < Quote DTO > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġjoined Filter Ġ= Ġif Ġ( filter Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġand ( filter ( guild Id ), Ġfilter ) ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfilter ( guild Id ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġcollection . find Many ( joined Filter ). subscribe On ( scheduler ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġa Ġrandom Ġquote Ġdefined Ġunder Ġa Ġguild Ġmatching Ġthe Ġgiven Ġfilter , Ġif Ġany ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġguild Id Ġguild ĠID ĊĠĠĠĠ Ġ* Ġ@ param Ġfilter Ġthe Ġmongo Ġfilter Ġto Ġmatch Ġagainst , Ġif Ġany ĊĠĠĠĠ Ġ* Ġ@ return Ġa Ġrandom Ġquote Ġmatching Ġthe Ġfilter Ġfor Ġthe Ġspecified Ġguild ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠgetRandom Quote ( guild Id : ĠString , Ġfilter : ĠB son ? Ġ= Ġnull ): ĠMono < Quote DTO > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġjoined Filter Ġ= Ġif Ġ( filter Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġand ( filter ( guild Id ), Ġfilter ) ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfilter ( guild Id ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġcollection . findOne Random ( joined Filter ). subscribe On ( scheduler ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠInser ts Ġa Ġquote Ġinto Ġthe Ġdatabase . ĊĠĠĠĠ Ġ* ĠIf Ġthe Ġprovided Ġquote 's ĠID Ġis Ġnull , Ġthis Ġwill Ġcreate Ġa Ġcopy Ġof Ġit Ġwith Ġa Ġvalid Ġquote ĠID ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġquote Ġthe Ġquote Ġto Ġinsert ĊĠĠĠĠ Ġ* Ġ@ param Ġincrement Id Ġwhether Ġto Ġincrement Ġthe Ġguild - wide Ġquote ĠID Ġindex . ĊĠĠĠĠ Ġ* ĠThis Ġwill Ġonly Ġhave Ġan Ġeffect Ġif Ġthe Ġquote Ġalready Ġhas Ġa Ġvalid Ġquote ĠID ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġcreated Ġ[ Quote DTO ] Ġinstance Ġif Ġsuccessful ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġadd Quote ( quote : ĠQuote DTO , Ġincrement Id : ĠBoolean Ġ= Ġtrue ): ĠMono < Quote DTO > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġquote With Id Ġ= Ġif Ġ( increment Id Ġ|| Ġquote . quote Id Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġincrement Id ( quote . guild Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. onError Map Ġ{ ĠIllegalStateException (" Could Ġnot Ġfind Ġguild 's Ġquote Ġindex ") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( quote . quote Id Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquote . copy ( quote Id Ġ= Ġit . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquote ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquote . to Mono () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġquote With Id . flatMap Ġ{ Ġquote DTO Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcollection . insert One ( quote DTO ). to Mono (). map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! it . was Ack nowled ged ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" Could Ġnot Ġinsert Ġquote ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquote DTO ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. subscribe On ( scheduler ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUpdates Ġthe Ġdata Ġof Ġa Ġ[ Quote DTO ] Ġinstance Ġin Ġthe Ġdatabase ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġquote DTO Ġquote ĠD TO ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġresult Ġof Ġthe Ġupdate Ġcommand ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġupdate Quote ( quote DTO : ĠQuote DTO ): ĠMono < Update Result > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcollection . update One ( filter ( quote DTO . guild Id , Ġquote DTO . quote Id ), Ġquote DTO ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. to Mono (). subscribe On ( scheduler ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDeletes Ġa Ġquote Ġfrom Ġthe Ġdatabase ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġguild Id Ġguild ĠID ĊĠĠĠĠ Ġ* Ġ@ param Ġquote Id Ġquote ĠID ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġresult Ġof Ġthe Ġdelete Ġcommand ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġdelete Quote ( guild Id : ĠString , Ġquote Id : ĠString ): ĠMono < Delete Result > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcollection . delete One ( filter ( guild Id , Ġquote Id )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. to Mono (). subscribe On ( scheduler ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGets Ġthe Ġamount Ġof Ġquotes Ġin Ġthis Ġguild ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġguild Id Ġguild ĠID ĊĠĠĠĠ Ġ* Ġ@ return Ġnumber Ġof Ġquotes Ġfor Ġthe Ġspecified Ġguild ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġquote Amount ( guild Id : ĠString ): ĠMono < Long > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcollection . count Documents ( filter ( guild Id )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. to Mono (). subscribe On ( scheduler ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠIn crements Ġthe Ġguild - wide Ġquote ĠID Ġindex Ġby Ġone Ġand Ġreturns Ġthe Ġindex Ġafter Ġincrement ing ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġguild Id Ġguild ĠID ĊĠĠĠĠ Ġ* Ġ@ return Ġthe ĠID Ġindex Ġof Ġthe Ġspecified Ġguild Ġafter Ġincrement ing ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġincrement Id ( guild Id : ĠString ): ĠMono < Long > Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġinsert Ġif Ġnot Ġexisting Ġand Ġreturn Ġthe Ġdocument Ġafter Ġincrement ing ĊĠĠĠĠĠĠĠ Ġval Ġoptions Ġ= ĠFind One AndUpdate Options () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. upsert ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. return Document ( Return Document . AFTER ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġquote Indexes . findOne AndUpdate ( Quote Index DTO :: guild Id Ġeq Ġguild Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUpdates . inc (" quote Index ", Ġ 1 L ), Ġoptions ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. to Mono () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( scheduler ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . quote Index Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġinstance : ĠQuote DAO ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġfun ĠgetInstance (): ĠQuote DAO Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( instance Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinstance Ġ= ĠQuote DAO () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġinstance Ġas ĠQuote DAO ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠChecks Ġthe Ġrestrictions Ġfor Ġthe Ġguild Ġwhich Ġthe Ġchannel Ġbelongs Ġto . ĊĠĠĠĠĠĠĠĠ Ġ* ĠThis Ġiniti ates Ġa Ġblocking Ġcall Ġto Ġquote Amount (). ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġchannel Ġthe Ġchannel Ġto Ġsend Ġmessages Ġto ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġwarn Disabled Guild Ġwhether Ġto Ġsend Ġa Ġwarning Ġmessage Ġwhen Ġthe Ġguild Ġis Ġnot Ġenabled Ġfor Ġquotes ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġcheck Quote Limit Ġwhether Ġto Ġcheck Ġif Ġthe Ġguild Ġhas Ġreached Ġthe Ġmax Ġquote Ġlimit ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġtrue Ġif Ġthe Ġguild Ġpassed Ġrestrictions , Ġfalse Ġif Ġnot ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġcheck Restrictions ( channel : ĠText Channel , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwarn Disabled Guild : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Quote Limit : ĠBoolean Ġ= Ġtrue ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! getInstance (). enabled Guild s . contains ( channel . guild . id )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( warn Disabled Guild ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchannel . sendMessage (" This Ġguild Ġis Ġnot Ġpermitted Ġto Ġuse Ġthe Ġqu oting Ġsystem "). queue () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠnumOf Quotes Ġ= ĠgetInstance (). quote Amount ( channel . guild . id ). block () Ġ?: Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( check Quote Limit Ġ&& ĠnumOf Quotes Ġ>= ĠgetInstance (). max Quotes ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchannel . sendMessage (" Could Ġnot Ġcreate Ġquote Ġas Ġyour Ġguild Ġhas Ġreached Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" the Ġmax Ġof Ġ${ getInstance (). max Quotes } Ġquotes "). queue () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠChecks Ġthe Ġrestrictions Ġfor Ġthe Ġguild Ġwhich Ġthe Ġchannel Ġbelongs Ġto . ĊĠĠĠĠĠĠĠĠ Ġ* ĠThis Ġawait s Ġthe Ġguild Ġquote Ġamount Ġfrom Ġ[ quote Amount ]. ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġchannel Ġthe Ġchannel Ġto Ġsend Ġmessages Ġto ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġwarn Disabled Guild Ġwhether Ġto Ġsend Ġa Ġwarning Ġmessage Ġwhen Ġthe Ġguild Ġis Ġnot Ġenabled Ġfor Ġquotes ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġcheck Quote Limit Ġwhether Ġto Ġcheck Ġif Ġthe Ġguild Ġhas Ġreached Ġthe Ġmax Ġquote Ġlimit ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġtrue Ġif Ġthe Ġguild Ġpassed Ġrestrictions , Ġfalse Ġif Ġnot ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġsuspend Ġfun Ġawait Check Restrictions ( channel : ĠText Channel , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwarn Disabled Guild : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Quote Limit : ĠBoolean Ġ= Ġtrue ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! getInstance (). enabled Guild s . contains ( channel . guild . id )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( warn Disabled Guild ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchannel . sendMessage (" This Ġguild Ġis Ġnot Ġpermitted Ġto Ġuse Ġthe Ġqu oting Ġsystem "). queue () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠnumOf Quotes Ġ= ĠgetInstance (). quote Amount ( channel . guild . id ). await Single OrNull () Ġ?: Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( check Quote Limit Ġ&& ĠnumOf Quotes Ġ>= ĠgetInstance (). max Quotes ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchannel . sendMessage (" Could Ġnot Ġcreate Ġquote Ġas Ġyour Ġguild Ġhas Ġreached Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" the Ġmax Ġof Ġ${ getInstance (). max Quotes } Ġquotes "). queue () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠCreates Ġa ĠMongo Ġquery Ġfilter Ġfor Ġthe Ġspecified Ġguild ĠID Ġand Ġ( option ally ) Ġquote ĠID . ĊĠĠĠĠĠĠĠĠ Ġ* ĠIf Ġquote ĠID Ġis Ġnull Ġthen Ġthis Ġquery Ġwill Ġonly Ġsearch Ġfor Ġquotes Ġunder Ġa Ġguild . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġguild Id Ġguild ĠID ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġquote Id Ġquote ĠID , Ġoptional ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠMongoDB Ġquery Ġfilter Ġfor Ġthe Ġprovided Ġguild ĠID Ġand Ġquote ĠID , Ġif Ġany ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġfilter ( guild Id : ĠString , Ġquote Id : ĠString ? Ġ= Ġnull ): ĠB son Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġguild Filter Ġ= ĠQuote DTO :: guild Id . eq ( guild Id ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( quote Id Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġand ( guild Filter , ĠQuote DTO :: quote Id . eq ( quote Id )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġguild Filter ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }