$chan (window)

From Scriptwiki
Jump to: navigation, search

Using the $chan identifier you can get information about the channel(s) you're using.

$chan(N/#chan)

You can use a channel or a number for the first parameter. When you specify a channel, mIRC will return information about that particular channel, otherwise it returns information about the Nth channel. $chan returns the number of channels if N is 0 (zero).

When used without any parameters, $chan returns the channel where the current event (e.g. an on TEXT or on JOIN event) occured.

Note that if you get kicked from a channel and have the option 'leave channels open' enabled in the mIRC option dialog, $chan() will still contain that channel. If you want to get info about channels, you are really in, you'd have to use $comchan($me,0).

The following properties are available for $chan:

Property Description
topic the channel topic
mode the channel modes
key the channel key (if channel mode +k is set)
limit the channel limit (if channel mode +l is set)
ial $true when mIRC knows the addresses of all users on that channel, $inwho if mIRC is updating its address list, $false otherwise
logfile the logfile's path and filename for the channel
stamp $true when timestamps are enabled, $false if not
ibl $true if mIRC knows the banlist for this channel, $inmode if it's currently updating its banlist, $false if it doesn't
banlist same as ibl [undocumented]
status your status on that channel (e.g. joined, 'joining' or kicked)
inwho $true when mIRC is currently processing a /who request for that channel
wid the window ID for this channel
hwnd the window handle for this channel, can be used in DLLs
idle shos how long it has been from the last message in the channel (in seconds)

Examples

$chan(#help.script)        ;returns #help.script if you're on that channel, $null otherwise
$chan(#help.script).topic  ;returns the topic, which is currently set for #help.script

Note

When using $chan(N) to loop through all channels, it is usually advisable to use $comchan($me,n) instead.

The reason for this is if you get disconnected and have the setting 'Keep channels open' enabled, the channel still remains in $chan(n) list, when you reconnect to the server, for a short while before you've actually joined $chan(n).status would be set to 'Joining'.

If for some reason you can't connect, ie: you're banned, user limit reached, invite only, $chan(n).status would now be set to kicked.

For this reason, $chan(n) shouldn't be used to find what channels you're on unless you do extra checks. Example:

;clear %chans varible and set %i to total amount of channel windows open for this connection.
var %chans, %i = $chan(0)
;keep looping while we have aleast one more channel to check.
while (%i) {
  ;If we have joined that channel, add it to the list of chans.
  if ($chan(%i).status == joined) var %chans = $addtok(%chans,$chan(%i),32)
  ;decrease the value of %i
  dec %i
}
;return all the channels we've found we are in.
return %chans

See Also

  • $comchan Find common channels between you and another user. (And yourself)