2019-11-11 23:52:14 +01:00
package moe.kageru.kagebot.extensions
import arrow.core.ListK
import arrow.core.Option
import arrow.core.k
import org.javacord.api.entity.channel.ServerTextChannel
import moe.kageru.kagebot.Util.asOption
import moe.kageru.kagebot.config.Config
import org.javacord.api.entity.channel.ChannelCategory
import org.javacord.api.entity.permission.Role
import org.javacord.api.entity.server.Server
import org.javacord.api.entity.user.User
2019-11-12 22:02:32 +01:00
import org.javacord.api.event.message.MessageCreateEvent
2019-11-11 23:52:14 +01:00
fun Server . channelById ( id : String ) : Option < ServerTextChannel > = getTextChannelById ( id ) . asOption ( )
2019-11-12 22:02:32 +01:00
fun Server . channelsByName ( name : String ) : ListK < ServerTextChannel > = getTextChannelsByName ( name ) . k ( )
2019-11-11 23:52:14 +01:00
fun Server . rolesByName ( name : String ) : ListK < Role > = getRolesByNameIgnoreCase ( name ) . k ( )
fun Server . membersByName ( name : String ) : ListK < User > = getMembersByName ( name ) . toList ( ) . k ( )
2019-11-12 21:13:01 +01:00
fun Server . memberById ( name : Long ) : Option < User > = getMemberById ( name ) . asOption ( )
2019-11-11 23:52:14 +01:00
fun Server . categoriesByName ( name : String ) : ListK < ChannelCategory > = getChannelCategoriesByNameIgnoreCase ( name ) . k ( )
2019-11-12 22:02:32 +01:00
fun MessageCreateEvent . getUser ( ) : Option < User > = Config . server . memberById ( messageAuthor . id )
2019-11-11 23:52:14 +01:00
fun User . roles ( ) : ListK < Role > = getRoles ( Config . server ) . k ( )