📋 表概述

channels_rights 表配置了每个自定义聊天频道的详细权限和规则,包括发言延迟、加入/延迟消息、频道管理员列表等。此表是对 channels 表的权限补充,通过频道名称关联。

主键为 name(频道名称)。与 channels 表通过 name 字段关联。该表存储各频道的详细信息权限配置。

📊 表结构

字段名类型默认值说明
namevarchar(128)NOT NULL频道名称(主键)
flagsint UNSIGNEDNOT NULL频道权限标记(位掩码)
speakdelayint UNSIGNEDNOT NULL发言冷却时间(秒)
joinmessagevarchar(255)''加入频道时显示的消息
delaymessagevarchar(255)''发言延迟提示消息
moderatorstextNULL频道管理员列表(GUID列表)

🔍 重要字段详解

🏷️ flags - 权限标记

详细说明:INT UNSIGNED 按位标记,控制频道的各种权限。
  • 位0(值1) = 需要密码
  • 位1(值2) = 仅管理员可发言
  • 位2(值4) = 仅成员可发言
  • 多个权限可组合使用(位或运算)

⏱️ speakdelay - 发言延迟

详细说明:INT UNSIGNED,控制玩家在频道中发消息的冷却时间。
  • 单位:秒
  • speakdelay=0 → 无限制
  • speakdelay=5 → 每条消息间隔至少5秒
  • 防止刷屏和广告

👤 moderators - 管理员列表

详细说明:TEXT类型,存储频道管理员的角色GUID列表。
  • 格式通常为逗号或空格分隔的GUID列表
  • 管理员有封禁/解封/设置权限等管理功能
  • NULL表示无管理员(频道所有者即为管理员)

💡 SQL示例

示例1:查看某频道权限配置

SELECT name, flags, speakdelay, joinmessage, delaymessage, moderators FROM channels_rights WHERE name = 'Trade';

示例2:设置发言延迟为3秒

UPDATE channels_rights SET speakdelay = 3 WHERE name = 'Global';

❓ 常见问题

Q1: channels_rights 和 channels 表有什么区别?
channels 表存储频道基本信息(名称、阵营、密码等),channels_rights 表存储频道的详细权限规则(发言延迟、管理员列表、标记等)。两者通过 name 关联。
Q2: 如何设置频道仅管理员可发言?
UPDATE channels_rights SET flags = flags | 2 WHERE name = '频道名';,取消用 flags = flags & ~2