The TeamTalk Commander (TTCom)
This is the TeamTalk Commander (TTCom), a command-line interface
client for TeamTalk servers. This client is mostly for managerial (not necessarily administrative)
functions and is not an audio or video client.
I expect TTCom may be of use to those meeting any of these criteria:
- TeamTalk server managers and administrators who want quick ways of
accomplishing some tasks from a command line, such as account
creation/modification, moving users among channels all at once, and
managing ban lists.
- Server owners who want to see TeamTalk events in real time and/or
in a summarized form without having to paw through a server log file.
(TeamTalk logs more events in server logs than it sends to clients,
including TTCom; but many events are sent both places.)
- Technically-minded users who just want a quick glimpse of who is where among all
their TeamTalk servers now and then without having to log into one
server at a time and scan through a treeView for each.
To install, download and unpack the Zip file and follow the
instructions in the included README file.
This page will only provide a download link to the latest released version of TTCom. Older versions may
sometimes be reachable by replacing version numbers in the download URL from this page. This page does include
the full history of TTCom since its initial public release, most recent updates first.
Here are the changes in TTCom, most recent first.
In JAWS, use the h or 3 keys to move through
changes by release date, or Tab to jump straight to the
Similar commands should work for other screen readers.
Revision 1021, released August 24, 2019 (version 3.0.3)
- Fixed a few possible error esceptions caused by deleting a server while TTCom considers it "current" for event output.
- On MacOS, event speech output (when enabled) is sent directly to the OS rather than first being made into a wav file to then play. This indirection was necessary in much older versions of MacOS to avoid missed speech in
Revision 1010, released August 12, 2019 (version 3.0.2)
- Fixed an exception that occurred on a server disconnect.
- Fixed ability to run TTCom with no Options section in ttcom.conf.
- Fixed a ResourceWarning that could occur on server connect on Windows but apparently not on MacOS. (It may also have been fixed between Python 3.7.3 and 3.7.4.)
- Removed some obsolete code for TeamTalk 4 servers.
Revision 1005, released August 8, 2019 (version 3.0.1)
- Resurrected the feature that allows speech rate specification on MacOS for event output. The environment variable to use is now SAYPREFIX, though, rather than TTCOM_SAYPREFIX.
This feature was accidentally lost during the conversion to Python 3.
- Eliminated an import warning caused by using the old
imp library instead of the newer
importlib alternative. This change will only be noticed by users who run TTCom from source.
- Idle times on status update events no longer print when they amount to 00:00:00.
This primarily affects the output produced by clients that log in with a pre-existing Away status.
Revision 1000, released August 5, 2019 (version 3.0.0)
This is the first public TTCom release targeted at, and requiring, Python 3.7 rather than Python 2.7. The Windows stand-alone .exe will work as before, but running TTCom from source, on any operating system, will now require a
Python 3.7 installation that launches with the "python3" (not just "python") command. This approach avoids problems on systems (such as MacOS) where the "python" command must for now continue to
launch Python 2.x in order to avoid many other problems.
This release is also the first to support professional encrypted (SSL) TeamTalk servers. For these, add the line encrypted=true to the server's configuration section in ttcom.conf.
Note that encryption, or SSL support, is not related to the new TeamTalk 5.4 web login system used by the public TeamTalk servers. The web login system is not at this time supported by TTCom.
Important: Install this TTCom into a fresh folder, not over the top of TTCom 2.x, to avoid stray and possibly problematic residual files from the older version.
In particular, .pyc files produced by an older TTCom could confuse the new version, as Python 3 handles .pyc files differently.
Other enhancements in this release:
- The tt command can make a proper .tt file for an encrypted server.
- Attempting to replace an existing .tt file prompts for confirmation of permission rather than issueing a NameError.
- Several fixes to the WhoIs command:
- More accurate "can share" rather than "sharing" indicators for users who are granted special permission to share video, media, desktop, etc. in specific channels.
*(Media file sharing permission was previously omitted accidentally and is now included as well.)
- Users who are voiced explicitly in a channel show as "Can speak."
- Users whose current userid happens to be a substring match of a userid that is granted one of the above channel-specific permissions is no longer reported as having that permission erroneously.
Example: If userid 2045 has voice permission in channel /Library/, userid 5 will no longer show as "Can speak" in that channel just because "5" is part of "2045."
- The list of public servers previously shown in ttcom_default.conf is removed for the following reasons:
One entry remains in ttcom_default.conf as an example server entry, however.
- The list of public servers is dynamic, so a list in a TTCom file will continuously go out of date.
- Public servers have begun requiring the web login system that debuted in TeamTalk 5.4; and TTCom does not currently support this login system.
- There is little good reason to use TTCom on a public TeamTalk server in the TTCom author's considered opinion.
Revision 969, released May 28, 2019 (version 2.1.0)
- Python 2.7 is the oldest Python version supported.
- TTCom may now auto-join a channel when logging into a server. To arrange for this, indicate the channel in the server's configuration file section. There are two supported syntaxes, shown here by example:
makes TTCom join the channel with chanid 4 on login. Use channel list to find channel ids. This method has the advantage of working even if a channel or one of its parent shannels is renamed. Alternatively,
channel=/My Space/the Library/
joins the channel with the given exact path. Letter casing in a channel path must match exactly, and the path must both begin and end with a slash. These rules also apply to other TeamTalk clients.
Note that the root channel always has the id 1 and the path of just one slash character.
If the channel requires a password, include another configuration line to specify it:
- Channel lists (see the channel list command) now sort case insensitively by channel path, much like the TeamTalk channel trees.
- There is a CKick command for kicking a user from current or specified channel, syntax similar to that of CMsg.
- The refresh command deletes servers from the running list when they have been removed from the config file.
- allSum and shortSum results end with a total server count then broken down by connection state.
- ban list now uses a three-row format and includes ban type as text (IP address or Username). The other two lines are nickname and channel at ban time.
- The addresses command is now just address.
- whoIs reports IPV6 addresses correctly as does the address command.
- Support for TeamTalk 4 UDP addresses and TCP and UDP ports is removed. This affects code for events and for the whoIs and address commands.
- The environment variable TTCOM_SAYPREFIX works on MacOS as a place to put Mac-specific voice parameters to apply to all event and trigger announcements.
This feature is included to help those who wish to hear events on a Mac at a personally chosen speech rate, pitch, etc.
This feature is experimental and may change or vanish without notice, especially since it is Mac-specific and relies on MacOS features that may themselves disappear.
Example usage: In Bash or a compatible shell or one of its initialization / startup files, add this line to increase the TTCom voice speed:
export TTCOM_SAYPREFIX="[[rate 450]]"
Of course, a TCP port may still be specified for a server in the configuration file.
- TTCom is beginning to try to honor user locale settings.
Revision 930, released November 23, 2018 (version 2.0.5)
- Incoming user messages from invisible userids work without exception traces. This can occur on a server where TTCom is not allowed to see into channels but yet receives a message.
- UMsg can send to a userid directly via a number sign; e.g., umsg #232 I got that!. This was documented but did not work as expected. This allows replying to messages such as described in the previous
- The UMsg command for sending user messages has a new -i option for sending a more private user message to another compatible text client. These messages have the following properties as compared to
normal TeamTalk user messages:
See the help text for the UMsg command for more information on this option.
Note that nothing in TeamTalk should be considered "private" (partly because nothing is encrypted) and that neither the TTCom author nor the TeamTalk author can guarantee privacy of these new messages or that they will be
handled as expected by different client and server versions.
- They are not recorded in server log files according to tests run on TeamTalk 5.3.3 servers at least.
(TeamTalk server logs normally record all channel and user text messages and broadcasts.)
- They do not appear to be interceptable by TeamTalk administrators.
- They are ignored by regular TeamTalk clients, which means they are only useful when sent among compatible text clients.
- They are an irregular use of the TeamTalk TCP protocol. They should therefore be considered experimental in nature, and their behavior subject to change without notice, such as in the event of a new TeamTalk server version
handling them differently.
Revision 915, released October 3, 2018 (version 2.0.4)
- On startup, the "current server" (the one to which commands apply by default) is now the first server defined in the configuration file, rather than a seemingly random server.
- Attempts to use TTCom without creating a configuration file (ttcom.conf) or without defining servers in it now print more sensible error messages.
- A warning is printed on startup and after a refresh command if no server definitions can be found.
- The vlist command now formats and sorts its output more intuitively.
- Status change events print the length of time the previous status was in effect; for example, when a user switches from Away to Online after being away for 10 minutes, "00:10:00" is included with the event.
In addition, the WhoIs command includes the length of time the current user's status has been in effect.
Note though that these durations reset when TTCom itself logs in and thus will not always reflect actual status lifetimes.
- A stray comma is removed from WhoIs output.
- WhoIs includes the domain address for an IP address that is given as the IPV6 version of an IPV4 address; e.g., "::ffff:192.168.15.124."
- Fixed the naming of subscription bits, so that user subscription changes report correctly.
- Fixed the handling of channel name changes so that TTCom uses the new name rather than the old one thereafter.
- On a server that hides channel participants from this user, the status update events sent for admins no longer attempt to print anything. The information previously printed tended to be both unhelpful and confusing.
- Fixed a long-standing bug that caused an exception to print on a refresh command if a server's
autoLogin value changed from
1 without other changes for that server.
- A change in login parameters without changes in host or port no longer cause a disconnect and reconnect, but just a logout and login.
- Runtime errors encountered during the processing of a server event now include Python tracebacks to help with debugging.
Revision 873, released June 12, 2018 (version 2.0.3)
Note: The syntax of the cmsg command is changed in this update.
- The channel-message command, cmsg, operates by default on the currently joined channel.
The following sequence will thus message the root channel:
A specific channel may be specified with an at sign; e.g., cmsg @blah Hello to blah channel members.
If TTCom is not in a channel, a channel must of course be specified in this way.
- The abbreviation of Facebook ids applied in the previous update (see next section) also apply to event output now, such as on logins and status updates.
- Some updates, channel updates in particular, report changes more reliably. This includes reporting of voiceusers list changes as channel participants are voiced and unvoiced by an admin.
- There should be fewer UnicodeDecodeError issues, such as when listing and filtering lists of channels (the channel list command).
- Fixed rare instances where output such as from whoIs could include a line beginning with a comma.
Revision 858, released May 27, 2018 (version 2.0.2)
- Facebook account ids just print as "facebook" instead of as the full long id for the following commands:
This is for speech users, for whom the long ids are distracting and time-consuming to read. Full ids are still printed for the
This feature only applies when both server and client versions are 5.3 or later, which means when Facebook ids are actually Facebook logins.
- During login to a server with file uploads in channels, events are no longer printed for each file.
- TTCom now requires Python 2.7 and will not work with older Python versions.
Revision 852, released February 11, 2018 (version 2.0.1)
- New channel command. So far, the only implemented subcommand is list, which can list channels with varying detail
and can filter the set of channels listed by many means.
Warning though: There are still problems with this command on servers with non-ASCII characters in channel names.
- Commands that operate on channels, such as cmsg, allow channel matching by specific TeamTalk parameter. One use of this is to
message a channel by its id:
cmsg chanid=5 Hello
- Various updates to the account command:
- Fixed a bug that caused user rights on an account add command to be set to 0 when the user type was given as a number
(1 or 2).
The following command will list any accounts on a server affected by this bug:
acc li userrights=0
and the following command will set rights for account Doug to the default values:
acc mod Doug userrights=259591
- Passwords do not print unless a -p argument is specified.
- Added a Rights column to the Account List table. Currently rights are shown as an integer.
- Corrections to example account delete usage help text.
- When not blank, the Notes for an account are shown in an Accounts table below the line for the other fields for the account.
- -e prints all fields except passwords (use -p to add passwords), even when blank. This is useful for determining
what fields are allowed for an account.
- For long account listings (-l and -e), fields are sorted by name except for Note, which is always last.
- Fixed a long-standing bug that broke some commands when issued on a "server ..." or ">..." line that made the command address a specific server.
The issue was the introduction of extra spaces in some cases, such as (or at least) around equal signs.
- The default name for this client when connecting to servers is now "TTCom User."
- ttcom_defaults.conf better documents the format and capabilities of TTCom .conf files.
- For users of the python or ! commands, the name of the TTCom root object is now app rather than
ttcom, for consistency with other projects.
Revision 819, released August 8, 2017 (version 2.0)
Please read this entire section of release notes before upgrading.
This revision includes many fixes, a few new commands and features, and some changes in syntax for existing commands.
This revision also marks the official end of TeamTalk 4 support. This does not mean that TTCom will instantly stop working with TeamTalk 4 servers; it
simply means that support for those servers will begin to fail as reasons arise to remove or modify the code that supports them.
New and changed commands and features:
- New Windows stand-alone executable, so you need not install Python.
- Changed the syntaxes of the following commands to add power, flexibility, and perhaps comprehensibility:
Read the help for each of these by typing help or ? followed by the command name. Each of these commands now has
subcommands, for which help is also available.
- account add now does the following sanity checks:
Warnings allow the user to abort the account creation. These checks are meant to help avoid some very common administrative accidents.
- Aborts on a duplicate existing, case significant.
- Warns specifically if an account differing only in case exists.
- Warns if an account exists differing only by case and/or spacing and/or punctuation.
- New motd command for displaying the current server's message of the day.
- The version command is now about.
- version without arguments gives the currently selected server's TeamTalk version, and with arguments gives a client's version and client name.
- Selection lists now allow all and negation via an exclamation mark (!) if multiple selections are allowed.
Type help selection or ?selection for complete help on handling selection lists.
- -p option added to the vlist command for filtering by packet protocol or voice capability.
- Login and logout events that print in the TTCom window include admin for admin users and user for other users.
- A missing [server defaults] section no longer causes a launch-time crash.
- Deleting a file from a channel with a regular TeamTalk client no longer causes an event dispatch failure error message to print in the
TTCom window. This functionality may not work on TeamTalk 4 servers.
- Fixed op, intercept, and subscribe commands to work on TeamTalk 5 servers. (The no-audio restriction
remains, however, as there is still no support for audio in TTCom.)
- The summary command no longer combines multiple instances of the same user in a channel into a single entry.
- Various output formatting improvements, including better handling of unicode.
- Time reporting should work correctly for local time zones under Cygwin where it may not have before.
- The nick command is now nickname, which lets nick continue working while also letting nickname work.
- Fixed various problems with matching channel names in the join command.
Channel matching now works thus:
Note that this command will no longer create temporary channels as it once did under TeamTalk 4.
- Channelname and/or password can contain spaces if quoted.
- Channel / always refers to the root channel.
- A channel starting and ending with / must match exactly except for letter casing.
- A channel containing a / is matched against all full channel names (path included).
- Otherwise, the channel is matched against only the actual channel names, without paths.
- The Server command should properly honor any quoting on an included command.
- The rights assigned to an admin account are now consistent with TeamTalk defaults (as of TeamTalk 22.214.171.12481). This matters when an
admin account is later reverted to a normal account.
- If TTCom is kicked off of a server for which autoLogin=1, the TTCom user may
restart the auto-login behavior by logging in again manually.
- Some error messages are improved for clarity to end users who are not also Python coders.
Revision 692, released August 13, 2016 (version 1.4)
- The tt command allows a target TeamTalk client version number, such as 5.1, to be specified
before the name of the .tt file to create. This makes it possible to generate a tt file for a client whose
version number differs from that of the current TeamTalk server.
- There is a new vlist command that summarizes users on the current server sorted by increasing
version number and then by client name.
- Quote characters should work in messages sent to users or channels from TTCom.
- The say command on MacOS may work across more non-ASCII character situations.
- Temporary files for say commands are created more securely.
- When logging into a server, TTCom will print a warning for each or both of these conditions if true:
The same information prints for a
- The server disallows multiple simultaneous logins from the same account, and/or
- The server does not allow this user to see who is in any channel until the user joins the channel.
WhoIs command with no arguments (i.e., a request for
information on this current TTCom user login).
- TTCom itself now uses its actual version number as its version value for display by other clients, and the
name "TTCom" for its clientname where supported.
- The speakEvents option is supported: Setting it makes TTCom try to speak all events that print
in the TTCom window through the active screen reader.
This currently requires SayTools to be installed on Windows but works natively on MacOS.
To turn this feature on, type opt speakEvents 1. Use 0 instead of 1 to
turn the feature off. The state of this option is saved across TTCom restarts.
Revision 652, released November 21, 2015 (version 1.2)
This revision fixes more issues with TeamTalk 5 servers and adds a few enhancements:
- A new version command reports the running TTCom version and other information.
- Joining the root channel (/) works as expected.
- The tt file should generate TT files compatible with the
TeamTalk server version for which the file is being generated.
- TTCom will keep up with channel renaming on a TeamTalk 5 server without requiring a TTCom restart.
- Deleting bans with ban -d works.
- The account command works on TeamTalk 5 and supports copying user rights from a chosen source
account when creating a new one. To use this feature, specify an account name (or something that matches an
account name) in place of the 1 or 2 normally given as a user type. To use the anonymous
account as the source account for user rights, specify "" in place of the user type. The user type
will become 1 and the user rights for the new account will duplicate those assigned to the source
- The anonymous account is more properly supported in other account scenarios; for example,
acc "" reports the information for the anonymous account instead of displaying a list of all
- It is no longer necessary to add udpport=0 to every ttcom.conf entry for TeamTalk 5
servers. TTCom no longer transmits a UDP handshake at all. (This was implemented to avoid short Windows XP
client freezes on TeamTalk 4 servers, but Windows XP has long been deprecated by Microsoft.)
- The statsAdmin command is now changed simply to stats, and the old stats
command is gone. Reasons for this include
- The old command never worked on TeamTalk 5 servers because TeamTalk 5 does not support /
commands sent to a channel..
- Attempting to use the old command on a TeamTalk 5 server would run the risk of sending the string
/stats visibly into the root channel even if the sending console was not there, which could startle
and confuse users.
- The old command stopped working for non-admin users on TeamTalk 4 servers at some point.
Revision 607, released December 20, 2014 (version 1.1)
This release primarily fixes a number of issues TTCom initially had with
TeamTalk 5 servers, caused by changes in the text TeamTalk
- Events no longer generate errors.
- Channel membership is reported correctly in summaries.
WhoIs works when TTCom is not logged in as an admin.
cmsg, and several other commands work as well.
The following commands still do not work completely on TeamTalk 5 servers:
- List may omit fields, and add/modify will not work.
- Bits are wrong.
- Not tested but not updated command formats.
- Not able to write updated file format.
Other changes in this release:
- The default version string is now "TTCom" instead of "126.96.36.1999."
say command usable in triggers, when used on MacOS,
now uses the
afplay command and a temporary file instead of
piping directly through
say in order to avoid the speech
breakup that occurs often (at least on SnowLeopard) when the `say'
command is used. This change causes a Python warning against use of
tempnam() on the first
say command call.
Revision 580, released September 7, 2014 (version 1.0)
This is the initial public release of TTCom and the start of its
falling under the GNU Public License (GPL).
To learn of TTCom's use through the date of publication, see
"All About the TeamTalk Commander."
To learn its history prior to publication in more detail, read
"TeamTalk Commander (TTCom) Pre-Publication History."
I am publishing TTCom for the following reasons, approximately in this
- A predicted reduced need for TeamTalk security assistance on the
release of TeamTalk 5, which by all appearances will require special
steps to allow accountless logins whereas TeamTalk 4 allows this by default.
- A personal tendency to prefer sharing over hiding of my code.
- A dislike for favoritism and the fact that my having given two people
code while withholding it elsewhere would naturally give
that appearance, despite the reasons for my having done this.
- Possible appeasement of some who wish to see the code for purposes
- Removal from me of the burdens of both responsibility and
technical resources for managing the connections and data.
- A means to allow TeamTalk users, server owners, and server admins to work
out among themselves, without my constant input, the questions of
when, where, and whether to run non-standard and/or
constantly-connected TeamTalk clients.
Download: Version Current Zip of Python source and Windows stand-alone executable