summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSho Sakuma <me@m1sk9.dev>2026-01-27 18:52:51 +0900
committerSho Sakuma <me@m1sk9.dev>2026-01-27 18:52:51 +0900
commit35a87dc3fcd0d33712a81e7a91affea592141c8a (patch)
treeba7a3d919141ddd391d45c04008cacfe811454a1
parent817eb7bc479fa55bda106aa1f6c5bd8dc9fbbe4c (diff)
downloadLunaticChat-35a87dc3fcd0d33712a81e7a91affea592141c8a.tar.gz
LunaticChat-35a87dc3fcd0d33712a81e7a91affea592141c8a.tar.bz2
LunaticChat-35a87dc3fcd0d33712a81e7a91affea592141c8a.zip
refactor: Rename exception
-rw-r--r--engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/chat/channel/Channel.kt5
-rw-r--r--engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/ChannelCannotInviteSelfException.kt7
-rw-r--r--engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/ChannelPlayerAlreadyBannedException.kt8
-rw-r--r--engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/ChannelPlayerBannedException.kt8
-rw-r--r--engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/ChannelPlayerBypassBanException.kt8
-rw-r--r--engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/ChannelPlayerBypassKickException.kt8
-rw-r--r--engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/ChannelPlayerMembershipLimitExceededException.kt (renamed from engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/PlayerChannelLimitExceededException.kt)2
-rw-r--r--engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/ChannelPlayerNotBannedException.kt8
-rw-r--r--engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/ChannelPrivateRequiresInvitationException.kt8
-rw-r--r--engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/permission/LunaticChatPermissionNode.kt14
10 files changed, 74 insertions, 2 deletions
diff --git a/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/chat/channel/Channel.kt b/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/chat/channel/Channel.kt
index cc1f743..568839a 100644
--- a/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/chat/channel/Channel.kt
+++ b/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/chat/channel/Channel.kt
@@ -13,6 +13,7 @@ import java.util.UUID
* @property isPrivate Indicates whether the channel is private or public.
* @property ownerId UUID of the user who owns the channel.
* @property createdAt Timestamp of when the channel was created.
+ * @property bannedPlayers Set of UUIDs of players who are banned from the channel.
*/
@Serializable
data class Channel(
@@ -23,6 +24,10 @@ data class Channel(
@Serializable(with = UUIDSerializer::class)
val ownerId: UUID,
val createdAt: Long = System.currentTimeMillis(),
+ val bannedPlayers: Set<
+ @Serializable(with = UUIDSerializer::class)
+ UUID,
+ > = emptySet(),
) {
init {
require(id.matches(CHANNEL_ID_PATTERN)) {
diff --git a/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/ChannelCannotInviteSelfException.kt b/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/ChannelCannotInviteSelfException.kt
new file mode 100644
index 0000000..5d1be73
--- /dev/null
+++ b/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/ChannelCannotInviteSelfException.kt
@@ -0,0 +1,7 @@
+package dev.m1sk9.lunaticChat.engine.exception
+
+import java.util.UUID
+
+class ChannelCannotInviteSelfException(
+ playerId: UUID,
+) : Exception("Player $playerId cannot invite themselves")
diff --git a/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/ChannelPlayerAlreadyBannedException.kt b/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/ChannelPlayerAlreadyBannedException.kt
new file mode 100644
index 0000000..ce905f0
--- /dev/null
+++ b/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/ChannelPlayerAlreadyBannedException.kt
@@ -0,0 +1,8 @@
+package dev.m1sk9.lunaticChat.engine.exception
+
+import java.util.UUID
+
+class ChannelPlayerAlreadyBannedException(
+ val playerId: UUID,
+ val channelId: String,
+) : Exception("Player $playerId is already banned from channel $channelId")
diff --git a/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/ChannelPlayerBannedException.kt b/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/ChannelPlayerBannedException.kt
new file mode 100644
index 0000000..9a70c72
--- /dev/null
+++ b/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/ChannelPlayerBannedException.kt
@@ -0,0 +1,8 @@
+package dev.m1sk9.lunaticChat.engine.exception
+
+import java.util.UUID
+
+class ChannelPlayerBannedException(
+ playerId: UUID,
+ val channelId: String,
+) : Exception("Player $playerId is banned from channel $channelId")
diff --git a/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/ChannelPlayerBypassBanException.kt b/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/ChannelPlayerBypassBanException.kt
new file mode 100644
index 0000000..529f590
--- /dev/null
+++ b/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/ChannelPlayerBypassBanException.kt
@@ -0,0 +1,8 @@
+package dev.m1sk9.lunaticChat.engine.exception
+
+import java.util.UUID
+
+class ChannelPlayerBypassBanException(
+ playerId: UUID,
+ val channelId: String,
+) : Exception("Cannot ban player $playerId: player has bypass permission")
diff --git a/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/ChannelPlayerBypassKickException.kt b/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/ChannelPlayerBypassKickException.kt
new file mode 100644
index 0000000..e818657
--- /dev/null
+++ b/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/ChannelPlayerBypassKickException.kt
@@ -0,0 +1,8 @@
+package dev.m1sk9.lunaticChat.engine.exception
+
+import java.util.UUID
+
+class ChannelPlayerBypassKickException(
+ playerId: UUID,
+ val channelId: String,
+) : Exception("Cannot kick player $playerId: player has bypass permission")
diff --git a/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/PlayerChannelLimitExceededException.kt b/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/ChannelPlayerMembershipLimitExceededException.kt
index 0820d8c..afad6bf 100644
--- a/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/PlayerChannelLimitExceededException.kt
+++ b/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/ChannelPlayerMembershipLimitExceededException.kt
@@ -2,7 +2,7 @@ package dev.m1sk9.lunaticChat.engine.exception
import java.util.UUID
-class PlayerChannelLimitExceededException(
+class ChannelPlayerMembershipLimitExceededException(
val playerId: UUID,
val limit: Int,
) : Exception(
diff --git a/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/ChannelPlayerNotBannedException.kt b/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/ChannelPlayerNotBannedException.kt
new file mode 100644
index 0000000..8dcc293
--- /dev/null
+++ b/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/ChannelPlayerNotBannedException.kt
@@ -0,0 +1,8 @@
+package dev.m1sk9.lunaticChat.engine.exception
+
+import java.util.UUID
+
+class ChannelPlayerNotBannedException(
+ playerId: UUID,
+ val channelId: String,
+) : Exception("Player $playerId is not banned from channel $channelId")
diff --git a/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/ChannelPrivateRequiresInvitationException.kt b/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/ChannelPrivateRequiresInvitationException.kt
new file mode 100644
index 0000000..737a529
--- /dev/null
+++ b/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/exception/ChannelPrivateRequiresInvitationException.kt
@@ -0,0 +1,8 @@
+package dev.m1sk9.lunaticChat.engine.exception
+
+import java.util.UUID
+
+class ChannelPrivateRequiresInvitationException(
+ val playerId: UUID,
+ val channelId: String,
+) : Exception("Player $playerId cannot join private channel $channelId without invitation")
diff --git a/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/permission/LunaticChatPermissionNode.kt b/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/permission/LunaticChatPermissionNode.kt
index c20d636..9b6c3c6 100644
--- a/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/permission/LunaticChatPermissionNode.kt
+++ b/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/permission/LunaticChatPermissionNode.kt
@@ -31,6 +31,18 @@ sealed class LunaticChatPermissionNode(
object ChannelDelete : LunaticChatPermissionNode("lunaticchat.command.lc.channel.delete")
+ object ChannelInvite : LunaticChatPermissionNode("lunaticchat.command.lc.channel.invite")
+
+ object ChannelKick : LunaticChatPermissionNode("lunaticchat.command.lc.channel.kick")
+
+ object ChannelBan : LunaticChatPermissionNode("lunaticchat.command.lc.channel.ban")
+
+ object ChannelUnban : LunaticChatPermissionNode("lunaticchat.command.lc.channel.unban")
+
+ object ChannelMod : LunaticChatPermissionNode("lunaticchat.command.lc.channel.mod")
+
+ object ChannelOwnership : LunaticChatPermissionNode("lunaticchat.command.lc.channel.ownership")
+
object ChatMode : LunaticChatPermissionNode("lunaticchat.command.lc.chatmode")
object ChatModeToggle : LunaticChatPermissionNode("lunaticchat.command.lc.chatmode.toggle")
@@ -39,5 +51,5 @@ sealed class LunaticChatPermissionNode(
object NoticeUpdate : LunaticChatPermissionNode("lunaticchat.noticeupdate")
- object ChannelBypass: LunaticChatPermissionNode("lunaticchat.channelbypass")
+ object ChannelBypass : LunaticChatPermissionNode("lunaticchat.channelbypass")
}