dwcom is a plugin for the TeamTalk Commander that enables the distribution of events through sounds, speech, notifications, and logs.
Before installing the plugin, you must install its dependencies.
The instructions below assume a standard pip installation. If you are using a virtual environment, Anaconda, or another Python environment, adapt the commands accordingly.
pip install accessible_output3 cyal soundfile ntfpy pyprowl notify_pyOn macOS, pyobjc and appkit are required for NSSpeech support. You may also need Homebrew installed for certain dependencies.
- Install Homebrew (see Homebrew homepage for instructions).
- Install
pyobjcandappkitfor NSSpeech support:
pip install pyobjc
pip install appkitImportant: Install them in the exact order shown above. Do not attempt to install both at once.
If pyobjc or appkit fails to install, try installing additional build dependencies with Homebrew:
brew install cmake
brew install cairoThen retry the pyobjc and appkit installation steps.
If it still fails, there is no known solution at this time.
In this case, use VoiceOver in the ttcom configuration instead of nsspeech.
If installation succeeds, locate the appkit folder in your Python site-packages (path varies depending on your environment) and rename it from:
appkit → AppKit
Without this change, importing appkit will fail.
On Linux, speech-dispatcher is required to enable speech output.
- Install
speech-dispatcher(package names vary by distribution):
- Debian/Ubuntu-based:
sudo apt install speech-dispatcher- Red Hat-based:
sudo yum install speech-dispatcher- Arch-based:
sudo pacman -S speech-dispatcher- Depending on your distribution, the package may be named differently:
speechdlib-speech-dispatcher
- If you want, you can also install python espeak backends.
python-espeakpython-espeak-ng
Before installing dwcom, navigate to your ttcom directory and create a plugins folder if it does not already exist.
mkdir plugins
cd pluginsYou can then install the plugin using one of the methods below.
From within the plugins folder:
git clone https://github.com/dragonwolfsp/dwcomInstallation complete.
- Visit the latest release page.
- Download the attached
dwcom.tarfile. - Extract it to:
<your_ttcom_directory>/plugins/dwcom
That’s it — you’re all set.
dwcom includes several configuration options, all of which can be applied to any or all server configurations in ttcom.
Note:
Changing configuration options requires refreshing thettcomconfiguration file using therefreshcommand.
This may causettcomto log out and back into multiple servers at once.
You can place any configuration option:
- Under a specific server’s section — to apply only to that server.
- Under the server defaults section — to apply to all servers.
Boolean options accept:
- Truthy:
true,1,y,yes - Falsy:
false,0,n,no
Keys are not case-sensitive.
For example, speechdModule is the same as speechdmodule.
By default:
- Speech is enabled for all servers.
- The speech method (
speechEngine) is set toauto. - Speech interruption is enabled.
| Option | Type | Description |
|---|---|---|
speech |
bool | Enables or disables speech. Default: true. |
speechEngine |
string | Speech engine to use. Options: auto, dolphin, espeak, jaws, nsspeech, nvda, pctalker, sapi, speechd, systemaccess, voiceover, windoweyes, zdsr. |
speechInterrupt |
bool | If true, new speech interrupts current speech. Default: true. |
speechdModule |
string | Output module for Speech Dispatcher. Ignored if Speech Dispatcher is not used. |
speechVoice |
string | Voice for the selected engine (if supported). |
speechRate |
number | Speech rate for the selected engine. |
speechVolume |
number | Output volume for the selected engine. |
speechPitch |
number | Pitch for the selected engine. |
noSpeak |
string | Prevents certain events from being spoken. |
noSpeak accepts a list of event names joined with +.
Example: disable speech for updateuser, updatechannel, and serverupdate events:
noSpeak = updateuser+updatechannel+serverupdate
Common event names:
updateuser— User status changesadduser— User joins channelremoveuser— User leaves channelloggedin— User logs inloggedout— User logs out
dwcom supports custom randomized speech messages for login and logout events.
-
Create the following text files in your
ttcom/text/directory:logins.txtlogouts.txt
-
Each file should contain one possible spoken message per line.
-
When a user logs in or out, dwcom will randomly select a line from the corresponding file to speak.
If the files are missing or empty, dwcom falls back to the default messages:
"logged in""logged out"
Example (logins.txt):
runeports in with a flash of golden light.
soars in from on high
Charges in, blade held high
Example (logouts.txt):
runeports away in a flash of golden light.
leaps into the sky, soaring away.
Draws a blade and charges off.
By default:
- Sounds are enabled.
- Sound pack:
default. - Playback type:
overlapping. - Volume:
100.
| Option | Type | Description |
|---|---|---|
sounds |
bool | Enables/disables sounds. Default: true. |
soundPack |
string | Name of the sound pack. Default: default. |
soundVolume |
number (0–100) | Playback volume. Default: 100. |
playbackType |
string | How sounds are played. Options: overlapping, interrupting, oneByOne. Default: overlapping. |
noSound |
string | Prevents certain events from playing sounds. Usage is the same as noSpeak |
By default:
- All notifications are disabled.
- When enabled, login/logout events and messages will trigger notifications.
| Option | Type | Description |
|---|---|---|
notifyLogInOut |
bool | Notify when users log in/out. Default: true. |
notifyMessage |
bool | Notify when a message is received. Default: true. |
Ntfy is a free, open-source, HTTP-based pub/sub push notification service.
| Option | Type | Description |
|---|---|---|
ntfy |
bool | Enable/disable Ntfy notifications. Default: false. |
ntfyTopic |
string | Ntfy topic to publish to. |
ntfyUrl |
string | URL of the Ntfy instance. |
Prowl is a push notification service for iOS.
| Option | Type | Description |
|---|---|---|
prowl |
bool | Enable/disable Prowl notifications. Default: false. |
prowlKey |
string | Prowl API key. |
dwcom can send notifications directly to the system it is running on.
| Option | Type | Description |
|---|---|---|
systemNotify |
bool | Enable/disable system notifications. |
By default:
- Logging is enabled.
- Max log size:
4 MBper file. - Max log files:
5. - Total log storage: ~
20 MBbefore rotating.
| Option | Type | Description |
|---|---|---|
log |
bool | Enable/disable logging. Default: true. |
maxLogSize |
number | Max size (in MB) before log rotation. Default: 4. |
maxLogFiles |
number | Max number of log files before overwriting oldest. Default: 5. |
- Windows COM Errors
On Windows systems,COMerrors may sometimes occur when attempting to use speech output.