package moe.kageru.kagebot.extensions import arrow.core.ListK import arrow.core.Option import arrow.core.k import moe.kageru.kagebot.Util.asOption import moe.kageru.kagebot.config.Config import org.javacord.api.entity.channel.ChannelCategory import org.javacord.api.entity.channel.ServerTextChannel import org.javacord.api.entity.permission.Role import org.javacord.api.entity.server.Server import org.javacord.api.entity.user.User import org.javacord.api.event.message.MessageCreateEvent fun Server.channelById(id: String): Option = getTextChannelById(id).asOption() fun Server.channelsByName(name: String): ListK = getTextChannelsByName(name).k() fun Server.rolesByName(name: String): ListK = getRolesByNameIgnoreCase(name).k() fun Server.membersByName(name: String): ListK = getMembersByName(name).toList().k() fun Server.memberById(name: Long): Option = getMemberById(name).asOption() fun Server.categoriesByName(name: String): ListK = getChannelCategoriesByNameIgnoreCase(name).k() fun MessageCreateEvent.getUser(): Option = Config.server.memberById(messageAuthor.id) fun User.roles(): ListK = getRoles(Config.server).k()