📋 表概述

channels 表管理玩家通过 /join 命令创建的自定义聊天频道。记录频道的名称、所属队伍/阵营、公告开关、所有权模式、密码和最后使用时间等配置信息。

主键为 channelId(自增)。name 为频道名称(唯一标识)。该表属于 Channel System 模块,配合 channels_bans 和 channels_rights 使用。

📊 表结构

字段名类型默认值说明
channelIdint UNSIGNEDAUTO_INCREMENT频道ID(主键,自增)
namevarchar(128)NOT NULL频道名称
teamint UNSIGNEDNOT NULL所属队伍/阵营(0=全体,1=联盟,2=部落)
announcetinyint UNSIGNED1加入/离开公告(0=关闭,1=开启)
ownershiptinyint UNSIGNED1所有权模式(0=公共,1=私人)
passwordvarchar(32)NULL频道密码(NULL=无密码)
lastUsedint UNSIGNEDNOT NULL最后使用时间(Unix时间戳)

🔍 重要字段详解

🏳️ team - 阵营限制

详细说明:INT UNSIGNED类型,限制频道的阵营访问范围。
  • 0 = 全阵营可用(跨阵营频道)
  • 1 = 仅联盟可用
  • 2 = 仅部落可用
  • 由创建频道的玩家阵营决定

🔒 ownership - 所有权模式

详细说明:控制频道的管理权限。
  • 0 = 公共频道(无所有者,任何人可加入)
  • 1 = 私人频道(有所有者,成员管理需要权限)
  • 私人频道可设置密码、封禁等管理操作

🔑 password - 频道密码

详细说明:VARCHAR(32),NULL表示无密码保护。
  • 设置密码后,玩家需输入正确密码才能加入频道
  • 使用 /join 频道名 密码 加入有密码的频道
  • 密码以明文形式存储在数据库中

💡 SQL示例

示例1:查看所有活跃频道

SELECT channelId, name, team, ownership, FROM_UNIXTIME(lastUsed) AS last_used FROM channels ORDER BY lastUsed DESC;

示例2:清理长期未使用的频道

DELETE FROM channels WHERE lastUsed < UNIX_TIMESTAMP() - 2592000;

❓ 常见问题

Q1: 频道密码忘记怎么办?
直接查询 password 字段:SELECT name, password FROM channels WHERE name = '你的频道名';
Q2: 频道没有玩家后会自动删除吗?
不会自动删除。频道记录会一直保留直到 lastUsed 超过阈值后手动清理。空频道不影响性能。