This is the user guide for TTCom, the TeamTalk Commander, also informally referred to as the TeamTalk Console or the TTCom text client. This client is mostly for managerial (not necessarily administrative) functions and is not an audio or video client. TTCom may be of use to those meeting any of these criteria:
This document describes how to install, launch, and use TTCom and its command set. For information on recent updates, or to see a history of TTCom's evolution, see the final "Release History section.
This program is Copyright (C) 2011-2020 by Doug Lee and falls under the GNU General Public License as found in
iniparse, included in its entirety, comes with its own license (also included).
TTCom is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program as
LICENSE.txt. If not, see
TTCom should run on any operating system where Python 3.7 or later can be found.
Python (though not necessarily a new enough version) comes by default on at least Linux and MacOS. It can also be installed on Windows, though a stand-alone
ttcom.exe application is provided for Windows users to
avoid the need to install Python.
This author is aware of users having successfully used TTCom in the following environments, run from source unless otherwise indicated:
ttcom.exeor your system already includes an appropriate Python version, this step is not necessary.
ttcom.confand edit to taste. This is where servers and per-server behaviors are defined. The
autoLoginparameter determines which servers connect automatically on TTCom startup.
If you don't do this, you will be called "TTCom User" everywhere you go. Of course, change "My Name" above to what you want as a nickname.
silent=1in the above section. See
ttcom_default.conffor further ideas.
ttcom.exe. If running from source (on Windows or anywhere else), run TTCom by running
ttcom.pythrough Python 3.7:
Warning: Just typing "
python ttcom.py" may try to run TTCom through Python 2, which will not work. If you get errors, make sure you are running Python 3.7 by typing
python -Vto check the version number.
The final step above will launch TTCom and connect to all servers with an
autoLogin value above 0.
As an alternative,
you can specify a server or servers on the command line, by their
ttcom.conf, to connect to just those servers:
python3 ttcom.py simon
To start TTCom without connecting to anything, use
-n in place of a server name.
Once TTCom is running and you see a "TTCom>" prompt,
?" or "
help" at the TTCom command prompt to learn what is
possible. You can add a command name for help on that command; e.g.,
?whoIs." Case is not important in command names.
If you experience unexpected problems with your TTCom configuration, such as strange errors or updates that seem not to take effect, try typing "
lint" as a command in TTCom. This will scan your configuration file
and report anything that looks odd to TTCom. Each issue found will consist of the
ttcom.conf line number followed by a description of the anomaly.
The number of lines in the file will also be reported; this is primarily aimed at helping detect line ending problems caused by porting configuration files between operating systems.
lint command is not guaranteed to catch all possible problems but will catch the following:
For the curious, the name "
lint" is chosen because Lint was a C program checker that reported errors and warnings about C program syntax many years ago, and the term is still in common use in programming circles
for anything that helps verify the correctness of code or file syntax.
The following issues are known and may be fixed in a future version of TTCom:
This is the revision history of TTCom, most recent revision first:
urlcommand for generating a TT URL for people to click in order to join the current server. The URL approach will work in many cases but will fail for some due to problems with characters in passwords and possibly other fields. See also the
ttcommand for creating a
.ttfile that will launch TeamTalk into a particular server. Both commands also support automatic joining of a channel on connection if desired.
WhoIscommand and to status change events that print asynchronously.
README.txtfile, these release notes, and various other notes are combined and transformed into a more comprehensive user guide, which itself becomes the main website page for TTCom.
refreshcommand when the server has been deleted from the TTCom configuration file.
logincommand to log into a disconnected server that uses encryption. Startup-time login already worked, but manual login without an existing connection did not.
teamtalk" and is reported on connect if different.
SAYPREFIX, though, rather than
TTCOM_SAYPREFIX. This feature was accidentally lost during the conversion to Python 3.
implibrary instead of the newer
importlibalternative. This change will only be noticed by users who run TTCom from source.
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
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:
ttcommand can make a proper .tt file for an encrypted server.
ttcom_default.confis removed for the following reasons:
ttcom_default.confas an example server entry, however.
makes TTCom join the channel with chanid 4 on login. Use
channel listto find channel ids. This method has the advantage of working even if a channel or one of its parent shannels is renamed. Alternatively,
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
channel=/My Space/the Library/
1and the path of just one slash character. If the channel requires a password, include another configuration line to specify it:
channel listcommand) now sort case insensitively by channel path, much like the TeamTalk channel trees.
CKickcommand for kicking a user from current or specified channel, syntax similar to that of
refreshcommand deletes servers from the running list when they have been removed from the config file.
shortSumresults end with a total server count then broken down by connection state.
ban listnow 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.
addressescommand is now just
whoIsreports IPV6 addresses correctly as does the
TTCOM_SAYPREFIXworks 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:
Of course, a TCP port may still be specified for a server in the configuration file.
export TTCOM_SAYPREFIX="[[rate 450]]"
UMsgcan 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 item.
UMsgcommand for sending user messages has a new
-ioption 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:
UMsgcommand 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.
ttcom.conf) or without defining servers in it now print more sensible error messages.
refreshcommand if no server definitions can be found.
vlistcommand now formats and sorts its output more intuitively.
WhoIscommand 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.
WhoIsincludes 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."
refreshcommand if a server's
autoLoginvalue changed from
1without other changes for that server.
Note: The syntax of the
cmsg command is changed in this update.
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.
voiceuserslist changes as channel participants are voiced and unvoiced by an admin.
whoIscould include a line beginning with a comma.
VList. This is for speech users, for whom the long ids are distracting and time-consuming to read. Full ids are still printed for the
WhoIscommand. This feature only applies when both server and client versions are 5.3 or later, which means when Facebook ids are actually Facebook logins.
channelcommand. 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.
cmsg, allow channel matching by specific TeamTalk parameter. One use of this is to message a channel by its id:
cmsg chanid=5 Hello
account addcommand to be set to 0 when the user type was given as a number (
2). The following command will list any accounts on a server affected by this bug:
and the following command will set rights for account
acc li userrights=0
Dougto the default values:
acc mod Doug userrights=259591
-pargument is specified.
account deleteusage help text.
-eprints all fields except passwords (use
-pto add passwords), even when blank. This is useful for determining what fields are allowed for an account.
-e), fields are sorted by name except for
Note, which is always last.
ttcom_defaults.confbetter documents the format and capabilities of TTCom
!commands, the name of the TTCom root object is now
ttcom, for consistency with other projects.
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:
?followed by the command name. Each of these commands now has subcommands, for which help is also available.
account addnow does the following sanity checks:
motdcommand for displaying the current server's message of the day.
versioncommand is now
versionwithout arguments gives the currently selected server's TeamTalk version, and with arguments gives a client's version and client name.
alland negation via an exclamation mark (
!) if multiple selections are allowed. Type
?selectionfor complete help on handling selection lists.
-poption added to the
vlistcommand for filtering by packet protocol or voice capability.
adminfor admin users and
userfor other users.
subscribecommands to work on TeamTalk 5 servers. (The no-audio restriction remains, however, as there is still no support for audio in TTCom.)
summarycommand no longer combines multiple instances of the same user in a channel into a single entry.
nickcommand is now
nickname, which lets
nickcontinue working while also letting
joincommand. Channel matching now works thus:
/always refers to the root channel.
/must match exactly except for letter casing.
/is matched against all full channel names (path included).
Servercommand should properly honor any quoting on an included command.
autoLogin=1, the TTCom user may restart the auto-login behavior by logging in again manually.
ttcommand 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.
vlistcommand that summarizes users on the current server sorted by increasing version number and then by client name.
saycommand on MacOS may work across more non-ASCII character situations.
saycommands are created more securely.
WhoIscommand with no arguments (i.e., a request for information on this current TTCom user login).
speakEventsoption 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
1to turn the feature off. The state of this option is saved across TTCom restarts.
This revision fixes more issues with TeamTalk 5 servers and adds a few enhancements:
versioncommand reports the running TTCom version and other information.
/) works as expected.
ttfile should generate TT files compatible with the TeamTalk server version for which the file is being generated.
accountcommand 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
2normally 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
1and the user rights for the new account will duplicate those assigned to the source account indicated.
accountscenarios; for example,
acc ""reports the information for the anonymous account instead of displaying a list of all accounts.
ttcom.confentry 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.)
statsAdmincommand is now changed simply to
stats, and the old
statscommand is gone. Reasons for this include
/commands sent to a channel..
/statsvisibly into the root channel even if the sending console was not there, which could startle and confuse users.
This release primarily fixes a number of issues TTCom initially had with TeamTalk 5 servers, caused by changes in the text TeamTalk client/server protocol:
WhoIsworks 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:
Other changes in this release:
saycommand usable in triggers, when used on MacOS, now uses the
afplaycommand and a temporary file instead of piping directly through
sayin 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
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 order: