63 lines
2.0 KiB
Go

// Package chat provides chat channel management for the EverQuest II server emulator.
//
// The chat system provides comprehensive channel-based communication with membership,
// access control, and message routing capabilities. It supports both persistent world
// channels (loaded from database) and temporary custom channels (created by players).
//
// Basic Usage:
//
// db, _ := database.NewSQLite("chat.db")
//
// // Create new channel
// channel := chat.New(db)
// channel.ID = 1001
// channel.Name = "Auction"
// channel.ChannelType = chat.ChannelTypeWorld
// channel.Save()
//
// // Load existing channel
// loaded, _ := chat.Load(db, 1001)
// loaded.Delete()
//
// // Load by name
// auction, _ := chat.LoadByName(db, "Auction")
//
// Master List:
//
// masterList := chat.NewMasterList()
// masterList.LoadAllChannels(db)
// masterList.AddChannel(channel)
//
// // Find channels
// found := masterList.GetChannel(1001)
// byName := masterList.GetChannelByName("Auction")
// worldChannels := masterList.GetWorldChannels()
// activeChannels := masterList.GetActiveChannels()
//
// Channel Management:
//
// // Channel membership
// err := channel.JoinChannel(characterID)
// inChannel := channel.IsInChannel(characterID)
// members := channel.GetMembers()
// err = channel.LeaveChannel(characterID)
//
// // Access control
// channel.SetLevelRestriction(10)
// channel.SetRacesAllowed(raceFlags)
// channel.SetPassword("secret")
// canJoin := channel.CanJoinChannelByLevel(playerLevel)
//
// Channel Types:
//
// // World channels - persistent, loaded from database
// channel.ChannelType = chat.ChannelTypeWorld
//
// // Custom channels - temporary, created by players
// channel.ChannelType = chat.ChannelTypeCustom
//
// The package includes comprehensive access control with level, race, and class
// restrictions using bitmask filtering, optional password protection, and
// integration interfaces for client communication, player management, and
// multilingual chat processing.
package chat