// 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