channels_bans - 频道封禁列表
基于 AzerothCore Characters 数据库 · 自定义频道中被封禁玩家记录表
📋 表概述
channels_bans 表记录在自定义聊天频道中被频道所有者封禁的玩家。管理员可以对违规玩家进行封禁操作,封禁后该玩家将无法再加入或在此频道中发言。
- 频道封禁管理
- 玩家禁言控制
- 时间限制封禁
- 频道安全维护
联合主键 (channelId, playerGUID),确保同一玩家在同一频道中不会重复被封禁。banTime 为封禁截止时间戳。
📊 表结构
| 字段名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| channelId | int UNSIGNED | NOT NULL | 频道ID(联合主键1) |
| playerGUID | int UNSIGNED | NOT NULL | 被封禁玩家GUID(联合主键2) |
| banTime | int UNSIGNED | NOT NULL | 封禁截止时间(Unix时间戳) |
🔍 重要字段详解
🚫 playerGUID - 被封禁玩家
详细说明:被频道所有者/管理员封禁的玩家角色GUID。
- 关联 characters.guid
- 一旦被封禁,该玩家无法重新加入频道
- 删除记录即可解除封禁
⏰ banTime - 封禁截止时间
详细说明:Unix时间戳,表示封禁何时自动解除。
- 当前时间 < banTime → 处于封禁状态
- 当前时间 >= banTime → 封禁自动解除(服务器检查并清理记录)
- banTime可以设为很大的值实现"永久封禁"
💡 解除封禁:
DELETE FROM channels_bans WHERE channelId = X AND playerGUID = Y;💡 SQL示例
示例1:查询某频道的所有封禁
SELECT
cb.playerGUID, c.name AS player_name,
ch.name AS channel_name,
FROM_UNIXTIME(cb.banTime) AS ban_until
FROM channels_bans cb
JOIN channels ch ON ch.channelId = cb.channelId
JOIN characters c ON c.guid = cb.playerGUID
WHERE cb.channelId = 3;示例2:清理已过期的封禁
DELETE FROM channels_bans
WHERE banTime < UNIX_TIMESTAMP();❓ 常见问题
Q1: 玩家被频道封禁后还能在其它频道发言吗?
能。channels_bans 只影响被指定的频道,玩家可以正常使用其他频道。
Q2: 封禁会自动解除吗?
服务器会定期检查 banTime,到达截止时间后自动清理该记录,玩家即可重新加入频道。