API JoinPermanentChannel

Seems to have the same effect as API_JoinChannelByName.

Joins the channel with the specified name. A player can be in a maximum of 10 chat channels. In opposite to API_JoinTemporaryChannel the channel will be re-joined after relogging.

type, name = JoinPermanentChannel(channelName [, password, frameID, hasVoice])

Parameters
(copy/paste from API_JoinChannelByName)

Arguments

 * channelName : String - The name of the channel to join
 * You can't use the "-" character in channelName (patch 1.9)
 * password : String (optional) - The channel password, nil if none.
 * frameID : Number (optional) - The chat frame ID number to add the channel to. Use Frame:GetID to retrieve it for chat frame objects.
 * hasVoice : Boolean (1/nil) - Enable voice chat for this channel.

Returns

 * type : Number - The type of channel. 0 for a undefined channel, 1 for the zone General channel, etc
 * name : String - The name of the channel (Ohklus: seems to be nil for most channels).

Example
(copy/paste from API_JoinChannelByName)

JoinPermanentChannel("Mammoth", "thesane", ChatFrame1:GetID, 1);